A custom-designed smartwatch built around the ESP32-S3, combining BLE connectivity, a rectangular touch display, recharge capability, IMU and temperature sensors. Designed from the ground up in KiCad.
This is an evolution of an earlier, simpler build (Custom Watch), which used an STM32 MCU with a basic OLED display and IMU. This project pushes further: a more capable MCU, touchscreen input, temperature sensing, and a proper battery charging/protection circuit.
- MCU: ESP32-S3-WROOM-1
- Display: 1.69" IPS touchscreen, ST7789V driver, CST816T capacitive touch controller, 4-wire SPI + I2C
- IMU: LSM6DS3TR-C (accelerometer + gyroscope, I2C)
- Temperature sensor: TMP112 (I2C)
- Charging: TP4056 linear Li-ion charger (~150-200mA, PROG resistor configurable)
- Battery protection: DW01A + FS8205A (overcharge, overdischarge, overcurrent, short-circuit protection)
- Power path: AO3401A P-MOSFET + Schottky diode, allowing the board to run directly off USB while charging.
- Battery: 400mAh LiPo, 602530 form factor
- Board is organized into hierarchical schematic sheets:
Connectors,Power,MCU,Sensors - Custom KiCad component library (
HW/lib/) built from LCSC/JLCPCB parts viaeasyeda2kicadRepo, with symbols, footprints, and 3D models - ESP32-S3 module's PCB antenna is cantilevered off the board edge with a substrate cutout underneath, for optimal RF performance
- 4-layer stackup: signal / GND plane / power plane / signal
- All components sourced to be JLCPCB assembly-compatible with the exeption of the screen and battery.
HW/ KiCad project (schematics, PCB layout, custom library)
├── lib/ Custom component library (symbols, footprints, 3D models)
├── *.kicad_sch Schematic sheets
├── smartwatch.kicad_pcb PCB layout
└── smartwatch.kicad_pro Project file
Status: Hardware complete (v1.1) · firmware in progress ·
🔧 Firmware: WiFi + on-device settings (Sep 2026)
- LVGL touch UI: menu, clock, sensors, About pages with tap navigation
- On-device settings: set time / date / backlight
- WiFi page with NTP time sync
🔧 Firmware: bring-up & first UI (Sep 2026)
Sensor drivers (IMU, temperature), RTC on a 32.768 kHz crystal, LVGL display + touch working.
🛠️ Hardware v1.1: everything works ✅ (Aug 2026)
Functional test passed. Screen connector fixed. UI phase begins.
⚠️ Known issue → v1.2: LED on GPIO37 conflicts with octal PSRAM — PSRAM off for now.
🛠️ Hardware v1.0: first article (Jul 2026)
All components work; battery charging functional.