1.鉄の介入
まず、ESP-01(およびこの状況で最も一般的で合理的である場合)の場合、上の写真に示すように、esp8266の8本の脚からRSTピンまでジャンパーを作成し、LEDを取り外す必要があります。 ジャンパーを作成しないと、モジュールはディープスリープモードを終了しません。
2.プログラミング
Windows用のキットをインストールすると、 geektimesで良い記事が作成されました 。
例として、 examples \ dht22_thingspeakプロジェクトを取り上げます 。 温度と湿度を送信する目的に合わせて修正するのは非常に簡単です。
プロジェクト全体から、メインユーザーコードを含むuser_main.cと 、設定を含むuser_config.hが必要です 。
#define USE_WIFI_MODE STATION_MODE #define WIFI_CLIENTSSID "wifi_net_name" #define WIFI_CLIENTPASSWORD "wifi_net_pass" #define DATA_SEND_DELAY 1000 /* milliseconds */ #define THINGSPEAK_SERVER "narodmon.ru"
これは、 user_config.hファイルの内容です。 送信の遅延を変更する必要はありませんが、必要に応じて変更できます。 しかし、単一のディスパッチのために-必要ではありません。
人気のある監視ではなく、何か他のものが必要な場合は、サーバーをその行に記述してください。 ラズベリーのIPがあります。
次に、 dht22_cbプロシージャでuser_main.cファイルのコードを変更します。
os_sprintf(data, "http://%s/post.php?ID=xx-xx-xx-xx-xx-xxx&T1=%s&H1=%s", THINGSPEAK_SERVER, temp, hum);
この行は、送信する必要があるすべてを設定します。 一般的な監視の場合、MACアドレスを自動的に取得できますが、私の意見ではこれは不要です。一度書くのは簡単です。
さらに同じファイルで、 user_initプロシージャで、休止プロシージャのタイマーを設定します。
os_timer_disarm(&sleep_timer); os_timer_setfn(&sleep_timer, sleep_cb, NULL); os_timer_arm(&sleep_timer, 5000, 1); //5s
ここで、 5000はミリ秒単位の時間であり、1は繰り返しです。
さて、最後の、実際には、まさに冬眠の手順です。 この場合、10分。
static ETSTimer sleep_timer; LOCAL void ICACHE_FLASH_ATTR sleep_cb(void *arg) { os_timer_disarm(&sleep_timer); system_deep_sleep(600*1000*1000);//second*1000*1000 }
その結果、10分間スリープし、ウェイクアップし、DHT22(GPIO2)から必要な場所にデータを送信し、次の10分間スリープするモジュールがあります。
何が関係しているのかがわかるまで、10分泳ぐ±30秒。
3.測定する
私には実験室やメガテストはありません。 すべての測定は、安価な中国のテスターによって適切な精度で行われました。
アクティブモード(目覚めからスリープ状態へ)-240mAから360mA。 5〜10秒の範囲の平均300mA。
スリープ中-<1mA。
実際、テスターはいくつかの数字を表示しようとしましたが、その精度は非常に疑わしいため1mA未満です。 しかし、指の電池で駆動する場合、1mAは価値ある結果だと思います。
4.まとめ
単純なスタンドアロンの温度センサーを計画する場合、このプロジェクトの多くを捨てることができます。 少なくとも、ターミナルへの出力は不要です。
私はバッテリーの実際の寿命を判断することを想定していません-そのような操作のための時間が短すぎます。
すべてはインターネット上にあり、執筆者の財産です。 まとめて、キーボードのボタンを押す方法を示しました。
ソース
ESP8266コミュニティフォーラム
低電力ESP8266-78マイクロアンペアでスリープ
ESP8266 SDK APIガイドv1.0.0