186 karma · joined August 15, 2010
The maker of the wESP32 also recently released a neat RP2040 based PoE solution you may be interested in: the RP2040-Shim [3] to match the already-existing PoE-FeatherWing [4]. Together, they're a small, neat solution.
(Not involved with those products, just found them well-designed/interesting.)
[1] https://wesp32.com/ [2] https://www.olimex.com/Products/IoT/ESP32/ESP32-POE/open-sou... [3] https://silicognition.com/Products/rp2040-shim/ [4] https://silicognition.com/Products/poe-featherwing/
Dart pre-dates Flutter by a few years and had failed (a couple of times) as a web development language before Flutter chose to employ it. Would Dart be around today, outside of Google if not for Flutter? Seems unlikely.
Flutter indeed did decide to pick a niche language, albeit one that was used internally at Google. Tim Sneath discusses it on Software Engineering Radio:
https://www.se-radio.net/2020/12/episode-437-tim-sneath-on-a...
Though I noticed a couple of odd groupings - like that MicroPython was clustered in Arduinoria rather than the adjacent MicroPythonia... :P
I had the same minor install issue, specifically needed to do the following:
>chmod +x git-log-format.sh generate-db.sh
>python -m venv .venv
>source .venv/bin/activate
>pip install flask
I'm not sure the colouring is working as expected; I tried submitting with many email addresses I know are in the repo it ran over (with/out the wildcard) and the highlighting behaviour was difficult to predict.However, experienced developers may appreciate the extra features of using their favourite IDE combined with mpremote running in a terminal:
https://docs.micropython.org/en/latest/reference/mpremote.ht...
It's pretty magical to mount your PC filesystem on an embedded device - and extremely productive!
If do you have real-timeish needs, MP makes it pretty easy to write modules in C.
As for libraries; there's a whole lot of MicroPython libs listed on awesome-micropython.com and, if you need to use a CP library in MP, it's often trivial to port.
I was a little surprised to see MicroPython mentioned at all here since there's not really much that Ubuntu is doing to provide that support. I guess it was to refer to the popular RPi Pico, which has official support with MicroPython. CircuitPython support is becoming very close to parity on the Pico though.
(I'm not sure what you mean wrt UF2 on ESP32-S2; it has always worked fine for me? I just tried it again and there were no issues. Note that - unlike the Pico - the UF2 bootloader is not in ROM so you have to install it first.)
However, if you do know the hardware, if you are familiar with what's going on under the hood, then MicroPython allows you to write the majority of your system significantly faster.
So if you ever find that you need more performance you can drop into C, write a user module, and get the benefit of easier Python syntax and C performance.
The only reason some hardware features aren't supported is a lack of effort to expose those features. Come help us fill in the gaps! :P
[1] https://www.youtube.com/watch?v=437CZBnK8vI (Not my best presentation, I'm sorry; I was running on very little sleep and a high degree of stress!)
One of the key features of mpremote is that it allows folders to be mounted on your device from your PC.
For me, this allows a workflow that's even more efficient than using USB since no copying is required at all. Work on your PC (often using the unix port in a container [2] to test), then mount the folder and execute on the device. Brilliant. :)
I should probably write up how I use this workflow..!
It would be good to also allow USB volume mounting on more MicroPython ports (stm32 only) as - I agree - it's more intuitive for beginners. But LittleFS [3] is a much more robust filesystem than FAT, which is required for USB mounting. LittleFS is preferred by the core team and has had more focus recently.
[1] https://docs.micropython.org/en/latest/reference/mpremote.ht... [2] https://hub.docker.com/u/micropython [3] https://github.com/littlefs-project/littlefs
https://zephyr-dashboard.renode.io/dashboard-micropython.htm...
Any of those that are passing would be a good board to choose to start with.
(BTW, I can't vouch for NASA or SpaceX, but it's no secret that the European Space Agency has been working with MicroPython for many years.)
I don't disagree that reliability, repeatability and fast performance are (often) key; but our experience suggests that these can be (usually, if not always) achieved with MicroPython.
My colleague gave a good talk on how we use MicroPython, as SOUP, in our devices:
But MicroPython's gc is fairly simple and easy to reason with. We've gotten a lot of value out of two useful tools/techniques: 1) Rendering memory use over long periods of time (micropython.mem_info(1) will output a text representation of how memory is used). It's pretty obvious when memory use starts expanding. 2) Turning the gc off in key unit tests so we can be sure critical sections do not allocate (an exception will be raised if memory is requested from the gc).
But, of course, memory use in any embedded application is critical.
Systems are typically fragile because of poor system design not language choice. I've worked on many C and C++ systems and there's nothing inherently more robust about them. Some would argue that the various ways you can trip over UB makes them more fragile...
We use all manner of sensors; temperature, pressure, cap touch, photodiode detection, cameras.
Yes, true! I presented a lightning talk to colleagues on "Ingredients for Commercial MicroPython Success". One of the key points is "People are critical". Maybe folks here might find it useful:
https://docs.google.com/presentation/d/e/2PACX-1vR3DJk-dNTvE...
Indeed, it's helped deliver high-quality solutions quickly...
I use it on many devices (rp2040, nRF52, ESP32 and, professionally, on STM32). It's an effective platform on all of them.
Edit: More specifically, the parser correctly ignores type hints.