TOOLS GAMES DEVLOG DOCS ABOUT CONTACT
HOME > DOCS > Embedded / IoT > 초저전력 배터리 운용을 위한 ESP32 Deep Sleep 및 타이머/외부 GPIO 웨이크업
Embedded / IoT Beginner ESP-IDF / Arduino

초저전력 배터리 운용을 위한 ESP32 Deep Sleep 및 타이머/외부 GPIO 웨이크업

평상시 150mA 이상 소모하는 전력을 10μA 수준으로 떨어뜨리고, 타이머 또는 터치/버튼 인터럽트로 깨어나는 저전력 센서 노드 펌웨어 설계.

#Embedded #ESP32 #DeepSleep #LowPower #PowerManagement
핵심 개념Deep Sleep에 진입하면 CPU 메인 코어, 고속 램, Wi-Fi/BT 무선 통신부가 완전히 차단되고 오직 ULP(초저전력 보조 코어)와 RTC 컨트롤러만 살아남아 마이크로암페어(μA) 단위의 전류만 소모합니다.

1. Deep Sleep 타이머 및 GPIO 웨이크업 C++ 코드

deep_sleep_node.ino
#include <esp_sleep.h>

#define TIME_TO_SLEEP_SEC  60        // 60초 수면
#define uS_TO_S_FACTOR     1000000ULL

RTC_DATA_ATTR int bootCount = 0; // RTC 메모리에 저장되어 수면 후에도 유지됨

void setup() {
    Serial.begin(115200);
    bootCount++;
    Serial.printf("[Boot Count] %d 회 부팅되었습니다.\n", bootCount);

    // 1. 센서 측정 및 전송 작업 수행
    // ReadAndSendSensorData();

    // 2. 타이머 웨이크업 소스 설정 (60초)
    esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP_SEC * uS_TO_S_FACTOR);

    // 3. 외부 버튼(GPIO 33번 LOW 시) 웨이크업 추가
    esp_sleep_enable_ext0_wakeup(GPIO_NUM_33, 0);

    Serial.println("Deep Sleep에 진입합니다...");
    esp_deep_sleep_start();
}

void loop() {}

참고자료 & 관련 링크