ESP WROOM 02にArduinoのスケッチを書き込むとATコマンドを受け付けなくなります。これ知らなくてしばらく格闘していました。
オリジナルのファームウェアを書き戻すとATコマンドが使えるようになるそうです。手順が少しめんどくさいので未確認です。
参考
「ArduinoのESP8266をATコマンドが使えるように戻す」
wakaba-1027さんの「https://ameblo.jp/wakaba-1027/entry-12326885810.html」
ラジオペンチさんの「ESP-WROOM-02をATコマンドで動かす」
Wifiのサンプルプログラム(Arduino 1.8.5 / esp8266 2.4.1)
[ファイル]-[スケッチ例]-[ESP8266WiFi]-[WiFiClientBasic]
WiFiMulti.addAP("SSID", "passpasspass");
の[SSID]、[passpasspass]を利用するWiFiアクセスポイントのものに書き換え。IPアドレスはWiFiアクセスポイントのDHCPサーバーから割り当てられます。
const char * host = "192.168.1.1"; // ip or dns
の部分はESP8266自身のIPアドレスではなくてTCPの接続先で、書き換えなくてもWiFiがつながったかどうかは確認できます。
Arduinoのシリアルモニタの出力
Ambientのサンプルプログラム
WiFiがつながったらサーバーに接続と行きたいところですが、WindowsでHTTPサーバーを立てるのは少しめんどうです。こういうときはMacやLinuxマシンがあると楽なんですが。(全然触っていないラズパイがあった・・・)Ambientという便利なサービスが公開されいるので利用させていただきました。
手順はAmbientのサイトで詳しく紹介されていますが、一応メモです。
●Ambientのユーザー登録
●チャンネルを作る
●Arduino IDEにAmbientのライブラリをインストール https://github.com/AmbientDataInc/Ambient_ESP8266_lib
●ライブラリにESP8266(ESP WROOM 02)用のサンプルプログラムが用意されています。[ファイル]-[スケッチ例]-[Ambient ESP8266 lib]-[ESP8266]-[Ambient ESP8266]
これは、気温・湿度センサーのHDC1000を使ったサンプルプログラムです。HDC1000のモジュールを持っているので使ってみました。
ブレッドボード配線図
●ssid, password, channelId, writekeyを書き換え
●Light Sleepモードをコメントアウト
//wifi_set_sleep_type(LIGHT_SLEEP_T);
なぜだかわかりませんが、私の環境ではLight Sleepモードを指定すると、WiFiのネゴシエーション中にSleepモードに入ってしまってWakeUpしません。setup()内の最後に移動すればWiFi接続は確立しますが、やはりSleepしたあとWakeUpせず。スリープモードを指定しないか、以下のようにModem Sleepモードを指定すれば動作しました。
wifi_set_sleep_type(MODEM_SLEEP_T);
wifi_set_sleep_typeでスリープモードを指定すると自動的にSleepモードに入るそうですが(参考「ESP8266 (ESP-WROOM-02) で消費電力を抑えるには (スリープモードまとめ) 」)Light Sleepモードでは、なんらかの割り込みをかけないとWakeUpしないのでしょうか?
Sleep無効とModem Sleepモードの電源電流
電源電流を測定するために、電源ラインに直列に0.1ΩのRを入れ、OWON B35 のDC/mVモードでRの電圧降下を測定してロギングしました。(1mV = 10mAで換算)
ESP8266のIO0は3.3Vに接続(実行モード)、OWON B35のサンプリング周期は1秒で測定しましたが、なにか間違えている感じです。
wifi_set_sleep_type()なし
Avg 5.708966667 mV
Min 2.2 mV
Max 7.37 mV
wifi_set_sleep_type(MODEM_SLEEP_T)
Avg 5.591466667 mV
Min 1.75 mV
Max 7.86 mV
<追記:2018.08.02>
WiFi接続を行うと、デフォルトで「Modem Sleep」になるそうです。
wifi_set_sleep_type(NONE_SLEEP_T);
と明示的にSleep Modeを無効にして電源電流を測定しました。
wifi_set_sleep_type(NONE_SLEEP_T)
Avg 7.1394 mV
Min 7.1 mV
Max 9.53 mV
</追記>
Deep Sleepモードも含めてもう少し試してみようと思います。
ambientのグラフ
メモ:
ESP8266 ArduinoのAPI他ドキュメント
「Welcome to ESP8266 Arduino Core’s documentation! https://arduino-esp8266.readthedocs.io/en/latest/」
esp8266 libraryのインストール先(Windows10)
<ユーザーフォルダ>\AppData\Local\Arduino15\packages\esp8266
ESP8266 Low Power Solutions
https://www.espressif.com/sites/default/files/9b-esp8266-low_power_solutions_en_0.pdf
0 件のコメント:
コメントを投稿