I want to learn how to work with RP2040-based microcontrollers, and I like the idea of working in a high-level language like Python. Or at least, I would like to give it a shot. Reading about Python for microcontrollers quickly run into two names: MicroPython and CircuitPython. Looking around for information on why I might choose one or the other, I found a wonderful comparison guide published by Adafruit. Based on this information, I now feel more comfortable starting with CircuitPython.

For me, the most important piece of background is that CircuitPython is built as a fork of MicroPython, with enhancements focused on beginner friendliness (an Adafruit signature) versus full support for all features. For someone learning to blink a LED, CircuitPython aims to be the best solution. Beyond the basics, intermediate level projects (where I feel I fit) are likely to be served equally well by either platform. Advanced features like threading and PIO are where CircuitPython concedes to MicroPython, but speaking for myself I won't have to worry about that for a while if ever. And even if I find myself in a situation where I need to switch, I'm comforted by the claim 95% of knowledge will transfer directly between the two platforms.

What will likely swing the decision for most people are software modules they want to pull into their project. And here I think CircuitPython will take the lead for my scenarios. I buy a lot of stuff from Adafruit, and they are likely to provide CircuitPython libraries for those components. So that covers a lot of hardware which also serves as example code to learn from if certain hardware is not explicitly supported. And following my earlier search for a MicroPython web server with WebSocket support, I found that CircuitPython offers a counterpart httpserver which should be sufficient for my rover project purposes. Looks good enough for me to dive on in.