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