Power & Battery
Ways To Power The Board
| Source | How |
|---|---|
| USB-C | Powers the board and charges a connected battery |
| 5V pin | A 5 V supply here does the same as USB — powers the board and charges the battery |
| LiPo battery | Solder to the pads on the underside, or use the BAT+ pin |
Never connect a 5 V supply to the 5V pin while USB is also plugged in. Pick one source.
The Power Pins
3V3
Regulated 3.3 V from the onboard 600 mA regulator, shared with the ESP32-S3, the sensors and the LED matrix. Both 3V3 header pins are the same supply.
This is an output. Don't feed voltage into it. Keep external loads modest — the ESP32-S3 and the matrix are already drawing from that 600 mA budget.
5V
Connected to USB 5 V, and it works both directions:
- As an output — 5 V is available here while USB is plugged in
- As an input — a 5 V supply here powers the board and charges the battery
BAT+
Battery positive, 3.0–4.2 V, the same connection as the battery pads on the underside. Useful for powering servos or motor drivers directly from the LiPo, which avoids pushing their current through the 3.3 V regulator.
BAT+ reaches 4.2 V — never connect it to a GPIO. The ESP32-S3 runs at 3.3 V and will be damaged.
Charging
A single-cell LiPo charges at about 300 mA from USB or the 5V pin. The charge LED is lit while charging.
With no battery attached, the charge LED may flicker. That's normal.
Reading Battery Level
Battery voltage is readable on GPIO4 (ADC1). The pin sees half the battery voltage, so double your reading:
#define VBAT_PIN 4
float readBatteryVolts() {
// millivolts at the pin, doubled for the divider
return (analogReadMilliVolts(VBAT_PIN) * 2.0f) / 1000.0f;
}A single-cell LiPo runs from about 4.2 V full down to 3.0 V empty. GPIO4 is on ADC1, so it keeps working while Wi-Fi is active — unlike the ADC2 pins.
Deep Sleep
GPIO0–21 can wake the board and hold their state while it sleeps.
Two things make a real difference to battery life in sleep:
- Cut matrix power — drive GPIO47 HIGH before sleeping. This removes power from the LEDs entirely.
- Let the IMU do the waiting — the ICM-42670 detects motion on its own and raises INT (GPIO21), so the ESP32-S3 can stay asleep until the board is actually moved.
digitalWrite(47, HIGH); // matrix off
digitalWrite(48, LOW); // buzzer idle
esp_sleep_enable_ext0_wakeup(GPIO_NUM_21, 0); // wake on IMU INT (active low)
esp_deep_sleep_start();Check GPIO48 is LOW before sleeping. A buzzer left HIGH is silent but keeps drawing current through the coil the whole time the board is asleep.
Power Budget Notes
- The 3.3 V regulator supplies 600 mA total across the ESP32-S3, sensors and matrix
- Wi-Fi transmission draws current in bursts — a battery near the end of its range may brown out under load
- Drive servos and motors from BAT+ or an external supply, never from 3V3
