1年半ぶりに触ってみた ESP8266 系列はとても便利になっていました。様々な接続機器やデータ出力先の他、スタンドアロンでもサーバとして多機能で、初期設定も簡単かつ安定。いつか出ないかな、とずぼらなボク達が待ち望んでいたファームウェア ESP Easy が本当に出ていました。
市販のルータの設定をWebUIでいじる感覚で、今までシコシコとコーディングの後、いちいち焼き込んでいたセットアップが済んでしまいます。
まずはこちらのページから、焼き込むバイナリをダウンロードします。今回使用するESP-12では4MB版を使います。
ESP-12Eをフラッシュモードにした後、次のコマンドで焼き込みます(母艦はUbuntu 16.04使用)。
1 |
$ sudo esptool -vv -cd nodemcu -cb 115200 -bz 4M -cp /dev/ttyUSB0 -ca 0x00000 -cf Downloads/ESP_Easy_mega-20190315_normal_ESP8266_4M.bin |
再起動の後、ESP Easyは自身がオープンモードのAPとなっているので、スマホ等で「esp_0」と言うAPを見付けて接続。そしてブラウザから192.168.4.1へアクセスするとWiFiを選ぶウィザード画面で今後使用したいAPとパスフレーズを入力すると、ESP Easyは接続を試みます。成功すると取得された新しいIPアドレスがこのように表示されるので、以後はそちらへアクセス。
Hostname等の基本的な設定の他、Tools→AdvancedではNTPも設定出来ます。
まずはI2C接続されたセンサを検出してみます。
正しく検出されていることを確認したら、センサを設定します。気圧では高度補正を施すことも出来ます。
設定が終わったら、デバイス一覧で正しく計測されていることを確認します。
スタンドアロンで使用するならここまででも十分ですが、ThingSpeakとの連携をする場合は、コントローラの設定を行います。
複数のセンサをThingSpeakの同一チャンネルに送出する場合、各デバイスのインデックス(IDX)を順序良く振る必要があります(図5をもう一度参照)。
ThingSpeakをのんびり眺めて正常に受信出来ていることを確認しましょう。
長期連続運転で安定性を確認したいので、ブレッドボード上に組んでしばらく放置してみるつもりです。
バッテリ運用では重宝するSleep機能も備えているので、今後はそちらも試してみたいと思います。
ThingSpeakへ送信するインターバルの設定は、てっきりControllers内のThingSpeak設定のところでまとめてセットするのかと思ったら、どうもDevice毎のIntervalで設定する模様。複数デバイスある場合は、両者を同じインターバルにすると同時に送信しようとして鯖に蹴られるので、微妙に異なる値にしておく。少なくともこうすることで私は、ThingSpeak側でこぼれることなく送れるようになりました。
https://www.letscontrolit.com/forum/viewtopic.php?t=2878