鳥なき里のマイコン屋(82) VS CodeでESP32 DevKitC

JosephHalfmoon
JosephHalfmoon

前回まで、SSHでRemote接続が続いたので、今回はVS Code+PlatformIOでのクロス開発に戻ります。ターゲット・ボードはEspressif Systems社のESP32 DevKitCです。ESP32はデュアルコアCPU。フレームワークはお手軽にArduinoでやってみます。実を言えば既にM5Stackで、ESP32のAruduino環境はセットアップ済です。簡単にできる筈ですが。

まず、ESP32といっても色々な形態の製品があるので、今回ターゲットのDevkitCの位置づけについてちょっと整理しておきたいと思います。搭載されているモジュールは

ESP32-WROOM-32D

です。単なるMCUではなく、技適必要な無線機能を備えたモジュールなので、アンテナ一体です。非常に小さい字ですがモジュール表面に技適の番号が印字されています(私の裸眼じゃ数字読めません)この形態ですと表面実装のモジュールなのでボードに搭載する場合には半田付けが必須です。上手な人なら手でも付けられそうではあるのですが、私は遠慮したい。なお、ピンを立ててブレッドボードに簡単に差し込めるようにしただけの基板が結構お安く売られています。これを使えば半田付けは不要、ただし、そのままではPCに接続できません。

そこを解決しているのが、ESP32のモジュールといくつかの部品を小型基板に搭載したDevKit系の基板です。PCと接続するためのUSB-シリアル(UART)チップ、そしてUSBの5V電源から3.3Vを生成するためのレギュレータが主要な追加部品です。モジュール単独、あるいはピンヘッダで接続できるだけのボードだと外付けでそれらを用意しないとならないのですが、DevKitだとズボラにやれるというわけです。そして基板そのものは、ピンヘッダなのでブレッドボードに刺さります。ただし、DevKitCは部品の幅が広いです。両側に電源のあるタイプのブレッドボードはピンが5列しかないので不適だと思います。外側から信号を取り出すためには、片側電源で6列の配置のブレッドボードでないと。

さて、PlatformIOでのターゲット基板とフレームワークの選択は、以下のようです。私の場合、M5Stackを既に試しているので、ESP32用のツールチェーンやらAruduino環境やらはPlatformIOが既に自動ダウンロード済。PlatformIOのプロジェクト・ウイザードから、Espressif ESP32 Dev Moduleを選択すれば、ほとんど時間もかからずプロジェクトが生成されます。

なお、ESPと入力するとESP8266系のボードがいくつもでてきて、ESP32がなかなか見かりません。ESP32系は、Espressifと打つと見つけやすいと思います。

VS Code上でプロジェクトが編集可能になったら、既にmain.cppの雛形が用意されています。そこに例によってLチカのコードをちょこっと書き込みます。なおボード上でLEDが接続されているわけではないので、DevKitC刺したブレッドボードの側にLチカ用の回路を作って置きます。ボード回路図みるとDevKitCのほとんどの端子は素のままピンに出ているようなので、適当に信号の引き出し易い端子を選んでおきました。

書き込んだら、ビルドしてボードにダウンロード。動作しているところは、アイキャッチ画像を御覧ください。問題なし、動作OK。

デバッグはどうでしょうか。恐れを知らずデバッグ実行を選択してみるとエラーになってしまいます。それもその筈、PlatformIOのこのボードに対する説明を引用させていただくと、以下の通り。

という分けで、ちゃんとプローブを買って接続してあげないとイケません(後で買わないと。。。)

でもUSBシリアルがあるので、「伝統の」printfデバッグはできる筈。先ほどのloop()の中にprintf()追加して、1から順にカウントアップするようにし、再度書き込んでみました。ただ、忘れちゃいけないのは、PlatformIOから呼び出せるシリアルターミナルのボーレートの設定です。PlatformIO自体はUSBシリアル経由でプログラムをダウンロードできるくらいなので、オートマティックにCOMポートを設定できている筈なのですが、シリアルターミナルについては、グローバル設定のデフォルト9600ボーが優先になっているようです。115200がボードのデフォルト速度なので、以下のようにPlatformIO.iniにmonitor_speedの設定をしておかないとなりません。

PlatformIOのシリアル端末が表示されて、1,2,3,4と数えているのが見えますでしょうか。ESP32については、USB経由でのプログラムの書き換えは非常に簡単であります。

鳥なき里のマイコン屋(81) VS Code、Remote、makeしてgdb へ戻る

鳥なき里のマイコン屋(83) VS CodeでESP32続、LCD へ進む