ESP8266を使って電池駆動の環境モニターを作っています。今回、4つ目のバージョンとしてWi-FiのSSIDやAmbientのチャネルIDなどの情報を外部から設定できるようにしました。

ハードウェア構成

ハードウェアは3号機と同じです。マイコンとしてスイッチサイエンス製のESPr Developerを使い、センサーとして温湿度・気圧センサーのBME280と照度センサーのNJL7502Lを使っています。

回路図はこちらです。

プログラム

温度、湿度、気圧、照度を5分間隔で測定しています。電池で長期間駆動するために、測定と測定の間はdeep sleepします。ESP8266はWi-Fiに接続する時に大きな電力を消費するので、データーは毎回送信せず、6回分まとめて30分に1回Wi-Fiに接続し、送信するようにしています。この部分の処理は3号機と変わりません。

Wi-Fiに接続する際、WiFi.begin(ssid, password);を呼び出す代わりに、WiFiManagerというモジュールを使います。WiFiManagerは、次のような動きでSSIDとパスワードを外部から受け取ります。

  1. 保存されているSSIDとパスワードがあれば、ESP8266をステーションモードにして、そのアクセスポイント(AP)に接続を試みます。
  2. SSIDが保存されていないか、接続に失敗した場合、ESP8266をアクセスポイントモードにして設定ポータルを立ち上げ、SSIDとパスワードが入力されるのを待ちます。
  3. PCやスマホのブラウザーからSSIDとパスワードを入力するとWiFiManagerはESP8266をステーションモードに戻し、設定されたAPに接続します。

WiFiManagerはSSID、パスワードの他に追加情報も設定することができるので、AmbientのチャネルIDとライトキーを設定するようにしました。

SSID、パスワード、チャネルID、ライトキーの設定

ESP8266が立ち上がり、Wi−Fiに接続できなかった場合、ESP8266がアクセスポイントモードになります。例えばiPhoneで【設定】→【Wi-Fi】を見ていると、接続可能なAPリストの中に「Ambient setup」が現れます。

「Ambient setup」を選択すると、iPhoneがESP8266に接続し、次のような設定ポータルの画面が表示されます。

ここで一番上の「Configure WiFi」をタップすると、接続可能なAPリストが表示されます。

ESP8266を接続したいAPを選んでタップすると次のような設定画面が表示されます。

選択したAPのパスワードと、AmbientのチャネルID、ライトキーを入力し、「save」をタップします。するとESP8266はステーションモードに戻り、指定された情報を保存し、指定されたAPに接続して、処理を続けます。

WiFiManagerを使うことでWi-FiのSSID、パスワードに加えて、AmbientのチャネルID、ライトキーをプログラムに書き込まず、後から設定できるようになります。一つのプログラムでいろいろな環境に対応できるようになり、非常に便利です。

プログラムはGithubに公開しました。

* https://github.com/TakehikoShimojima/SimpleWeatherStation