[ESP32]IoTマイコンを動かしてみる3 -開発環境導入編‐

光った!

方向性も決まったので、開発環境を整える。

Arduino IDEでLチカしてみよう。そうしよう。


Arduino core for ESP32 開発環境導入

基本的には導入手順は下記リンクのInstallation Instructionsを参照する。

Development Statusのところに、analogWriteは未実装だよ的なことが書いてあるけど回避策もあるみたいだし、そもそも今回のシステムでは使わない予定だし気にしない。

Arduino IDEのインストール

何はなくともまずはArduino IDEをインストール。

バージョンは1.8以上の指定ありなので注意。といっても最新版で問題ないと思いますが。

#知らないうちにArduino Web Editorなるものがリリースされたみたい。どんどんお手軽になりますね。

Arduino core for the ESP32のインストール

書籍によるとgitをインストールしてgit bashからインストールする手順だが、今はArduino IDEのBoards Managerからインストールするのがpreferredらしいのでそうしましょ。

上で紹介したInstallation Instructions通りで問題ないと思いますが、説明が簡素なので下記のリンクを参照すると懇切丁寧に説明されているので助けになるでしょう。

今時珍しいレベルの丁寧さ。感心しちゃう。

ちなみにStable版とDevelopment版があるみたいですが、特に新しく実装された機能を試したいとかなければStable版でよいでしょう。

インストールが完了したら[ツール]->[ボード]で[ESP32 Dev Module]を選べばよいのだが、思ってた以上にボードが追加されててびっくりするので要注意だ。

動作確認…の前に

いよいよPCと接続しちゃうよ。と思ったが。

噂には聞いていたが、ブレッドボードが片側一列しか空かない。。そしてピンの数が多いので挿すのが固い。。無理やり挿しこむと抜けなくなりそうでこわい。。

色々接続するときはブレッドボード2枚作戦で対応しよう。

ついでに色々引っ張り出してきたのでArduino UNOとXBeeと並べてサイズ比較。チップ自体はXBeeと大差ない感じ。ただとにかくピンの数が多い。

写真真ん中の小さめブレッドボードは縦のピン数が足りなかった。。

USBケーブル流用しようと取り出したのだが、なんと地味に全て違うサイズという残念な事態。

・Arduino UNO → USB Type B

・XBee(USBインターフェース基板) → Mini USB

・ESP32(ESP32-DevKitC) → Micro USB

どんどん小さくなっていて進化しているのね。ということで納得しておこう。

出荷イメージをバックアップ

思いがけないところでつまづいたが、そうじゃなくて、動作確認の前にバックアップしましょうということを言いたかった。

書籍でも出荷時のファームウェアバックアップについては触れられていなかったし、あんまり気にする必要はなさそうだったけどこことか見てると念のためしておいたほうがよさそう。

バックアップのスクリプトはリンク先を参照。

ただしリンク先の指定フォルダ「Arduino インストールフォルダ\hardware\espressif\esp32\tools」は手動インストールの場合のようで、自動インストールした私の場合は該当のフォルダはない。

スクリプトの内容から察するにesptool.exeと同じフォルダで実行すれば良さそう。

自動インストール(Boards Managerからのインストール)の場合は下記の場所にesptools.exeがあったので、そこで実行。

C:\Users\%username%\AppData\Local\Arduino15\packages\esp32\tools\esptool\2.3.1

あとこれは自分の環境だけかもだけど、管理者として実行を選んだらすぐにコマンドプロンプトの画面が消えてうまくいかなかった。管理者としてコマンドプロンプト起動→コマンドプロンプト上からスクリプト実行の手順で下記のステータスが見れたので無事バックアップできたっぽい。

きっかり4MBのバイナリも生成された。

動作確認

チップIDを取得する

まずは書籍に載っていたチップIDを取得するサンプル。

・ちゃんとチップにプログラムを書き込めているか

・チップ内蔵の情報をシリアル通信で取得できるか

のチェックですね。

IDEの[スケッチ例]を開くと、こちらもESP32用のサンプルスケッチが大量に追加されている。発想力に乏しい僕はこれだけあればサンプル組み合わせるだけでそれなりのもの出来ちゃうんじゃね?とか思う。

そのサンプルから[ChipID]→[GetChipID]を選択。書き込んだら[ツール]から[シリアルモニタ]を選択して表示する。

ちなみにGetChipIDのコードはこんな感じ。

Arduinor(って言うのだろうか?)にはお馴染みだが、電源ON時にsetup()で初期設定を行い、あとはloop()の中を実行し続ける、というのがArduinoプログラムの基本。

ここではsetup()でシリアル通信のボーレートを設定し、loop()でchipIDを取得してシリアル通信に出力しているのが分かる。

あ、chipIDってMAC addressなんですね。

コメントも親切ですね。助かります。

早速書き込んでシリアルモニタで確認してみよう。

よめない。。

なぞのもじれつがあらわれた!

しかし私は慌てない。なぜならコードを読んでいたから。

よくあるボーレート違いですね。コード上では115200なのにシリアルモニタの設定が9600になっていますね。右下のボタンで115200bpsに変更しましょう。

よめた!

おっけー。

これで問題なく書き込みできることが確認できたので、開発環境整った&チップに重大な初期不良なし。

WiFi通信の動作確認

続いてこちらも書籍に載ってたHTTPクライアントのサンプル。

・WiFiアクセスポイントとの接続

・APを経由してインターネット上のサーバへHTTPでアクセス

の動作を確認する。

要は普通にPCでWiFiつないでウェブサイトを見るのと同じ操作を行う。

いつもの図で示すとこんな感じ。

今度はIDEのスケッチ例から[HTTPClient]→[BasicHttpClient]を選択。

setup()内のwifiMulti.addAP()でSSIDとPASSWORDを設定しているので環境に合わせて書き換えるのを忘れずに。

こちらもシリアルモニタで、GETしてきたHTTPレスポンスメッセージを確認する。

GET成功!

地味だけどバッチリhttp://example.com/index.htmlのヘッダーと、画像では見えてないけどボディが返ってきました。

これでESP32から直接インターネットに接続して情報収集が可能になりました。

ちなみに初めて知ったのですが、example.comというドメインはIANAが管理しているサンプル用のドメインらしいです。教材とかで例として適当なドメイン、test.comとか使ってしまうとその先のサイトが悪意のあるサイトだったりしたら大変だ、ということで国際的な取り決めとしてexapmle.comのようないくつかのドメインを使うよう推奨しているみたい。(ちなみにtest.comも実在する会社のサイトらしい)

まとめ

無事Arduino IDEベースの開発環境も整い、単体での動作確認ができました。

サンプルプログラムも書き込んでみたりして、それらしい感じになってきた。

Lチカできてないじゃないかって?

ごっちゃ~

だって久しぶりに電子工作セットを取り出したらこんな有様だもの。

XBeeのはんだ付け失敗がフラッシュバックしてしまったのでLチカはまた次回。

Lチカだけだとつまらないので、まずはLCDを動かそうかな。いつまでもシリアルモニタじゃPC経由で動いてるみたいでイマイチだしね。

それではおやすみなさい。