Long Life Project v3.1b- 201205

v3.1aは、24日目で三端子レギュレータの故障で止まってしまいました。三端子レギュレータを交換後、v3.1bにバージョンアップすることにしました。

v3.1bではESP32のRTPメモリを使って、温度変化が小さい時はデータ通信しないようにします。

Global

前回アップロードした温度を格納する変数を lastTemp とします。

RTC_DATA_ATTR int   bootCounter = 0;
RTC_DATA_ATTR float lastTemp = 0;

setup

RTCメモリ=オフをコメントアウトします

setup(){
  esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
  esp_deep_sleep_pd_config(ESP_PD_DOMAIN_MAX, ESP_PD_OPTION_OFF);
  //esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_OFF); 
  //esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_FAST_MEM, ESP_PD_OPTION_OFF);
}

loop

前回値と今回値の差(d_Temp)を求め、|d_Temp|>0.2 の時にのみ測定値をアップロードします。

loop(){
  float d_Temp = 0.0;
  bootCounter ++ ;
  d_Temp = lastTemp - temp_31;
  d_Temp = sqrt(d_Temp*d_Temp);

  if(Vc>3.0){                      //<---過放電保護
    if(d_Temp > 0.2){         //<---温度が0.2C変化したらUpLoad
      t1=millis();
      YN_Wifi = setupWiFi2();    //<---WiFi接続
      t2=millis()-t1;
      lastTemp = temp_31;    //<---lastTempを更新
    }
  }
  mk_String();
  if(YN_Wifi==1)  Post2();       //<---データ送信
 

  if(YN_Wifi==1) WiFi.disconnect(); 
  sleepDisplay();       //<---SSD1306 をSleep
  //Display_Pic3a(1);

  DeepSleep();
  delay(1000);
}

実測

測定間隔=15minなので、17-21時の間は半分近く間引けています。これで1ヵ月稼働いけるかな。

f:id:kainuma-k5:20201205231227p:plain
201205