Tactility: OS for the ESP32 Microcontroller Family
15 comments
·January 10, 2025bArray
nine_k
If your apps run continuously, how's the battery life?
If you freeze them to save the battery, how do you handle unfreezing?
seba_dos1
The thing with threading in micropython is that you'll have to either rely on task priorities and cooperative yielding, or GIL, and both of them can be easy to shoot yourself in a foot with.
The CCCamp23's flow3rbadge also used micropython to implement its app framework st3m: https://flow3r.garden/
pjmlp
This kind of approach feels like the modern version of BASIC + Assembly from 8 and 16 bit days.
mitjam
This is really interesting.
Do you think the hardware would be a suitable platform for voice assistant type applications, with AI on server side, of course?
beardyw
An "ESP Microcontroller" definitely doesn't have a keyboard or a screen. That title is misleading and should say something like "ESP based device". I can buy an ESP32 for £3, these are a different thing altogether.
bayindirh
Yet you can use the same OS for headless application development. No?
Not all x86 systems have keyboards and screen, but Linux and Minix work on them with no problem.
numpad0
This appear to be a window system and desktop environment than OS, but isn't it that ESP32 user code always runs atop FreeRTOS for radio management purposes?
teamonkey
Tactility appears to be built on top of FreeRTOS.
FreeRTOS itself is very barebones, a library that provides basic memory management, task scheduling, io and a TCP stack, but not, for example, an abstraction layer for screen, keyboard or other peripherals, or the concept of running user applications.
MrBuddyCasino
If you use ESP-IDF, then yes. I‘m not sure other OS support wifi.
dfox
Espressif ships the wifi driver also as an .o file that takes huge struct of function pointers to OS-provided functions that works with other RTOSes. But you need some kind of RTOS.
dazhbog
Any idea where is the simulator project located?
trilbyglens
This is sweet! Looking forward to playing with this
bayindirh
Moreover, it's licensed with GNU/GPLv3, which I love.
I'm personally working on something like this for the ESP32, but written on top of micropython [1]. A few things are written in C such as the display driver, but otherwise most things are in micropython. We chose the T-Watch 2020 V3 microphone variant as the platform [2].
Our objective is to build a modern PDA device via a mostly stand-alone watch that can be synced across devices (initially the Linux desktop). We want to achieve tasks that you might typically do on your desktop, focussed towards productivity.
We did consider a custom OS, but decided against it for a few reasons:
1. Allowing somebody else to handle basic OS stuff allows us to concentrate on what really matters, the higher level stuff on top.
2. Having multiple threads in micropython is super simple and we are able to run many active apps at the same time, rather than having to kill them off [3]. Our background apps can continuously interact with the network in the background.
3. Code written for micropython can be easily run on other Python-capable devices.
[1] https://micropython.org/
[2] https://lilygo.cc/products/t-watch-2020-v3
[3] https://tactility.one/#/application-lifecycle