Bit disappointed with MicroPython on the PicoCalc.
If I connect with Thonny directly to the Pico board, I first get:
MicroPython v1.25.0 on 2025-04-30; Raspberry Pi Pico 2 W with RP2350
Type “help()” for more information.
PROBLEM IN THONNY’S BACK-END: Internal error (thonny.plugins.micropython.mp_back.ProtocolError: Unexpected read during raw paste).
See Thonny’s backend.log for more info.
You may need to press “Stop/Restart” or hard-reset your MicroPython device and try again.
Process ended with exit code 0.
If I then reconnect with Thonny, I get:
KeyboardInterrupt:
MicroPython v1.25.0 on 2025-04-30; Raspberry Pi Pico 2 W with RP2350
Type “help()” for more information.
I can then upload files but I can’t run them, unless I directly type run(‘xxx.py’) on the above command line. Even then display stuff works once then stops working. The picocacl displays:
raw REPL; CTRL-B to exit
R
of course, CTRL-B has no effect (on the PicoCalc itself)
I installed MicroPython last night and found that the PicoCalc would lock up randomly when the screen scrolled. I am not sure if this is the same problem.
I had Micropython on my 2nd PicoCalc for a while. It did not suit me well at all, as was pointed out, it did not play well with Thonny and the built in editor was not super usable either. Basically it felt like the folks who did the port kind of rushed it out and then abandoned it. I have PicoMite Basic on my 1st PicoCalc, it worked well, is under active development, and anything that could be done with Micropython could probably be done with PicoMite Basic, I decided it would be more interesting to put a Lyra in the 2nd PicoCalc and run Linux on it.
Blah, that’s annoying. Since I’m personally likely to use micropython as my primary language on this thing (I’m too old to go back to BASIC except in anger) I’ll put resolving these issues on my todo list.
It’s too bad that the MicroPython port for the PicoCalc is iffy, because I think that the PicoCalc deserves a decent MicroPython port (even if I will probably only use zeptoforth on the PicoCalc).
I haven’t really messed much with the MicroPython ports because it seemed like there was no coordinated effort, and several people were just doing their own thing (none of which was initiated by or supported by ClockworkPi). It also seemed like the goal of most of those projects was to get the REPL up and running, have all the PicoCalc hardware working and then that’s it – it’s up to the user to write software for anything else they may want (like an editor, shell, etc.)
In any case, it’s probably worth listing all the projects I’m aware of, though there are probably more that I haven’t stumbled onto. I vaguely remember someone posting to the forums and also mostly to the discord and they had taken zenodante’s port and done more customization with it. I’m not sure it was ever shared though, as I don’t think it’s any of these github projects. If someone wants to track it down, I think most of the talk about it was on one of the “shipping” threads on the Clockwork discord, but I never paid much attention to those posts since it was even more of a mess to sort out than what’s on the forum here.
This was the first MicroPython port for the PicoCalc, although it wasn’t for the Pico module. It’s for an ESP32 device that also works inside the PicoCalc, called a WalnutPI-Pico. There is at least one other ESP32 device that has a different pinout, but will work with this repo if the pins are switched around to match appropriately:
I’m not even sure what people call the (un?)“official” MicroPython port, but I think it’s this one. This one had the most work done initiallly to get the PicoCalc components working, but still ended up being pretty bare bones.
This one was based on zenodante’s but took it further, and I believe is still being actively developed:
This isn’t just a MicroPython port, but seems to be a shell built around a MicroPython port. Might be abandoned considering it hasn’t been updated in 3 months:
And this is a collection of example code meant to be used as lessons using a MicroPython port:
I only ever tried to install and play with zenodante’s port. And I also spent some time messing around with the original port for the WalnutPi to get it (sort of) working on my Aliexpress clone ESP32 module with a different pinout. While I did get it working, it was even more fragile and lacking usable features than zenodante’s.
Like I say, this probably isn’t a comprehensive list, but these are the only ones I noticed on github, and many were mentioned on the forums or discord at some point. There were active discussions going on for a while on the forums, but then once a few different variations on just the basic MicroPython REPL got posted, it seemed like everyone considered them to be “done”. As a new user of MicroPython, the barrier to entry was greater than I wanted to mess with, so I didn’t really dig into it any further myself.
This was the one I vaguely remembered, but couldn’t find when I made the previous post. I think this might be more mature and fully featured than zenodante’s?
I agree, MicroPython should have been at the top of Clockworkpi’s list of ports to have ready at release. I love MMBasic, I have been using it for years, but the reality is, most people prefer Micropython for programing microcontrollers, it has tons of libraries available to extend its usefulness and a whole lot of already written code out there on the internet.
I’ve found the Micropython port for the Pico 2W to be unstable. It freezes up about 10% of file writes. I’ve tried to isolate what causes lockups and it happens mostly when editing a file, trying to move a file, or actively writing a file.
I’m trying to get past some of the more pressing issues in the Zenodante build. I’m very grateful for their hard work. That, and the LofiFren repo, had a lot of important tools I was able to scrape.
My long-term goal is to get a build of LVGL working, then I can start writing GUIs.
Notable Updates:
Boot and main are removed from the frozen filesystem. Boot is copied manually for now, until I’m satisfied it’s ready to move back.
Added a bunch of micropython libraries to the /lib folder.
Migrated the picocalc APIs into /lib/picocalc/
Added a wifi module to /lib/picocalc/wifi.py. Includes API to setup and run webrepl as well. Mostly just repurposes brad.py and Wifi_Manager.py.
@msmith Have a look at the discord. I have made suggestions there about moving the display update thread to micropython so file writes and wifi access will block display updates automatigically, preventing crashes.
It’s not actually “cut down”, it’s a full implementation of Python 3.4 (plus selected features from 3.5 and up) with standard libraries adapted for microcontroller use.
More SRAM is almost always better, and as the RP2350 has 520K of SRAM, it is a better choice here than the RP2040 unless the GPIO leakage bug is a showstopper.