You are here

ESP-WROOM-02: OTA (Over the Air) アップデート

ESP-WROOM-02へのスケッチの書き込みは、通常はUSBの通信線を利用して行いますが、WiFiの無線機能を内蔵しているESP-WROOM-02では、USBの通信線を使用せず、WiFiの無線機能を利用してスケッチの書き込みを行うことができます。
USBなどの有線ではなく、WiFiの電波を空中に飛ばして(Over the Air)スケッチを書き込むということで、OTAアップデートと呼ばれています。

OTAのドキュメント
http://esp8266.github.io/Arduino/versions/2.3.0/doc/ota_updates/readme.html

マイクロファンのESP8266-KEYESP8266-SEEDなどは、USBインターフェースが組み込まれていないため、通常はUSBインターフェースを接続してスケッチの書き込みを行わなければなりません。しかしながら、OTAアップデート機能を利用すると、最初の1回だけはUSBインターフェースを接続しなければなりませんが、それ以降は、ESP-WROOM-02に内蔵されているWiFiを利用してスケッチの書き込みができるので、大変便利に利用することができます。

USBなどのケーブルを接続せずにスケッチの書き込みができるのは、慣れないと何か変な感じですね。

ESP8266-KEYでOTAを利用

もちろん、ESP8266-LEAFの様に、USBインターフェースを持つ開発ボードでも、USB接続を利用せずにスケッチの書き込みを行ったり、スケッチの書き込みを短時間で行えることができるため、便利に利用することができます。


  • ESP-WROOM-02にファームウェアにはOTA用の機能が組み込まれていないため、OTA用の機能をユーザープログラムの一部として実現しています。このため、最初の1回はOTA用の機能を含むスケッチをUSBを利用してESP-WROOM-02に書き込まなければなりません。
  • 上記のコードが一旦ESP-WROOM-02に書き込まれると、そのあとはUSB接続はなしで、WiFi接続を利用してスケッチの書き込みができるようになります。
  • 2回目以降に書き込むスケッチにも、1回目と同様にOTA用の機能が組み込まれていなければなりません。
  • アプリケーションコードにバグがあり、スケッチが暴走しているような場合には、OTA用のコードも正しく動かないので、OTAアップデートができなくなります。



基本

準備
Arduino IDEとESP8266 coreはインストール済
Python 2.7系のインストール
https://www.python.org/
この記事の作成時点でのバージョンは2.7.13


  • スケッチの例のArduinoOTA -> BasicOTAを選択
  • ssid とpassword を各自のWiFiのアクセスポイントの接続用の値に書き換えて利用。
  • OTA機能が組み込まれたスケッチの最初の書き込みはUSB接続で行う。
  • OTA機能が組み込まれたスケッチを組み込んだ開発ボードが正常に動いているかどうかArduinoIDEのシリアルモニタを開いて確認。
  • シリアルモニタのボーレートは、OTA用スケッチのシリアルのボーレートに合致していることを確認。
  • 開発ボードのリセットボタンを押すなどして、シリアルモニタに[Ready]に続いて[IP address: X.X.X.X]と出力されたら、開発ボードがWiFiのアクセスポイントに接続されていることを確認できる。
  • ArduinoIDEいったん完全に終了させて再起動する。
  • 開発ボードからUSBケーブルを外し、必要に応じで開発ボードに電源教を行う。(USBケーブルが接続されていても特段の問題はない)
  • ArduinoIDEの[ツール]->[シリアルポート]を選択すると、WiFiで接続された開発ボードが表示されるのでそれを選択。
  • 先ほど開発ボードに書き込んだスケッチ(例えばBasicOTA)を開き、[マイコンボードに書き込む]ボタンを押してスケッチの書き込みを行う。
  • この際、初めての場合には、OTAアップデート用プログラムのネットワークアクセスの許可を求めるダイアログが開くので許可する。
  • OTAアップデートが実行され、ArduinoIDEにその経過が表示される。
  • ネットワークアクセスの許可に時間がかかった場合などには、OTAアップデートが失敗するので、その際には再度[マイコンボードに書き込む]ボタンを押す。
  • この後は、スケッチにOTA用のコードを組み込んだ状態でアプリケーションコードを作成すれば、USB接続なしにコードの修正と書き込みを繰り返し行える。



OLEDディスプレイの利用

ESP8266-LEAFやESP8266-KEYの様に、OLEDディスプレイを搭載できる開発ボードでは、OLEDディスプレイをアプリケーションの表示用に利用できるだけでなく、OTAでのスケッチの書き込み時に、その書き込み状態の表示用に利用することができます。

OLEDディスプレイにOTAの状態を表示するコード例は、以下のOLEDライブラリのサンプル[SSD1306OTADemo]で参考にすることができます。

https://github.com/squix78/esp8266-oled-ssd1306

本ページの上部に表示されている写真は、そのコードを修正して利用した例です。


使用パーツ


プログラムライタ: