2023年1月15日 星期日

ESP32的深度睡眠與喚醒

在前篇ESP32改裝Lachino自動感應抗菌除臭機中, 在使用電池時在活動模式(Active mode)下運行並不理想, 因為電池的電量很快耗盡. 所以就決定試看看用深度睡眠模式(Deep Sleep mode)的方式來減少運行的功耗, 再利用GPIO外部喚醒方式來運作. 


ESP32有基本的sample範例

 esp_sleep_wakeup_cause_t wakeup_reason;

 wakeup_reason = esp_sleep_get_wakeup_cause();

 esp_sleep_enable_ext0_wakeup(GPIO_NUM_33,1); //1 = High, 0 = Low




注意只有橘色RTC_GPIO可以當作外部觸發的腳位, 因為Deep_sleep_mode 只有RTC memory跟RTC周邊還在工作

我的 PIRPin = 33; 當作外部觸發的腳位

if(motion_off==50000){

    vTaskSuspend(hled);

    Serial.println("esp_deep_sleep_start");

    esp_deep_sleep_start(); 

}

當偵測腳為低準位時計數至50000時就關閉其他功能並開始深度睡眠esp_deep_sleep_start(); 



沒有留言:

張貼留言