*

IoT開発(5)
ESP-WROOM-02をDeepSleepで長時間駆動させる

公開日: : 最終更新日:2020/08/01 Arduino, 開発, 電子工作

どもです。

この記事は、以下の記事の続きです。
IoT開発(1)-ESP-WROOM-02のセットアップ
IoT開発(2)-ESP-WROOM-02で気温測定
IoT開発(3)-ESP-WROOM-02でデータを送信
IoT開発(4)-ESP-WROOM-02を電池で駆動

本エントリでは、ESP-WROOM-02を電池で長時間させる方法について書きます。

1.DeepSleep

ESP-WROOM-02には、「DeepSleep」というモードがあります。
ESP-WROOM-02/ESP8266の仕様書によれは、このモードは以下のような場合に使用します。

  • WiFi接続を維持する必要が無い
  • データ送信の間隔が長い


具体例として、

  • 100秒ごとに温度を測定する
  • 300秒スリープし、APに接続するために0.3~1.0秒を要する

という場合が挙げられています。

1.1.復帰の方法

DeepSleepモードから復帰する方法は、ボタンでの復帰とタイマーでの復帰があります。
今回のエントリでは、「タイマーでの復帰」を採用します。

2.回路

DeepSleepモードを使用する際には、回路をこれまで使用してたものから変更する必要があります。
変更点は、「IO16」を「RST」につなげる、という点です。
「IO16」と「RST」をつなげることで、DeepSleepモードから復帰させられるようになります。
具体的な回路図は、下記になります。


iot_at_home_005_esp_wroom_02_001

3.プログラム

DeepSleepモードを使用するにあたり、コードに対して変更を行っています。
変更した後のコードは、下記になります。

3.1.コードの解説


簡単ですが、変更点を中心にコードを解説します。
これまでのコードからの主な変更点として、下記が挙げられます。

  • wifi_set_sleep_type()の削除
  • 測定結果の判定~やり直し


3.1.1.wifi_set_sleep_type()の削除

これまでのコードでは、setup()の先頭で、wifi_set_sleep_type()メソッドを削除しています。
wifi_set_sleep_type()メソッドで指定可能な引数は、以下のように定義されています。

見ての通り、DeepSleepモードに対応する値がありません。
今回の目的である、DeepSleepモードを使用するにあたり、この設定は不要なので、削除しました。

3.1.2.測定結果の判定~やり直し

これまで使用してきた温度センサーMDK001(ADT7310)の測定範囲は、-55℃~+150℃となっています。
これまでのエントリで使用してきたプログラムでは、この判定を行わず、取得できた値をそのまま出力/送信していましたが、それではまずいので、今回の機に修正を行っています。
なお、範囲外の値を取得した場合には、「正常な値が取得できるまで測定をやり直す」という動作にしています。
この処理についても、測定の再実行の回数に制限を設けるなどの対応が本来は必要です。

4.測定結果

ここまでで書いてきた回路、およびプログラムを使用して、1日気温を測定した結果をグラフ化したのが、下記です。



iot_at_home_005_esp_wroom_02_002

途中で値が「0」に落ちてしまっています。
しかしそれ以外は、温度が測定ができています。
最高気温も30℃を越えており、とても暑い一日でした。
測定結果も、その体感に一致しています。

5.まとめ

今回、ESP-WROOM-02を電池駆動させ、MDK001で気温を測定しました。
電池駆動させるので、DeepSleepモードで動作させるようにしたところ、1日以上、連続でデータが測定できるようになりました。
しかし、何日までデータが測定できるかは分かっていません。
引き続きデータを測定して、測定可能な期間を確認していきます。

ではっ!

ex.測定結果

測定結果が出ました。
以下のエントリで詳細を書いていますので、コチラもあわせて読んでいただけたら幸いです。
IoT開発(11) ESP-WROOM-02を長時間駆動させた

関連記事

think_about_utest

VisualStudioで実行した単体テストの結果の出力(2)-出力ファイルの読める化

どもです。 前回の続きです。 前回は、VisualStudio/C#での単体テストの効率

記事を読む

no image

C言語でEV3開発(15)-TOPPERS/HRP2 EV3 で PID制御

どもです。 今回のエントリーは、コレまでのエントリーから内容を変えて、モーターの動作の制御をします

記事を読む

c_sharp_eye_catch

Windowsでのカバレッジ測定-OpenCoverageを使ってみた

どもです。 以前、OpenCppCoverageを使用してWindows上でカバレッジ測定する方法

記事を読む

MY_MFC_LOGO

MFCプログラミング(4):Enter(ESC)キーでダイアログが閉じないようにする

どもです。 今回は、キーボード入力の処理、特にEnterキー/ESCキーでダイアログが閉じられるこ

記事を読む

raspberry-pi

ライブラリでRasPiのピンにアクセス(2)-SPIのインターフェース追加

どもです。 前回のエントリでは、RaspberryPiのピンをより簡便に使用できるようにするた

記事を読む

no image

RaspberryPiのOS:RaspbianをNOOBSでセットアップしてみた

どもです。 今回の内容は、「今更!?」ですがNOOBSでRaspbianをセットアップしたとい

記事を読む

raspberry-pi

RaspberryPi3を購入しました

どもです。 突然ですが、「Raspberry Pi3 model B」を購入しました。 今回のエ

記事を読む

RasPi_Qt

Rasbianの新しいバージョンが出たので、クロス環境を更新してみた。(その後)

どもです。 前回、Linux/RaspberryPiでのQt(QtCreator)のクロス開発

記事を読む

Arduino_Logo

1台のarduinno nanoで割込みとSPIの同時使用

どもです。 先日手に入れたArduino nano(中華)で遊んでいます。 今回、この1台のAr

記事を読む

RasPi_Qt

QtでRaspberryPi/GUI開発(4):イベントハンドラの設定

どもです。 前回のエントリーで、「タッチスクリーンを買った」と書きました。 今回からは、このタッ

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

arduino_relay_switch_002_ae_g5v_drv_eye_catch
Arduinoでリレースイッチ(2)-AE-G5V-DRV

どもです。 前回の記事では、「フォトカプラリレー」を使用したLチ

tlp222af_001_eye_catch
Arduinoでリレースイッチ(1)-TLP222AF

どもです。 つい先日、やっとのことでリレースイッチを手に入れるこ

c_sharp_eye_catch
外部からMariaDbにアクセスする(2)-C#からMariaDbにアクセスする。

どもです。 前回のエントリで、外部からMariaDbにアクセスす

c_sharp_eye_catch
外部からMariaDbにアクセスする(1)-データベースの設定

どもです。 今回は、Linux上のMariaDbにWindows

think_about_utest
middle_unit
最小…よりも(ほんの)少し大きいテストフレームワーク

どもです。 今回は、単体テストのフレームワークについて書きます。

→もっと見る

PAGE TOP ↑