目的
ESP32はdeep sleepモードに入れることで消費電力を抑えることができるが、deep sleep中もGPIO出力だけはHighに保ちたい。
(How to keep a GPIO output high even in deep sleep mode at ESP32)
環境
Arduino-IDEでESP32-DevKitCを使用
(Arduino-IDE is used.)
詳細
deep sleepモードに入ってもGPIO出力をHighに保つには以下のようにするとできる。
# include "driver/rtc_io.h"
gpio_num_t pin_led=GPIO_NUM_25;
void setup() {
rtc_gpio_init(pin_led);
rtc_gpio_set_direction(pin_led,RTC_GPIO_MODE_OUTPUT_ONLY);
rtc_gpio_set_level(pin_led,0);
delay(1000);
rtc_gpio_set_level(pin_led,1);
esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON);
esp_deep_sleep_enable_timer_wakeup(5 * 1000 * 1000);
esp_deep_sleep_start();
}
void loop(){
}
1秒間Lowにした後、Highにして直ぐに5秒間deep sleep状態になるが、その間LEDが点灯していることが確認できた。
(I confirmed that the LED is off for 1 second and kept on during 5 seconds of deep sleep.)
以下のguideを参考にした。
ESP-IDF Programming Guide
Deep_Sleep
RTC_GPIO