前回、Arduino IDEのインストールと日本語表示化を行った。今回はその続きのようなもの。環境を整えて実際にESP32マイコンボードにプログラムを書き込んで実行するところまで簡単に一通り行う。(プログラムの内容は省略)
Arduino IDEの起動前〜プログラムをマイコンボードに書き込む間のどこかでArduino IDEの動いているPCとESP32マイコンをUSBケーブルで接続する。ESP32マイコンがDevKitならのPower LED(赤)が点灯する筈。
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の設定ページのボードに貼る。
Arduino IDEを起動。メイン画面のメニューから「ファイル」をクリック。
「ファイル」から「環境設定」をクリック。
「環境設定」の「設定タブ」(左上の隅、最初から選択されている筈)で、「追加のボードマネージャのURL」(画像の赤枠部分)にGitHubからコピーしてきたURLを貼り付ける。
右下のOKをクリック。
Arduino IDEのメイン画面に戻り、メニューの「ツール」をクリック。
「ツール」から「ボード:hogehoge」(hogehogeは何かのマイコンボード名)にポインタを合わせ、開いたリストの一番上の「ボードマネージャ」をクリック。
ボードマネージャの画面は殆どがスクロールするリスト。下にスクロールする。
スクロールして「esp32」を見つけ、その行(画像の破線の四角部分)にポインタを合わせると背景の色が変わり、バージョン選択のドロップダウンメニューと「インストール」ボタンが表示される。バージョンは最新が選択されている筈なので特に必要がなければそのままで「インストール」ボタンをクリック。
インストールは意外と時間がかかる。ウインドウの最下段にプログレスバーが表示されるので一番右に進むまで待つ。
esp32がINSTALLED (画像の下線部分)が表示されていることを確認して「閉じる」
再度メイン画面の「ツール」から「ボード: hogehoge」にポインタを合わせ、表示されたリストに「ESP32 Arduino」があることを確認し、それにポインタを合わせる。
さらにリストが表示されるので「ESP32 Dev Module」を探しクリックして選択する。
さらにもう一度メイン画面の「ツール」を開く。「ボード: "hogehoge"」のhogehoge部分が「ESP32 Dev Module」になっていればO.K.
$ cd ~/arduino-1.8.16 $ ./arduino-linux-setup.sh $USERUSBポートに対するユーザーのアクセス権を(関連グループに)割り当ててくれる。
メイン画面のメニューから「ツール」を開き、「シリアルポート」でUSBのポート(何かが表示される筈)を選択。
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を再起動した。
「コンパイルが完了しました。」が表示されてその下のメッセージ欄に特にエラーが表示されなければコンパイル成功。
暫く(数日以上数ヶ月未満)して再び「WiFi.hに対して複数のライブラリが見つかりました」の異常が発生。
Linuxの更新で何か(esptoolに関連する?)パッケージを更新すると異常が発生することがあるみたい。
$ sudo apt reinstall python3-serial esptool
これが正解はか不明だが、「がとらぼ」の中の人の環境ではこれで復旧した。
次はESP32マイコンボードにコンパイルしたプログラムを書き込むのだが、その前にArduino IDEでシリアルモニターを起動しておく。
Arduino IDEのメイン画面のメニューから「ツール」を開き「シリアルモニタ」を選択。白いウィンドウが開く。それはとりあえず触らず次へ。
メニューの下の(マイコンボードに書き込む)を実行する。
「Writing at ・・・ ○%」が幾つか出て100%になり、「ボードへの書き込みが完了しました。」が表示されれば成功。
書き込みが完了するとESP32マイコンボード側では書き込まれたプログラムが実行される。
作成したプログラムにはシリアルへのメッセージの出力処理がある。そしてWi-FiでAPに接続し、接続先NWにあるDHCPサーバからIPアドレスが割り振られるとそれが表示されるようになっている。その表示を確認するために先にシリアルモニタを開いておいた。
表示されたIPアドレスで本当に通信できているのかpingを送信して疎通を確認。
僅か20行程度でシリアル通信とWI-Fi接続が簡単にできてしまう。なんて恐ろしい子なのかしら。
関連記事:- ESP32マイコンボードとMAX7219 LEDディスプレイ4連x2でNTPクロックを作ってみた の続き Wi-Fi自動再接続
- ESP32-CAMで作るリビングカメラ (工作編)
- ESP32マイコンボードとMAX7219 LEDディスプレイ4連x2で作ったNTPクロックを置き時計風にしてみた
- ESP32マイコンボードとMAX7219 LEDディスプレイ4連x2でNTPクロックを作ってみた
- MAX7219 LEDマトリクスディスプレイでArduino用ライブラリのデモを再生
- ESP32-WROOM-32(D)とMAX7219 LEDマトリクスディスプレイ
- Arduino互換ESP32マイコンボードをNTPクライアント化
- Arduino互換ESP32マイコンボード用のプログラム環境の作成
- Linux環境でのArduino IDEの豆腐文字化けを直す