XIAO ESP32C3 Sleep Issues

The ESP32C3 will not wake from sleep mode if the serial port has been enables, the solution is simple;

  1. Complete and debug your code with the serial port enabled with Serial.begin(115200);
    • Serial.begin(115200);
  2. When complete, simply comment out the Serial.begin statement:
    • // Serial.begin(115200);

Note that the ESP32S3 and C3 and other XIAO boards have an on-board battery management chip and can therefore run off a battery, just wire a 3.8v LiPo battery to the + and – terminals on the underside of the board.

When plugged into a USB power source the battery will be charged.

Note: there is no on-board battery monitoring circuity, if required this will need to be added external using a spare pin set to an ADC input connected to a voltage divider.

Connections for e-paper driver board (no on-board charger V1)

// Connections for XIAO ESP32S3 and the V1 board
static const uint8_t EPD_BUSY = D5;
static const uint8_t EPD_CS = D1;
static const uint8_t EPD_RST = D0;
static const uint8_t EPD_DC = D3;
static const uint8_t EPD_SCK = D8;
static const uint8_t EPD_MISO = -1; // MISO not used, as no data from display
static const uint8_t EPD_MOSI = D10;

The V1 e-paper driver board with no on-board charger, consumes 55uA in deep sleep with the XIAO ESP32S3.

note: the subtle change of the BUSY PIN from the V2 variant is D5 not D2

Connections for e-paper driver board (on-board charger V2)

// Connections for XIAO ESP32S3 and the V2 board
static const uint8_t EPD_BUSY = D2;
static const uint8_t EPD_CS = D1;
static const uint8_t EPD_RST = D0;
static const uint8_t EPD_DC = D3;
static const uint8_t EPD_SCK = D8;
static const uint8_t EPD_MISO = -1; // MISO not used, as no data from display
static const uint8_t EPD_MOSI = D10;

The V1 XIAO e-paper driver board with on-board charger, consumes 33mA in deep sleep with the XIAO ESP32S3.

note: the subtle change of the BUSY PIN from the V1 variant is D2 not D5