LoginSignup
1
0

More than 3 years have passed since last update.

[Arduino]短間隔におけるdeep sleepの有効性

Posted at

以前、deep sleepをつかってLチカをしたのですが、
1秒間に2回,400[msec]程度のdeep sleepではかえって再起動時のオーバーヘッドでバッテリー消費が激しいのではないかと思い、計測してみることにしました。

まず、電圧変化を検知したらアップするカウンターを作成しました。LCDライブラリは割愛します。

counter.cpp
#include <Arduino.h>
#include "AQM1602LCD.h"

AQM1602LCD* pLcd;
long cnt=0;
int previous=LOW;

void cntUp(){
  cnt++;
  pLcd->SetCursor(0,0);
  pLcd->WriteString(String(cnt));
  delay(10);
}

void setup() {
  Serial.begin(9600);
  Serial.println("start");
  Wire.begin();
  pLcd = new AQM1602LCD();
  // put your setup code here, to run once:
  pLcd->SetCursor(0,0);
  pLcd->WriteString("0              ");

  pinMode(2, INPUT);

}

void loop() {
  // put your main code here, to run repeatedly:
  int val = digitalRead(2);
  if(val != previous){
    Serial.println("chg");
    if(val==LOW)
      cntUp();
    previous = val;
    delay(10); // チャタリング防止用
  }
}

これを別のArduinoで起動しておき、
前回のdeep sleep Lチカの
LEDの足とつないで光った回数をカウントします。
電源としては3.7[V] 300[mAh] のリポバッテリーを使用しました。

deep_sleep_main.cpp
#include <Arduino.h>

RTC_DATA_ATTR bool bootCounter = false;

void setup() {
  pinMode(4,OUTPUT);
  pinMode(13,OUTPUT);
  Serial.begin(115200);
  Serial.println("ON");
  digitalWrite((bootCounter = !bootCounter)?13:4,HIGH);
  delay(100);
}

void loop() {
  esp_sleep_enable_timer_wakeup(400 * 1000);  // wakeup every 0.4secs
  esp_deep_sleep_start();  
}

光った回数は64513回、動作時間にして17時間55分13秒でした。
IMG_9899.jpg

次にdeep sleepを使わず同じ動作を行うプログラムを用意し、同様にカウントしました。

delay_main.cpp
#include <Arduino.h>

void setup() {
  pinMode(4,OUTPUT);
  pinMode(13,OUTPUT);
  Serial.begin(115200);
}

void loop() {
  Serial.println("ON");
  digitalWrite(13,HIGH);
  delay(100);
  digitalWrite(13,LOW);
  delay(400);
  Serial.println("ON");
  digitalWrite(4,HIGH);
  delay(100);
  digitalWrite(4,LOW);
  delay(400);
}

光った回数は29666回、動作時間にして8時間14分26秒でした。
IMG_9904.jpg

試行回数はそれぞれ一回のみですが、倍以上の開きが出たので、短時間での頻繁なdeep sleep も効果はあるとみてよさそうです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0