Long Life Project v3.1- 201108

チャコメーターv3.1が無事にVc<4.5Vまで動きました。電圧の変動を見てみます↓。
v3.0の4倍、4週間以上稼働すると思っていましたが、その半分程度でした。

f:id:kainuma-k5:20201108153144p:plain
201104


v3.1aは、OLEDをSleep状態にしたいと思います。↓を参考にしました。
ラジオペンチ 0.96インチOLEDのスリープ特性、他

Setup()で起動画面を表示したあと、bootcounter の1桁目が1の時、SleepDisplay()を実行するようにしました。bootCounter は、RTC_DATA_ATTRを付けてスローメモリ領域を使うつもりだったのですが、うまくいきませんでした。DeepSleepから目覚める度にリセットされてしまいます。なんでだろう?

ソース(loop)

void loop(){
  int YN_Wifi;
  bootCounter ++ ; 
  measure_Vc(); 
  read_SHT31(); 
 
  if(Vc>4.5){                      //<---過放電保護
    t1=millis();
    YN_Wifi = setupWiFi2();
    t2=millis()-t1;
  }
  mk_String();
  if(YN_Wifi==1){
    Post2(); 
  }

  if(YN_Wifi==1) WiFi.disconnect();
  if(bootCounter%10 == 1){
    sleepDisplay();
  }else{
    wakeDisplay();
    Display_Pic3a(1);
  }

  DeepSleep();
  delay(1000);
}

SSD1306のSleep関数

↑のHPの関数をコピペしました。

void wakeDisplay() {
  Wire.beginTransmission(0x3C);
  Wire.write(0x80);
  Wire.write(0xAF); 
  Wire.endTransmission();
}

void sleepDisplay() { 
  Wire.beginTransmission(0x3C);
  Wire.write(0x80);
  Wire.write(0xAE); 
  Wire.endTransmission();
}