Ewatch: An Open Esp32-s3 Smartwatch You Program With Ai

About the project

A full ESP32-S3 dev board in a watch: 1.69" colour touchscreen, USB-C, WiFi, Bluetooth LE and a 350 mAh battery, with open-source drivers on GitHub. It took me five years and four attempts to build. Now I write most of its firmware by prompting Claude Code with the driver headers.

Items used in this project

Hardware components

EWatch PCB (ESP32-S3, 34 x 28 mm, 2-layer ENIG) EWatch PCB (ESP32-S3, 34 x 28 mm, 2-layer ENIG) Charging, battery sensing and a latching power button on board x 1
1.69" colour touchscreen 1.69" colour touchscreen Connects to the PCB by FPC x 1
350 mAh LiPo battery 350 mAh LiPo battery x 1
20 mm watch strap 20 mm watch strap Any standard 20 mm strap fits x 1

Software apps and online services

PlatformIO PlatformIO Or Arduino IDE / ESP-IDF
Claude Code Claude Code Writes most of the watch faces and apps, with the driver headers as context
KiCad KiCad PCB design
EWatch_Dev drivers (GitHub) EWatch_Dev drivers (GitHub) github.com/Ewan-Wills/EWatch_Dev

Hand tools and fabrication machines

JLCPCB PCB fabrication and assembly JLCPCB PCB fabrication and assembly x 1
USB-C cable USB-C cable Flashing and charging x 1

Story

"Holy crap, we've just written to it."

That's me on 7 May 2026, the first time a watch I designed accepted firmware. It took five years and four serious attempts to get there.

EWatch is an ESP32-S3 development board shaped like a watch. It has a 1.69" colour touchscreen, USB-C, WiFi, Bluetooth LE and a 350 mAh battery, and the drivers for everything on it are open source on GitHub. It isn't trying to be an Apple Watch. It's the watch you'd build yourself if you had five spare years.

What's on the board

  • ESP32-S3 with WiFi and Bluetooth LE
  • 1.69" full-colour touchscreen
  • 350 mAh LiPo, with charging, battery-level sensing and a latching power button
  • USB-C for flashing and charging, plus I2C and UART broken out
  • 34 x 28 mm, 2-layer, ENIG, takes any standard 20 mm strap
  • Programmable in C, C++ or Python from the Arduino IDE, PlatformIO or ESP-IDF

How I program it now

I run Claude Code inside PlatformIO with the driver headers and one working example pasted in as context, then ask for what I want: a watch face, a stopwatch, a Spotify controller. Because the model starts from code that already runs on this hardware, what it writes usually works first time. The short below shows it controlling Spotify.

If you'd rather write it yourself, it's a normal ESP32-S3 underneath. Use the drivers, or skip them and talk to the peripherals over I2C and UART.

Five years, four attempts

The first EWatch was an ESP32, a tiny OLED and a lot of hand-wired female headers. It worked and it was hideous. A breadboard version after that won £500 at a university innovation competition, mostly, I think, because nobody expected a watch built on a breadboard. EWatch later won an Innovate UK Converge prize.

The first real PCB, built with two friends, was the wrong size, the power management didn't work and the screen never lit up. The project sat in a drawer through my dissertation and my first job.

The next attempt was built around the AXP2101, a power-management chip that did everything I wanted on paper. On the bench it needed odd power sequences to reset, sometimes didn't output power by default, and dropped off the I2C bus while charging. In March 2026 I replaced it with a plain discrete charge-and-regulate circuit. It's less elegant and far more predictable, and a board that works on my bench isn't the same as one that works in somebody else's hand.

On 7 May the corrected board went on the bench. Flash, latch, accelerometer, RTC, interrupts, WiFi and touch all came up in one evening. The whole five years is in the documentary below.

What's next

V2 is in design. The schematic is done and adds an IMU with magnetometer, a microphone, a fuel gauge, an RGB LED, 16 MB of flash and a u.FL antenna; layout hasn't started yet. I'm also building EWatch Cloud, a browser editor that compiles on a server and flashes the watch over WebSerial.

Drivers and example apps: github.com/Ewan-Wills/EWatch_Dev
The watch: ewanwills.co.uk/ewatch

Code

EWatch_Dev: drivers and example apps

Open-source drivers plus example firmware: BasicDigital, BasicAnalog, Spotify_Controller, Doom, Tamagotchi and more.

Credits

Leave your feedback...