[Poking Technology] doesn’t think much of his new smartwatch. It is, by his admission, the cheapest possible smartwatch, coming in at about $3. It has very few useful features but he has figured out how to port MicroPython to it, so for a wrist-mounted development board with BLE, it might be useful. You can check it out in the video below.
The first step is a teardown, which reveals surprisingly little on the inside. There’s a tiny battery, a few connections, a display, and a tiny CPU board. There are, luckily, a few test pads that let you get into the CPU. What do you get? A 24 MHz Telink CPU with 512k of flash and 16k of RAM, along with all the other hardware.
Of course, even if you just want a display with some smarts, $3 might be in your price range. The whole thing wound up taped down to a PCB. But the usual debugger didn’t want to connect. Grabbing an oscilloscope revealed that the output from the board had some level problems. He eventually wrote his own debugger interface using a Pi Pico.
He was able to find the onboard CPU’s development tools. The CPU claims to be proprietary but looks suspiciously like a slightly modified ARM. A short investigation shows that the object code is extremely similar to the ARM Thumb instruction set but with a few extra bits set and different mnemonics. But once you put Python on board, who really cares?
The only downside is that it doesn’t appear that the BLE is practically usable because of memory limitations. But there are still places you might use the little watch in a project. Check out his TELink debugger, MicroPython port, and [rbaron]’s previous work on this device if you want to get started.
If you want a smartwatch, maybe build your own. While many DIY watches are simple, you can get pretty complicated if you like.
I have opened a similar cheap chinese watch (4EUR) where I found a chinese SOC Freqchip with SWD tap points on the PCB.
There is GCC for that chip:
https://github.com/zoobab/FR801xH
Don’t get me wrong, this is a cool feat but I do not believe high-level scripting is well-suited for deeply embedded and low-resource systems. MicroPython seems like something that should be a learning tool you use to bridge the gap to learning embedded programming.
Don’t see how that is true, and don’t know who’s dictating these should’s. I’ve coded low-power devices with MicroPython, including a wristwatch. You can put your CPU into sleep all the same, a lot of the things you want for low-power are exposed, and whatever isn’t exposed, you can easily expose yourself by bringing a little C code. Sure, it might take more CPU cycles to execute any given task, sure, however, a smartwatch ain’t that intense.
For many a hacker, MicroPython will make the difference between having no firmware and having something that actually works, and you don’t gotta knock on that.
I feel like you’re judging micropython simply because it has the word “python” in it.
My apologies if this isn’t the case.
the weird thing about embedded programming is it’s just like any other programming…the high level decisions are often more expensive than the low level ones. and python doesn’t (necessarily) get in your way of making high level decisions. so at a high level your biggest decision is when does it wake up, how often does it wake up, how many peripherals can you turn off? but when it does wake up, does the task take 10ms or 100ms, 100 bytes of memory or 1kb? depending on your goal, that might not matter even a little bit.
but i mean my own biases are exactly as you say, i like to program small things to the metal. it’s more capable and you get more control and it’s fun every once in a while. but i do wind up reinventing the wheel. a lot of projects abandoned because i haven’t got the time…but personally, the project wouldn’t be enjoyable to me if i was using all the modern high level ’embedded’ tools so the solution for me would be more time, not less task :)
If you want to squeeze every last bit of compute out of your microcontroller then yes, C or some other compiled language could be a better choice – assuming you plan to produce enough devices to be able to trade off the extra development costs against the 27c saving you make on the chip.
A lot of people also don’t realise that much MicroPython can be compiled into native code on some architectures, at least. So the picture is nowhere near as black and white as this answer might make you believe, though to the author’s credit it correctly identifies circumstances where Python may well not be your best choice.
These cheapie smart watches are kind of amazing, a couple of quid (inc delivery) from Ali, you get a 32 bit CPU, a TFT screen, wireless connectivity and a hackable platform!
Those are pretty much Chinese fnger pulsometer/oximeter components repurposed to “smartwach” after pandemic demand waned, minus the real sensor :) I got a couple just for OLED displays at $1-2 when they were being dumped on local auction sites, but never even looked at CPU.