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接続が簡単にできてしまう。なんて恐ろしい子なのかしら。

関連記事:

Linux環境でのArduino IDEの豆腐文字化けを直す

Arduino IDEをLinuxにインストールしたところメニューなどが豆腐状態になって正しく表示されない。そこで、その対応。

Arduino IDEの文字化け解消 1
Arduino IDEは https://www.arduino.cc/en/softwareから貰ってくる。
Windows用, Linux用, Mac OS X用があるので使用しているOSに対応してなくて困るということはない筈。今回はArduino IDE 1.8.16 Linux 64bit版をDLした。

DLしたファイルを任意の場所に解凍する。この解凍したファイル群はその後も使い続けることになるので一時ファイル保管場所などではなくホームディレクトリの下など。 /home/user/arduino-1.8.16 例えばこんな感じ。
$ cd ~/arduino-1.8.16
$ sudo ./install.sh

これでインストールされる。必要なファイルがインストールされ、デスクトップにArduino IDEのアイコンが作成される。合わせてアプリケーションランチャー(Windowsでいうスタートメニュー)にもArduino IDEの項目が登録される。デスクトップのアイコンは要らなければ消してO.K.
「がとらぼ」の人の環境では/home/user/arduino-1.8.16でインストーラーを実行すると/home/user/Arduinoディレクトリが作成された。また、隠しとして/home/user/.arduino15 もできた。(これはもしかするとArduino IDE初回起動時かも)

Arduino IDEの文字化け解消 2
とりあえずArduino IDEを起動してみた。起動時に表示される絵の下に表示される文字やメイン画面のメニューなどの文字が□で表示される。所謂「豆腐」というやつ。

まずは英語表示にする

Arduino IDEの文字化け解消 3
文字化けで読めないので取り敢えず英語表示にしたい。
メニューの一番左をクリック。 ポップアップしたメニューの下から2番めをクリック。

Arduino IDEの文字化け解消 4
上寄りにあるドロップダウンメニューが言語選択。
ついでに下の方にあるのが設定ファイルのPath

Arduino IDEの文字化け解消 5
言語のドロップダウンメニューから English (English)を選択。
右下のOKを押す。

一旦、Arduino IDEを終了して再度起動する。

Arduino IDEの文字化け解消 6
メニューが英語で正常に表示されることを確認する。

日本語表示にする

Arduino IDEで日本語表示する方法はググるといろいろ出てくるが、Java実行環境の整備とかはどうでも良くて、今回はフォント問題を解決するだけで何とかなりそう。
つまり、「設定ファイル ~/.arduino15/preferences.txt でフォント指定する」という解決方法は半分正しいけど足りない。「Java実行環境 ~/arduino-1.8.16/java/lib/fonts 等にフォントを用意する」というのは要らない。現在のArduino IDEはシステムOSに入っているフォントを使えるようになってるっぽい。
Arduino IDEではTrueTypeのフォントしか利用できないようだが「がとらぼ」の中の人のLinux環境(KDE neon)では日本語フォントはOpenTypeのものしか入っていないみたい。おそらくこれが原因で日本語表示しようとすると表示できるフォントがなくて豆腐になる。そこでTrueTypeの日本語フォントをインストールする。読みやすいフォントなら何でも良いが、今回はVL ゴシックを使うことに。

$ fc-list

インストール済みフォントが表示される。TrueTypeで日本語フォントがあるか探してみる。
ざっと見たところKDE neon(Ubuntu系)の標準では入ってないっぽい。

VLフォントを追加
$ sudo apt search VL font    ⬅パッケージにVLフォントがあるかを探してみる
fonts-vlgothic/focal,focal 20141206-4ubuntu1 all  ⬅あった(黄色字)
  Japanese TrueType font from Vine Linux

$ sudo apt install fonts-vlgothic  ⬅インストール

中略

$ fc-list | grep VL
/usr/share/fonts/truetype/vlgothic/VL-PGothic-Regular.ttf: VL Pゴシック,VL PGothic:style=regular
/usr/share/fonts/truetype/fonts-japanese-gothic.ttf: VL ゴシック,VL Gothic:style=regular
/usr/share/fonts/truetype/vlgothic/VL-Gothic-Regular.ttf: VL ゴシック,VL Gothic:style=regular

これで、VLフォントがインストールできた。ついでにフォント名(英語名)が「VL Gothic」であることも確認できた。正しいフォント名を得ることが大事
パッケージにVLフォントが無いとか他のVLフォント以外のパッケージ外フォントを使いたい場合は適切にインストールしてください。

Arduino IDEが開いていたら終了する。(実行中にだと次の設定ファイルの変更をしても変更が無かったことになるので)

さきほどのArduino IDEの設定画面に表示されていた設定ファイルの在り処からそのファイルをテキストエディタで開く。
vim ~/.arduino15/preferences.txt など。

editor.font=VL Gothic,plain,12
editor.languages.current=ja_JP

少なくともこの2行を変更して上書き保存する。

Arduino IDEを起動する。

Arduino IDEの文字化け解消 7
メニューが日本語表示になった。

Arduino IDEの文字化け解消 8
設定画面も日本語表示になった。言語選択も日本になっている。

無理に日本語表示させなくても英語で十分だが、「日本語が化ける」ことが腹立たしかったので敢えて日本語表示させてみたという些細な内容でした。

関連記事:
Up