前回の続きです。Wi-FiやBluetoothに対応したESPRESSIF Systems社のマイコン「ESP32」シリーズを使ってみるという話です。前回は、「ESP32 DevKitV1(以下「DevKitV1」と略記)」を使って、Lチカ動作確認を行いました。今回は、無線でのコントロールをやってみたいと思います。プログラミング環境としては、これまでと同じくMacBook ProでArduino IDE 2.3.7を動かして使うことにします。
Wi-FiとBluetoothのどちらを先にやるかを考えながらネットで情報を集めていたところ、carterさんの工作室というサイトに「ESP32で『LチカWebサーバ』を作る」というページを見つけました。Wi-Fi経由でのLチカができるWebサーバをDevKitV1にプログラムしておいて、これをWi-Fiを使ってLAN接続して、別の端末からWebブラウザでアクセスするようなイメージです。これならば簡単にできるのではないかと考えて、これを参考にしてWi-Fiでの動作実験をやっていくことにしました。
#他に「ESP32で『LED点滅サーバ』を作る」や「ESP32で『なんちゃってWebサーバ』を作る」というページもありました。手順を追ってやってみたい場合は、参考にされるとよいと思います。
プログラムのポイントとなるのは、Wi-FiでLANに入る設定の仕方とWebブラウザでレスポンスを受け取って、どのように処理するのかといったところではないかと思います。参考にしたプログラムでは、「wifisecret.h」という.hファイルを作っておいて、その中に「SSID(「_SSID」の行)」と「パスワード(「_PASS」の行)」の設定を書き込んでいます。実際には、自分が使っているLAN環境に合わせて設定を書き込む必要があります。その上で、LANに入るためには「IPアドレス」が必要になるのですが、それをメインプログラム内の「IPAddress …」以下の3行で設定しています。一般的には例として示されている設定のままでも大丈夫ではないかと思いますが、こちらも自分が使っているLAN環境に合わせて変更する必要があるかもしれません。
#「リスンポート」は、23番ではなく80番(listenPort=80)で正しいと思います。
次に、別の端末からWebブラウザでアクセスした際に、レスポンスがどのように処理されるのかということですが、Arduino IDEでのプログラムは、「C++」が使われているので、さまざまなWebブラウザで利用されているような「スクリプト言語」などを介さずに、直接「/on」や「/off」を返してLEDをコントロールするような仕組みになっているようです。ここまでで、プログラムの仕組みが読み取れたので、実際にコンパイル&書き込みをやってみます。「ボード:」を「ESP32 Dev Module」に、「ポート:」を「/dev/cu.SLAB_USBtoUART」に設定してから「→(コンパイル&書き込み)」をクリックしました。終わったところで、DevKitV1側には見た目上の変化はありません。MacBook ProでWebブラウザを開いて「http:」でIPアドレスを開くと、しばらく待たされたあと、無事にWebページが表示されてLEDのON/OFFができるようになりました。
気持ちがよくなって、Wi-FiだけならESP8266(ESP12)系でも動くのではないかと考えて、自宅に在庫があったOSOYOOの「NodeMCU v1.0」でもやってみました。設定などの違いについては、「ArduinoIDEを使ったNodeMCUの入門編」に詳しく書かれていたので、簡単に置き換えることができました。変更したところは以下のとおりです。
#ボードマネージャで、「esp8266」をインストールしておく必要があります。
〈Arduino IDE設定〉
- 「ボード:」…「esp8266」→「NodeMCU 1.0(ESP-12E Module)」
- 「ポート:」…「/dev/cu.usbserial-xxxxx」
〈プログラム変更〉
- 「#include "WiFi.h”」→「#include "ESP8266WiFi.h"」
- 「#define LED_PIN 12」→「#define LED_PIN 8」
コンパイル中に若干エラーは出たものの、最後までコンパイルされて書き込みも終了しました。しかし、Webブラウザーでアクセスを試みると、「ページを開けません。」とメッセージが出てしまいました。Wi-Fi側のLEDが点滅しているので、つながっているかどうかは別にして、Wi-Fi自体は動いている雰囲気には見えます。今回は、ここまでで手詰まりな感じです。
#Qiitaで@kudo453さんの「WIFI Lチカ ESP8266 NodeMCU1.0(ESP-12E)」というページを見つけました。時間をみつけてやってみたいと思います。
「macOSで「ESP32」を使ってみる」
- まずは情報の整理から
- ESP32 DevKitV1を使えるようにする
- ESP32 DevKitV1をBluetoothで操作してみる
