Hacker News new | ask | show | jobs
MicroPython Smartwatch (tolidano.com)
49 points by tolidano 718 days ago
5 comments

I tried micropython on an ESP32-S3. On one hand, it's just amazing in a lot of regards. Writing BT with aioble is a breeze (can't say that about ESP-IDF). On the other hand, it's limited. No dual core support, no hardware interrupts, no enums... Dual core support is needed for anything real time at multi-kHz together with BT (BT takes over the core for about half a millisecond when sending anything).

The saving grace is that modifying or adding functionality to micropython is pretty straight forward. It's just a FreeRTOS app, the organization is intuitive, the code is fairly short. Anything performance heavy can be written in C and called from micropython (same idea as torch or numpy).

no hardware interrupts? that seems like a big limitation for a microcontroller environment.
MicroPython supports interrupts. But on some platform, like ESP32, the callback is scheduled. Preemption is still used, but it adds some microseconds and the delay is a bit variable. So it will work for some things, like reacting to a interrupt from an I2C sensor etc, or button push. But probably not good enough for a high speed protocol (so better use peripherals for that, like RMT in ESP32).
It only supports hardware interrupts on some platforms, with some pretty hefty limitations (not being able to allocate memory means that a lot of Python stuff is unavailable). I timed the "soft interrupts", those triggered within 80 or so microseconds IIRC.
I actually bought a PineTime referenced in the article, but it ended up going in a box and I never ended up tinkering
Useful info, but I'm not too clear on why you need to flash the watch from a phone as opposed to from your development machine. It was hard to filter out the technical information from the irrelevant asides.
I loved programming for Pebble back in the day. They actually had a pretty nice in browser IDE and IIRC their APIs were fairly well documented.

I remember making watch face bitmaps with paint!

These things have a microphone? Can I capture an audio file?
No microphone on the PineTime. The Lilygo T Watch S3 does have microphone. Right now the PDM protocol is not supported in mainline MicroPython though, but I hope that will change soon. And 16 MB of FLASH limits how much audio can be stored.