35 comments

[ 3.6 ms ] story [ 80.0 ms ] thread
Love MicroPython and CircuitPython
How well do they work for embedded apps? I generally thought that the non real-time nature of python means you can’t do anything serious with python in the embedded world.

Asking as a serious question though from a genuinely curious point of view. I was thinking of rust or zig as the primary methods of moving embedded systems out of c and c++.

(comment deleted)
Microcontrollers are a lot more capable then most people think...
They're great if you don't mind running out of memory every few minutes. I guess maybe if you use a platform with more than 32 kB of RAM, they might work better...
The company I work for uses MicroPython for medical devices up to Class B. So, yes, it can definitely be used for serious work!

If do you have real-timeish needs, MP makes it pretty easy to write modules in C.

I'm going to be using this because it's in theory it's much easier to have over the air updates when the business logic are just text files, rather than compiled binaries.
That's was my draw to this ecosystem as well. It seems a lot more feasible to maintain a sort of "fleet" of boards running recent code this way.

I'm sure there are grown up ways of accomplishing this properly, but this was the lowest barrier to entry for me being able to maintain small embedded programs without having to physically plug into them.

These typically require external flash anyways right? Just write your image to SPI flash and copy it in a bootloader...
Is Arduino considered a good steward? I have heard rumblings of dissatisfaction about them in the past, but I do not know if those have any merit.
It’s a bit of bad wording that gives the wrong impression.

It’s an “official” port of micropython to arduino boards.

So more like “Micropython now supported by Ardunio on our boards” or something like that

There was a weird period about a decade ago when a business person was able to more or less take over Arduino leadership and pushed out the old founders. It was a split between arduino.org vs arduino.cc and each had their own boards. It was a mess for makers and uses to figure out but it's been long resolved, and last I saw Arduino was bought by ARM so likely has a lot more stability and less drama.
> MicroPython officially becomes part of the Arduino ecosystem

sounds like an acquisition, but

> Expanding on this initial experience we were lucky enough to partner with the creator of MicroPython, Damien George, to port the official the virtual machine to a number of Arduino products.

and

> Luckily we came across the work of Murilo Polese, who developed a simple tool we were able to adapt and use for teaching. The results have been so good that we decided to collaborate with him to produce a tool we can share with the community.

just sounds like they're heavy users - and contributors, to be fair - of micropython. Anyone have a better idea of what the relationship is?

EDIT: A quick look at https://micropython.org/ shows them still leading with the "pyboard" as their official hardware that they'd like to sell you, so I'm leaning towards "partnership" rather than "acquisition". Can't imagine that Arduino would do anything but immediately start pushing their own hardware.

Huh, I read it as "official support by us for this thing built by someone else" not "we acquired/partnered with the people who built this so that they are supporting us now".
I read this in a rush as I was so surprised by the post title.

Arduino has not absorbed MicroPython in any way.

Thonny has MicroPython support.

"BLD: Install thonny with conda and/or mamba" https://github.com/thonny/thonny/issues/2181

Mu editor has MicroPython support: https://codewith.mu/

For VSCode, there are a number of extensions for CircuitPython and MicroPython:

joedevivo.vscode-circuitpython https://marketplace.visualstudio.com/items?itemName=joedeviv...

Pymakr https://github.com/pycom/pymakr-vsc/blob/next/GET_STARTED.md

Pico-Go: https://github.com/cpwood/Pico-Go

/? CircuitPython MicroPython: https://www.google.com/search?q=circuitpython+micropython

Aurdino IDE now has support for Raspberry Pi Pico.

arduino-pico: https://arduino-pico.readthedocs.io/en/latest/index.html

Rshell and ampy are CLI tools for MicroPython:

rshell: https://github.com/dhylands/rshell

ampy: https://github.com/scientifichackers/ampy

Fedora MicroPython docs: https://developer.fedoraproject.org/tech/languages/python/mi...

awesome-micropython: https://github.com/mcauser/awesome-micropython#ides

awesome-arduino: https://github.com/Lembed/Awesome-arduino

KiCad (ngspice) is an open source tool for circuit simulation. Tinkercad is another.

TIL about Mecanum wheels.

wokwi/rp2040js: https://github.com/wokwi/rp2040js:

> Raspberry Pi Pico Emulator for the Wokwi Simulation Platform. It blinks, runs Arduino code, and even the MicroPython REPL!

What are some advantages of Arduino IDE? (which is cross-platform and now supports MicroPython and Pi Pico W (a $6 IC with MicroUSB and a pinout spec))

I was actually planning on using MicroPython to get away from using Arduino new bloated IDE.
What do you find bloated about it?

I've been exploring options for using python in various IDEs, and I'm generally not very happy.

The Arduino IDE seems passable for its own flavour of C++, but it's not great with Circuit Python boards. The discovery and integration with those boards seems non-existent, but maybe I'm missing something.

Mu Editor is extremely slow when the serial bus is highly active, and its features are severely limited. As an IDE it's seemingly missing any bells and whistles.

I'm looking forward to trying the VS Code Circuit Python extension, but unfortunately on my first run it didn't work at all. Hopefully with a bit of debugging it'll be clear to see why.

I'm curious if embedded scripting language gurus know, would micro-python be suitable for pico-8? I'd prefer python over lua about 100 to 1. But maybe even in micro form, python is still too big to embed in that project?
Not quite sure what you're asking here.

Pico8 is defined as running Lua. You could, in principle, define your own fantasy console that used Python instead of Lua, but it wouldn't be Pico8 anymore.

I'm pretty sure you have to use lua with PICO-8, last I looked at it there wasn't a way to plug in your own language.

You could look at TIC-80 and WASM with micropython compiling to WASM (or even full python).

Or... just use a python tool inspired by PICO-8: https://github.com/kitao/pyxel

I initially read that as MontyPython.
Very excited about this! I hope we'll see better support for Wi-Fi power save modes and CPU sleep soon.
It might be odd but I find Python so disrespectful to embedded devices. It pains me to think of all of the excess work those tiny things will do forever because of a very poor language choice.

More seriously, I think the long term effect of this will be truly catastrophic. There is an unfortunate effect whereby a tool's simplicity is able to attract newcomers to the space - which is great - but then severely limits progress by boxing them into this very small, simple, framework. It's very awkward when smart people and even professionals spend a lot of time fighting against the simplicity of Arduino or using weird, esoteric hacks as if it makes them a guru, just because it's all they know.

There needs to be an offramp. Micropython is the opposite - it's a one-way freeway to the middle of nowhere. It should be banished. So much human potential will be capped and wasted by this move.

I respect your opinion but I disagree wholeheartedly, and here’s why.

The introduction and support of MicroPython doesn’t mean the original “lower level” languages are unsupported. Code that “smart people and professionals” have built will continue to run.

Instead, you’ve opened the ecosystem up to new and creative ways to use the platform.

Raspberry Pis were created in part to help kids learn to program. That low barrier to entry didn’t stop “smart people and professionals” from being able to take that platform to build incredibly cool things.

The title really should read:

"...officially supported by..." instead of "...officially becomes part of..."