Skip to main content

Deep sleep

Using deep sleep on Inkplate 6 is key to writing sketches that maximize battery efficiency. Since e-Paper does not require any power to retain the displayed image, Inkplate 6 can use little to no current while in deep sleep mode, allowing a sketch to run for months on battery.

ℹ️
If all peripherals are in sleep mode, deep sleep current will be around 20-30µA

Simple deep sleep​

Check how deep sleep works with the example below:

#define uS_TO_S_FACTOR 1000000ULL // 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
///...
rtc_gpio_isolate(GPIO_NUM_12); // Isolate/disable GPIO12 on ESP32 (only to reduce power consumption in sleep)
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 the device by pressing the Wake button, use 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 36 (wake button)
esp_sleep_enable_ext0_wakeup(GPIO_NUM_36, 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 a wakeup source. Only GPIOs with RTC functionality can be used.
intlevelInput level which will trigger wakeup.

Full examples​

Check out the full examples on this page and many more usage options below:

Inkplate6_Simple_Deep_Sleep.ino

This example shows how you can use the low power functionality of the Inkplate board.

Inkplate6_Wake_Up_Button.ino

Full example of how to implement the WAKE UP button with deep sleep on Inkplate 6.

Inkplate6_RTC_Alarm_With_Deep_Sleep.ino

This example shows how to use the RTC alarm interrupt with deep sleep.