Internet, Windows, Linuxの最新技術をやさしく解説

  • concrete5
  • VirtualBox
  • Bootstrap
  • RaspberryPi
  • Arduino
  • Kindle
  • Pdic

ESP-WROOM-02/32,ESP-01 の実験 > 一定時間ごとに同じことを実行させる(DeepSleep)の実験

一定時間ごとに同じことを実行させる(DeepSleep)の実験

池の温度を5分おきにクラウドに送信し、クラウド上でデータをグラフ化したい場合、ESP-WROOM-02は消費電力が少ないとはいえ、電池をつなぎっぱなしだと数日しか持たない。5分間スリープさせて、5分ごとに10秒程度だけ動かせば、電池寿命が30倍伸び、計算上は2,3日だったものが2,3ヶ月になるわけだ。

しかもこのESP=WROOM-02には、DeepSleepという電流が10μAになる機能を備えているのでその実験を行った。

まずハードウエアだが、DeepSleepモードから復帰するとき 16 ピンがLOWになるので、その16ピンとリセットを接続し、22KΩでプルアップする必要があります。これを接続していないと、DeepSleepからは復帰しても実行が継続されるだけなので意味がない。

つぎにスケッチだが、一定時間ごと(ここでは5分おき)にリセットで復帰するわけだから、プログラムはすべて setup() 内に書き、loop() には書かない。普通は、setup() には初期設定だけ書き、本来の処理は loop() に書くので、間違はないように注意する必要がある。まあ仕組みがわかればloop() に書くこともあるが、初心者はすべてsetup()にかいで動作検証しましょう。

以下は私が動作試験したプログラムです。

LEDが2回点灯後、DeepSleepに入り、電流が止まります。時間を10秒に設定しているので、10秒後に電流が流れピン16がLOWになり、つながっているリセットが働き 再び setup() が実行されるということを繰り返す。データのアップロードはこのLEDの点灯部分を書き換えればよい。また実行間隔は、ESP.deepSleep() の最初の数値を調整して伸ばせばよい。なおこの時間が短いとなんとなく動作が不安定になる気がする。あまり短い時間でDeepSleepは使うことはないから問題ないが、お試しの時短すぎないよう注意しましょう。

#include <ESP8266WiFi.h>     // DeepSleep実行で必要

void setup() {
  pinMode(13, OUTPUT);

  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);
  digitalWrite(13, HIGH);
  delay(1000);

  ESP.deepSleep(10000000,WAKE_RF_DEFAULT);  // 10 sec
  delay(1000);
}
 
void loop() {
}

 

 

ESP-WROOM-02/32,ESP-01 の実験 > 一定時間ごとに同じことを実行させる(DeepSleep)の実験

ツイート
このエントリーをはてなブックマークに追加
  

Theme Made by Enrique Ramírez for Smashing Magazine. Powered by Concrete5
© 2018 tomoのconcrete5. All rights reserved. ログイン