Bluetooth モジュールでRCサーボ・ESCを制御したい [第17回-ESP32 Core 3.x対応のアップデート]

2025-12-31 · Tomoki Ikegami

"旧プログラムはESP32 Coreのバージョンが2.0系だったので、3.0系対応にアップデート"


アップデート内容

 自作ラジコン操縦アプリ(Happy_RC_Driver)用のレシーバー側プログラムに関して、ESP32が Core 2.x系から3.x系にアップデートされていたため、旧バージョンのプログラムが使えなくなっていました。

 主にタイマー割り込みのコードの更新が必要だったため、アップデートを行いました。前よりもプログラムがシンプルになった感じがします(ちょっとうれしい)。プログラムのアップデートはGitHubのレポジトリに反映しておきました。

 アップデートしたプログラムは実機(下画像のESP32_DevKitc_V4搭載ラジコン)にも書き込み、動作することを確認しました👍

アップデート前(タイマー割り込み部分)

  timer = timerBegin(0, 80, true);              //80クロック1カウント
  timerAttachInterrupt(timer, &onTimer, true);  //onTimerという名前の関数で割り込み
  timerAlarmWrite(timer, 1000000 * 0.1, true);  //80クロック×1000000カウント=1秒、1*0.1=100[ms]
  timerAlarmEnable(timer);                      //タイマー有効化
  

アップデート後(タイマー割り込み部分)  

  timer = timerBegin(1000000);              //周波数を1MHzに指定(1µs毎にカウントアップする) ※ ESP32 Core 2.x系 → 3.x系に伴い変更した
  timerAttachInterrupt(timer, &onTimer);  //onTimerという名前の関数で割り込み
  timerAlarm(timer, 100000, true, 0);  // (1/周波数)*カウント数=(1/1000000)*100000 = 0.1 [s]ごとに割り込みを発生 ※ ESP32 Core 2.x系 → 3.x系に伴い変更した
 

動作確認の様子
☝ 動作確認の様子

参考文献

関連記事