ESP32-S3 Watch Design

arrange the schematic by functional group.
I’ll reorganize the schematic into clearly separated functional blocks, preserve every connection and value, then re-run electrical and geometry checks.
Arranged all 52 schematic components into distinct functional groups: USB/protection, LiPo charging, buck-boost supply, ESP32-S3, I²C peripherals, OLED, and user controls. Connectivity is unchanged, with zero ERC errors, wire collisions, symbol collisions, or label collisions.
Open items
  • 15 cosmetic lint warnings remain: three unavoidable pin-alignment kinks, two cross-group resistor-bank warnings, and duplicated distant-ground warnings for the isolated USB block.
Suggested next steps
  1. Define watch PCB dimensions and display/battery geometry.
  2. Start four-layer PCB placement with the ESP32 antenna keepout.
  3. Review placement before routing.
Layout, review and BOM
Start PCB layout
Define placement intent
Review schematic deeply
Check BOM risk
Fix cosmetic warnings

Refine this doc
Ask about this doc
Firmware Getting Started — ESP32-S3 OLED Watch
Toolchain
  • ESP-IDF 5.x recommended; Arduino-ESP32 is also compatible.
  • Target module: ESP32-S3-MINI-1-N8 (8 MB flash).
  • Use native USB Serial/JTAG/OTG on GPIO19/GPIO20.
Pin Map

Table


ESP32-S3 pinFunctionNet / device
GPIO19USB D-USB_D_N through ESD and 0Ω link
GPIO20USB D+USB_D_P through ESD and 0Ω link
GPIO8I2C SCLOLED, BMI270, MAX17048
GPIO9I2C SDAOLED, BMI270, MAX17048
GPIO7IMU interruptBMI270 INT1
GPIO10Fuel alertMAX17048 active-low ALERT
GPIO11Charge statusBQ24074 active-low CHG
GPIO4User button 1Active low
GPIO5User button 2Active low
GPIO6User button 3Active low
GPIO0BOOTActive-low boot button; external 10k pull-up
ENRESETActive-low reset button; 10k/1uF RC
GPIO35–42 and GPIO45/46 are intentionally unused. GPIO12 is unused because the selected four-wire OLED module does not expose reset.
I2C Devices
  • BMI270: 7-bit address 0x68 (SDO tied low).
  • MAX17048: 7-bit address 0x36 (datasheet displays write/read bytes 0x6C/0x6D).
  • SSD1306 module: commonly 0x3C; scan and confirm the fitted module before initialization.
  • Bus speed: start at 400 kHz. One 4.7k pull-up pair is fitted near the MCU.
Initialization Order
  1. Configure button inputs with pull-ups and wake sources.
  2. Initialize I2C on GPIO8/GPIO9.
  3. Probe OLED, BMI270, and MAX17048 addresses.
  4. Load the Bosch BMI270 configuration blob; configure INT1 for desired active polarity and motion/tap wake.
  5. Configure MAX17048 alert thresholds and clear pending alert flags.
  6. Initialize SSD1306 and keep the display off until needed.
  7. Read charger status on GPIO11.
Native USB
  • Hold BOOT low while toggling RESET to force ROM download mode if automatic USB download is unavailable.
  • Select USB CDC/JTAG support in ESP-IDF menuconfig or the corresponding Arduino USB mode.
Low-Power Notes
  • Turn off OLED pixels before sleep.
  • Configure BMI270 low-power motion interrupt as a wake source.
  • Use MAX17048 alert for low-battery wake/notification.
  • Keep GPIO45/46 untouched during reset because they are strapping pins.
  • Toolchain

  • Pin Map

  • I2C Devices

  • Initialization Order

  • Native USB

  • Low-Power Notes

ESP32-S3 OLED Watch thumbnail
Rechargeable ESP32-S3 smartwatch with OLED display, USB-C LiPo charging, accelerometer, native USB programming, and low-power operation.

Properties

V

Pricing & Availability

Distributor

Qty 1

Arrow

$7.01–$13.44

Digi-Key

$1.36–$1.39

HQonline

$7.13–$7.26

LCSC

$14.92–$15.08

Mouser

$22.03

TME

$0.90

Verical

$9.90–$15.80

Controls