ESP32ではOTA(Over The Air)という機能を使い
プログラムのアップデートをWi-Fi経由で行える機能が
あるそうなので試してみる
調べてみると結構面倒くさそうな感じだったが
簡素化した方法もあるようなのでそちらを参考にした
まず以下のURLからZIPをダウンロード
解凍後 0TA_Template_Sketchフォルダ内のOTA.hヘッダーファイルを
プロジェクトフォルダにコピーする
ソースは以下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
/* OTA_TEST ESP32-S3-DevKitC-1 WiNCHaN */ #define ESP32_RTOS #include "OTA.h" //初期設定 void setup() { //シリアル通信速度 Serial.begin(115200); //OTAスタート setupOTA("myName", "mySSID", "myPASSWORD"); } //メインループ void loop() { ArduinoOTA.handle(); #ifdef RGB_BUILTIN neopixelWrite(RGB_BUILTIN,255,0,0); #endif } |
実行前にmyNameにはお好きな認識名
mySSID,myPASSWORDにはWiFiのID・PASSを入力しておく
接続が成功し少し待つとArduino IDEの接続ポート部分に
設定した認識名とIPが含まれるポートが現れる
これがネットワーク越しのESP32への通信ポートとなるのでこちらに設定しOKする
上のプログラムでは本体内蔵のLEDを赤にするという命令が入っているので
ボード上のLEDが赤に光る
ここでキチンとネットワーク越しにファームアップ出来るかのテストのため
一度USBケーブルをデータ通信不可のものに交換し(ESP32に電源は必要なので…)
プログラムの
neopixelWrite(RGB_BUILTIN,255,0,0);
を
neopixelWrite(RGB_BUILTIN,0,255,0);
と変更しコンパイルを開始すると…
パスワードを聞いてきた
おそらくWiFiのパスワードかなということで入力
転送が始まった
やはりUSB直接よりは遅い感じだが正常にESP32へ転送出来たようだ
無事LEDが緑になった
WiFi経由のファームアップに成功である
しかし1点問題が
転送が100%になってもArduino IDE上の書き込み中の表示が
ず~~~と終わらん
プログラムは書き換わってるのは間違いないためバグなのか設定の問題なのか…
まあとりあえず大きな問題では無いのでいいかな
注意する点としては当然OTAのコードを書いてないプログラムをアップしてしまうと
繋がらなくなるので以降のプログラムにもOTAのコードを追加する必要がある
この方法だと
1 2 3 |
#define ESP32_RTOS #include "OTA.h" setupOTA("myName", "mySSID", "myPASSWORD"); |
この3箇所だけ追加すれば良いためさほど苦労はしないだろうけど
コメント