Skip to main content

Deep sleep

Using deep sleep matters if you want your Inkplate 13SPECTRA sketch to get the most out of a battery. E-paper doesn't need power to hold the image on screen, so Inkplate 13SPECTRA draws little to no current in deep sleep mode, and a sketch can run for months on battery.


#define uS_TO_S_FACTOR 1000000 // Conversion factor for micro seconds to seconds
#define TIME_TO_SLEEP 20 // How long ESP32 will be in deep sleep (in seconds)
void setup(){
// your code
///...
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR); // Activate wake-up timer -- wake up after 20s here
esp_deep_sleep_start(); // Put ESP32 into deep sleep. Program stops here.
}

esp_sleep_enable_timer_wakeup()

This function enables wakeup by timer.

Returns type: int

Returns value: Returns ESP error code

Function parameters:

TypeNameDescription
uint64_ttime_in_usWakeup time in microseconds.

esp_deep_sleep_start()

This function enters deep sleep with the configured wakeup options.

Returns type: None


Wake on button press

To wake up using the Wake button, call the ESP32 function esp_sleep_enable_ext0_wakeup() before putting it to sleep.

// Go to sleep for TIME_TO_SLEEP seconds
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);

// Enable wakeup from deep sleep on GPIO 18 (wake button)
esp_sleep_enable_ext0_wakeup(GPIO_NUM_18, LOW);

// Go to sleep
esp_deep_sleep_start();

esp_sleep_enable_ext0_wakeup()

This function uses the external wakeup feature of the RTC_IO peripheral.

Returns type: int

Returns value: Returns ESP error constant

Function parameters:

TypeNameDescription
gpio_num_tgpio_numGPIO number used as wakeup source. Only GPIOs with RTC functionality can be used.
intlevelInput level which will trigger wakeup.

Full example

Check out the full examples from this page, along with many more usage options below:

Inkpate13SPECTRA_Wake_Up_Button.ino

Full example of waking Inkplate 13SPECTRA from deep sleep using the onboard wake button.