본문 바로가기
Study/ESP8266(WIFI),ESP32(BLE,WIFI)

ESP32 Sleep Mode와 Wake up

by Answer Choi 2019. 12. 28.
반응형

무선제품의 경우 배터리 관리는 필수입니다.

 

따라서 사용하지 않을경우에는 Sleep Mode를 사용하여 전력소모를 줄여야 합니다.

 

https://lastminuteengineers.com/esp32-sleep-modes-power-consumption/

ESP32의 경우 총 5가지 모드가 있으며, 모드에 따라 배터리 소모량이 달라집니다.

 

배터리 관리를 위한 항목은 총7가지 이며, 모드에 따라 사용하는 항목들이 달라집니다.

 

Active 모드는 당연히 모든 기능을 사용합니다.

 

베터리 소모는 160~260mA를 소모합니다.

두번째는 Modem Sleep 모드로 무선쪽과 주변기기를 모두 꺼버립니다.

 

전력소모는 3~20mA로 확 떨어집니다.

 

위 코드를 통해 Sleep Mode에 들어갈 수 있습니다.

 

세번째는 Light Sleep 모드로 Modem Sleep과 비슷합니다.

 

더블어 클럭펄스를 꺼서 회로의 일부를 비활성화시킵니다.

esp_light_sleep_start();

위 명령어로 sleep mode에 진입하며, 전력소모는 0.8mA로 떨어집니다.

네번째는 Deep Sleep모드입니다.

 

여기서는 CPU마저 꺼버립니다.

 

esp_deep_sleep_start();

명령어는 위와 같으며, 전려소모는 10uA입니다.

마지막으로 hibernation mode입니다.

 

RTC를 제외한 모든 부분을 꺼버립니다.

 

전력소모는 2.5uA입니다.

 

Wake up 방법도 여러가지가 있지만,

 

버튼을 이용하여 인터럽트로 Wake up하는 방법을 알아보겠습니다.

 

esp_sleep_enable_ext0_wakeup(GPIO_NUM_32,1);

먼저 setup()쪽에 wake up 할 방법을 정합니다.

 

GPIO 32번이 HIGH가 되면 Wake up되도록 선언합니다.

if(phoneDisCnt>=60){
	esp_deep_sleep_start();
    phoneDisCnt=0;
}

전 1초 타이머를 설정하여 60초가 넘도록 폰과 연결이 되지 않으면 deep Sleep모드로 진입하도록 합니다.

 

위 그림과 같이 1초 간격으로 폰과 연결이 되지 않을때마다 카운트를 합니다.

 

60초가 되자 멈춥니다.

 

Deep Sleep모드로 진입하였습니다.

GPIO 32번이 HIGH가 되면 ESP32는 Deep Sleep Reset을 합니다.

 

이제 다시 정상모드가 되고 다시 카운트를 시작합니다.

 

 

 

반응형

'Study > ESP8266(WIFI),ESP32(BLE,WIFI)' 카테고리의 다른 글

ESP32 ADC  (2) 2020.03.12
ESP32 타이머 인터럽트  (2) 2019.12.13
ESP32 하드웨어 시리얼 변경  (0) 2019.12.13
ESP32 PWM사용하기  (0) 2019.12.11
ESP8266 OTA(Over The Air) 사용하기 - 업데이트하기  (11) 2019.03.18

인기글