CircuitPython in 2026

It’s that time when the CircuitPython project is looking for feedback from the users, so here is some of mine again.

I have been mostly focused on three projects using CircuitPython last year: my quadruped robots, the PewPew game console, and the µGame game console. I didn’t have much energy to do any serious progress on any one of them, but I did some experimenting, and I have some ideas for the future.

I failed in my attempts to port the speech synthesis engine from MicroBit to CircuitPython as a C module, but someone ported the project it is based on (the SAM, Software Automatic Mouth) to plain Python code, and it runs on CircuitPython, albeit the format conversions necessary to subsequently play it using audioio make it somewhat slow. Unfortunately, the non-repeat playback of RawSample is currently pretty broken in CircuitPython, so even though I did get this to work, it’s not really usable until those bugs introduced later changes are fixed. I took a stab at one of them, but I’m not really familiar with that code enough to know what it was supposed to be doing in the first place. In any case, there is a way to do voice synthesis in CircuitPython now, which is nice for things like talking robots. We can hope the audio libraries will become more stable in time.

I have given up on working on a touch version of the keypad module for the SAMD21 port. The main problem is that those registers are completely undocumented, because Microchip sells a commercial library that uses them, and prefers for everyone to use that. Adafruit worked around that with their current CircuitPython code, but without access to the same documentation, I have little chance. Having that module would greatly improve the functioning of those PewPew devices that use touchpads for the buttons – right now the code is polling them, which is slow and unresponsive.

I have also looked at using different chip than the hard to obtain SAMD21 for the PewPew devices, in particular the CH32V208 looks very promising. It has 64kB of RAM, 128kB of Flash, and clock up to 144MHz, which should be sufficient for CircuitPython running simple games of the PewPew. The problem is, of course, that there is currently no port of CircuitPython to that chip. I looked a bit into what would be involved into making such a port, and I will probably give it a go at some point, but the task is somewhat daunting and certainly requires more energy than I have at the moment.

Finally, I’m finalizing the hardware for the ESP32-S3 version of the µGame handheld game console. You can think about it as Adafruit PyBadge, but with larger screen, and more RAM and Flash. And somewhat better looking, in my opinion. There are no changes in CircuitPython necessary for it, except for the board definition, which I will submit once I’m sure about the hardware, and once I get a USB pid for it.

In the near future, I want to focus more on writing new games for CircuitPython, in particular, I really want to make a roguelike game for that platform, as I don’t think there is one yet. It feels to me like I should do the hardware work first, the put off the fun of making the games, but the reality is that a game console without games is a pretty boring thing.

As for the CircuitPython project itself, I think it’s in a good place in terms of functionality. Yes, better async support and fewer bugs would be nice, but there really isn’t anything that stops me from doing the things I want to do with it.