Arduino互換ESP32マイコンボード用のプログラム環境の作成

前回、Arduino IDEのインストールと日本語表示化を行った。今回はその続きのようなもの。環境を整えて実際にESP32マイコンボードにプログラムを書き込んで実行するところまで簡単に一通り行う。(プログラムの内容は省略)

Arduino IDEの起動前〜プログラムをマイコンボードに書き込む間のどこかでArduino IDEの動いているPCとESP32マイコンをUSBケーブルで接続する。ESP32マイコンがDevKitならのPower LED(赤)が点灯する筈。

ESP32の開発準備 1
Espressif Systemsが持ってるGitHubのESP32用リポジトリArduino core for the ESP32 を見ると If you want to test ESP32-S2 and/or ESP32-C3 through the board manager, please use the development release link と書いてある。
つまり https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json をArduino IDEの設定ページのボードに貼る。

ESP32の開発準備 2
Arduino IDEを起動。メイン画面のメニューから「ファイル」をクリック。

ESP32の開発準備 3
「ファイル」から「環境設定」をクリック。

ESP32の開発準備 4
「環境設定」の「設定タブ」(左上の隅、最初から選択されている筈)で、「追加のボードマネージャのURL」(画像の赤枠部分)にGitHubからコピーしてきたURLを貼り付ける。
右下のOKをクリック。

ESP32の開発準備 5
Arduino IDEのメイン画面に戻り、メニューの「ツール」をクリック。

ESP32の開発準備 6
「ツール」から「ボード:hogehoge」(hogehogeは何かのマイコンボード名)にポインタを合わせ、開いたリストの一番上の「ボードマネージャ」をクリック。

ESP32の開発準備 7
ボードマネージャの画面は殆どがスクロールするリスト。下にスクロールする。

ESP32の開発準備 8
スクロールして「esp32」を見つけ、その行(画像の破線の四角部分)にポインタを合わせると背景の色が変わり、バージョン選択のドロップダウンメニューと「インストール」ボタンが表示される。バージョンは最新が選択されている筈なので特に必要がなければそのままで「インストール」ボタンをクリック。

ESP32の開発準備 9
インストールは意外と時間がかかる。ウインドウの最下段にプログレスバーが表示されるので一番右に進むまで待つ。

ESP32の開発準備 10
esp32がINSTALLED (画像の下線部分)が表示されていることを確認して「閉じる」

ESP32の開発準備 11
再度メイン画面の「ツール」から「ボード: hogehoge」にポインタを合わせ、表示されたリストに「ESP32 Arduino」があることを確認し、それにポインタを合わせる。 さらにリストが表示されるので「ESP32 Dev Module」を探しクリックして選択する。

ESP32の開発準備 12
さらにもう一度メイン画面の「ツール」を開く。「ボード: "hogehoge"」のhogehoge部分が「ESP32 Dev Module」になっていればO.K.

$ cd ~/arduino-1.8.16
$ ./arduino-linux-setup.sh $USER
USBポートに対するユーザーのアクセス権を(関連グループに)割り当ててくれる。

ESP32の開発準備 13
メイン画面のメニューから「ツール」を開き、「シリアルポート」でUSBのポート(何かが表示される筈)を選択。

ESP32の開発準備 14
Sketch(スケッチ)とかいうソースをテキトーに書いてコンパイル(画像左上の赤枠のアイコン)

ところが、コンパイルで変なメッセージが出る。
例:
ImportError: No module named serial
「WiFi.h」に対して複数のライブラリが見つかりました

これ、エラーメッセージを見た感じだと書いたスケッチ側とかライブラリに異常があるのではないかと思うが、Pythonで問題が発生しているっぽい。
Arduino IDEが動いているPC側、Linuxに必要なパッケージ

  • python3-pip
  • python3-serial
  • python-is-python3 ←特に、これを入れたら上手くいった
  • esptool
インストール
$ sudo apt install python3-pip python3-serial python-is-python3 esptool

不要かもしれないが、念の為Arduino IDEを再起動した。

ESP32の開発準備 15
「コンパイルが完了しました。」が表示されてその下のメッセージ欄に特にエラーが表示されなければコンパイル成功。

暫く(数日以上数ヶ月未満)して再び「WiFi.hに対して複数のライブラリが見つかりました」の異常が発生。
Linuxの更新で何か(esptoolに関連する?)パッケージを更新すると異常が発生することがあるみたい。

$ sudo apt reinstall python3-serial esptool

これが正解はか不明だが、「がとらぼ」の中の人の環境ではこれで復旧した。

次はESP32マイコンボードにコンパイルしたプログラムを書き込むのだが、その前にArduino IDEでシリアルモニターを起動しておく。
Arduino IDEのメイン画面のメニューから「ツール」を開き「シリアルモニタ」を選択。白いウィンドウが開く。それはとりあえず触らず次へ。

ESP32の開発準備 16
メニューの下の(マイコンボードに書き込む)を実行する。

ESP32の開発準備 17
「Writing at ・・・ ○%」が幾つか出て100%になり、「ボードへの書き込みが完了しました。」が表示されれば成功。
書き込みが完了するとESP32マイコンボード側では書き込まれたプログラムが実行される。

ESP32の開発準備 18
作成したプログラムにはシリアルへのメッセージの出力処理がある。そしてWi-FiでAPに接続し、接続先NWにあるDHCPサーバからIPアドレスが割り振られるとそれが表示されるようになっている。その表示を確認するために先にシリアルモニタを開いておいた。
表示されたIPアドレスで本当に通信できているのかpingを送信して疎通を確認。

僅か20行程度でシリアル通信とWI-Fi接続が簡単にできてしまう。なんて恐ろしい子なのかしら。

関連記事: