この記事ではWifi, Bluetooth搭載で話題のマイコン、ESP32のWifi機能を用いてプログラムの無線書き込みを実装したので、やり方の説明とサンプルプログラムを紹介します。
この記事を読むことで、サムネイル画像のようにPCとESP32を繋がず、モバイルバッテリー等で電源を給電しつつ、プログラムの書き込みができるようになります。その結果、都度PCと接続する手間が省けるほか、同じネットワーク環境下であれば離れた場所にESP32やESP32を搭載したモジュールを配置したまま、プログラムの書き換えが可能になり、開発の自由度が高くなること間違いなしです。
ESP32の簡単な説明
ESP32とはどんなものなのかよくわかっていない方もいらっしゃると思いますので、簡単に説明します。
ESP32の大きな特徴はWifi, Bluetoothを搭載しているところです。そのうえで純正のArduinoよりも安価に購入でき、ArduinoコードやC++などいくつかの言語の互換性があります。そのため、1つのマイコンでいろいろなことを試したい方には大変おすすめなマイコンです。
実験構成
- ESP32
- モバイルバッテリー
- マイクロUSBケーブル
ESP32は上記のものを使用します。
モバイルバッテリー、マイクロUSBケーブルに関してはなんでも問題ありませんが、参考に安いものを紹介しておきます。
モバイルバッテリー
マイクロUSBケーブル
モバイルバッテリーは電池の残量が確認できるものがおすすめです。また、マイクロUSBケーブルはたまに充電はできてもデータ通信ができず、ESP32にプログラムをそもそも書き込めないものが売っていますので、注意してください。
実験
Arduino IDEでESP32を使うためのセットアップ
Arduino IDEでESP32を使用する場合、以下の手順でボードのボードマネージャーにインストールしなければいけません。
-
Arduino IDEを立ち上げて、メニューから「ファイル」→「環境設定」を開き、「追加のボードマネージャのURL」にhttps://dl.espressif.com/dl/package_esp32_index.jsonと入力し「OK」をクリックします。
-
「ツール」→「ボード」→「ボードマネージャ」を開きます。「esp32」と入力し、「esp32 by Espressif Systems」をインストールします。
-
「ツール」→「ボード」で、「ESP32 Dev Module」を選択します。
ESP32自動書き込みの準備
私が購入したESP32は、プログラムを書き込む時にENスイッチやbootスイッチを操作しなければ、書き込みができない仕様になっていました。 (ものによっては無痛に書き込めますので要確認)
そのため、自動書き込みをするために、ENとGNDの間に0.22uF~2.2uFのコンデンサを追加する必要がありました。
私の場合、1.0uFの抵抗をはんだ付けしました。 (少々強引ですが無事動作しています。)
実行コード
それでは早速、ESP32をPCに接続し、以下のコードを書き込んでください。
この時、"ssid"と"password"の中身を自身が使用するWifiのものに書き換えてください。(自宅のWifiを使用する場合、モデムの裏とかに書いてあると思います。)
上記の書き込みが正常に完了すると、以下の画像のように「ツール」→「シリアルポート」に「ネットワークポート」→「esp32 ~」というポートができているはずです。
これが出ていたら、「esp32 ~」を選択して、再度同様のソースコードを書き込んでみてください。(ネットワークポート選択後は、別のソースコードでも可能ですが、ArduinoOTAを実行するコマンドが含まれているソースコード出ないとポートが外れてしまうので注意してください)
また、「ネットワークポート」が出ていない場合は、「ツール」のウィンドウを一度閉じて再度開くと出ているかと思います。
OTA (無線書き込み)ができたら以下のように出力が出てきますので、これができていたら、PCから外し、モバイルバッテリーに繋げてみてください。
少し待つと「ネットワークポート」が出ているはずなので、これでOTAが実装できたことになります。
まとめ
今回は、ESP32のWifi機能を使ってOTA (無線プログラム書き込み)を実装しました。またその際のサンプルプログラムを紹介しました。