Field Log
Iris on the M5Stack StopWatch
A short field note on building Iris, my experimental smartwatch-like firmware framework for the M5Stack StopWatch.
I have been spending time with the M5Stack StopWatch, a compact ESP32-S3 wearable with a 1.75-inch round AMOLED display, capacitive touch, physical buttons, WiFi, BLE-capable hardware, haptics, audio, RTC, battery power, and a BMI270 motion sensor. It looks like a smartwatch, but for my purposes it is more interesting as a tiny wrist-mounted development platform.
The project is called Iris. It started as a watch face and settings menu, then gradually turned into a smartwatch-like firmware framework for the StopWatch. I am not trying to make a full operating system. The more realistic shape is a small app platform: apps own the user-facing experience, while services handle reusable capabilities like WiFi, time, battery, settings storage, Bluetooth, orientation, status lights, and power behavior.
Right now Iris has a watch face, settings app, stopwatch, WiFi scanner, badge display, BLE media remote controls, fidget screens, hardware diagnostics, and a web control panel exposed when WiFi is active. The web side is especially useful because it gives me room for precise configuration that would be annoying on a tiny round screen: display settings, touch timing, sound, WiFi, Bluetooth, theme, badge upload, date and time, power, device status, app registry details, and development tools.
The hardware work has been the fun part and the humbling part. The StopWatch is small enough that every choice matters: CPU use, display sleep, WiFi-on-demand behavior, heat, haptics, touch feel, and battery life all show up quickly. Iris is already being tested on real hardware, and the current direction is to keep the firmware practical even if the codebase is still moving fast.
The GitHub repo is where I am tracking that work: github.com/drgncabe/m5stack-stopwatch-iris. It is a PlatformIO / Arduino / C++ project targeting the M5Stack StopWatch, with the firmware organized around App, AppManager, ServiceManager, EventBus, screens, and services. There is also a hardware validation checklist because compiling cleanly is not the same thing as proving that a wrist device behaves correctly after upload.
Iris is still early, but it is already useful enough to keep pushing. Next up is more cleanup around the app/service boundaries, better power management, improved calibration and orientation behavior, and eventually more ambitious pieces like notifications, companion nodes, and maybe an AI/Ollama chat app. For now, the goal is simple: make the little round computer more capable without making it miserable to wear.