ESP32 Wi-Fi経由のアプリ更新 OTA関連の情報を整理
ようやっと、ESP32において、Wi-Fi経由でファームウェアを更新する機能(OTA機能)を調べ始める
本当は別に作りたいモノがあるのだが、それを作るのにOTA機能が欲しい
いくつか方法があるようなので、今回は、情報の整理をしてみようと思う
ArduinoOTA
「Arduino library to update the sketch over the network」とある
上記の説明通り、Arduino IDEで、スケッチのアップデートをネットワークで行うライブラリ
Arduino IDEのUIからファームウェアをネットワーク経由で更新できそう
インターネットの情報だと、PlatformIOでも動いていそう
作者はJuraj Andrassy氏
プロのソフトウェアエンジニアだが、GitHubのレポジトリのほとんどが趣味関連のレポジトリ、とある(※1)
GitHubにESP32にも対応していると書かれている(ESP32以外のMCUにも対応している)
SPIFFSにも対応と書かれている(しかし制限がありそう ※2)
arduinoOTA というCLI(コマンド)が用意されていそうで、独自に開発環境に組み込むのも容易そう
どちらかというと開発時のアップデート用途だと思われる
PIOでのダウンロード数:10,183
Arduino IDEで使っている人が多いので、下記のElegantOTAより倍くらい少ないのだと推測しているが、どうだろうか
最終更新日:2024-01-19T19:30:06Z
ラインセンスに注意しないといけない(詳しくはGitHubを参照ください)
※1
※2
ElegantOTA
ブラウザからファームウェアをアップロードして、更新できそう
デザイン面も考えられていそう
作者はAffero General氏
ESP32に対応している
ライセンスに注意する必要がありそう
商用利用する場合は、Pro版も検討してください、とある
詳細は、GitHubにあるライセンス項目を読む必要がある
最終更新日:2024-10-11T16:28:41Z
PIOでのダウンロード数:19,545
ESP-IDF Over The Air Updates
ESP32の製造元のEspressifが提供するライブラリ(ESP-IDF)のOTA機能
ロールバック機能などがあり、エンドユーザーがファームウェアを更新する用途にも使えそう
インターネットから新しいファームウェアをダウンロードするという構成が例として示されている
ESP-IDFに、URLを設定する項目があることから、ダウンロードする構成を主に想定していそう
HTTPダウンロード独自実装版 (筆者が勝手に命名)
native_ota_example という名前のサンプルにあるやり方
何がネイティブか?「 HTTP関連の処理をネイティブのHTTP APIを使う」
esp_http_client_* (esp_http_client_openなど)という関数を使う
ESP32がHTTPクライアントになって、ファームウェアをHTTPサーバーからダウンロードする構成
簡単ダウンロード版 (筆者が勝手に命名)
simple_ota_example という名前のサンプルにあるやり方
何がシンプルか? 「OTA専用のシンプルなHTTP APIを利用する(ネイティブなHTTP APIを使わない)」
esp_https_ota()という関数を使う
ESP32がHTTPクライアントになって、ファームウェアをHTTPサーバーからダウンロードする構成
HTTPS用の証明書のことを考えると、億劫になりがち
EspressifのGitHubにあるHTTPSのサーバーを立てるPythonスクリプトを見るだけで、億劫になる
esp_https_ota()という関数名だが、HTTPでも動作させることができそう
(テスト用途でのみ、と記述があるが)
感想
ElegantOTAが、筆者求めているものだが、ライセンスが合わない
実装はそこまで大変ではなさそうなので、実装してみようと思う
ダウンロードのサンプルにある方法と同じように、アップロード中、その都、フラッシュに書けばようさうだ
現状は、1Mbytes以内のファームウェアを考えている
Freenoveのボードなどは、8MBytesのPSRAMがあるので、ファームウェアのバイトコードのすべてを一度、メモリにキャッシュして、その後、書き込むこともできそう(都度、書き込みせず、一挙に書き込む)
都度、フラッシュに書く方式だと、ロールバックを考えないといけない(書いている途中で、ネットワークが途切れたら、ロールバックする必要がある)
ファームウェアが250KBytes以内くらいならば、内蔵のSRAMでもキャッシュできるかもしれない
PSRAMを8MBytes積んだ、Freenoveのボードが売り切れになってしまった
よい商品だと感じ&サポートも丁寧だったので、おすすめしてきた
嬉しい反面、買えないのは困る複雑な心境である
在庫が復活してくれることを願う!