May 2025 Meetup

Matt delivers the news roundup. Oliver demos updates to mim. Hans gives an Octoprobe update.

News Round-up

Big ticket items

MicroPython v1.25.0 Released

MicroPython Logo

MicroPython v1.25.0 brings several exciting new features:

ROMFS (Read-Only Memory Filesystem)

  • All the benefits of frozen code
    • Without the inconvenience of building it in with your firmware!

New Alif Ensemble Port

  • Dual-core support with OpenAMP
  • WiFi and Bluetooth connectivity
  • USB support via TinyUSB

RISC-V Inline Assembler

  • New @micropython.asm_rv32 decorator
  • Write RISC-V machine code snippets callable from Python
  • Available on rp2 port when running in RISC-V mode

The release also includes improved mpremote tool (recursive rm!), enhanced ESP-IDF support (v5.3/v5.4), and a host of improvements and performance optimizations across platforms.

And so much more…see the full release notes.

v1.26 is already well underway, currently targeting an August 1st release date.


mip-ifying the Amazing List - with Claude’s help

Claude Code

  • Oliver and I decided to have a hack session
  • Goal: Go through the Awesome List and add mip support to as many libraries as possible!
    • >1K URLs (~800 Github/Gitlab links, not all libraries)
  • Used Claude Code to assist
    • Help select candidate libraries
    • Fork the repos
    • Add an appropriate package.json
    • Raise PRs

There were ~120 PRs raised, ~20 have been accepted. There’s another batch of Gitlab PRs to come, too.

Claude wasn’t perfect, there were a few mistakes, it required some back-and-forth and it wasn’t free. The session, including 5-ish hours of compute cost ~AU$65.

But it would have been a very, very tedious task - I’m convinced I wouldn’t have completed it.


PyCon AU

PyCon AU

PyCon AU 2025 has been announced - for here in Melbourne - and the Call for Proposals is open! It closes on the 15th June so do consider presenting a talk (particularly if it’s MicroPython-related!).


Improving Garbage Collection Time

Improving Garbage Collection Time

CircuitPython lead dev, Scott Shawcroft, published a blog post on improving garbage collection time in CircuitPython. Scott had observed that GC collection times could blow out, particularly with the larger memory available on newer micros. Digging further, Scott discovered some worst-case scenarios where the gc.collect() could take almost 20 seconds!

The workaround implemented in CircuitPython is to use selective collect, effectively informing the gc to ignore certain allocations. It can dramatically improve gc collections for some scenarios.

Scott has been in touch with Damien since the same gc is present in MicroPython.


MIDI Controlled Acoustic Crank Organ

Crank Organ

This MIDI controlled acoustic crank organ by bixb922 is absolutely delightful! And the more you dig into this project, the more it reveals…

The crank inflates bellow to maintains a reservoir of air - and the rotation determines the playback speed. Solenoids control the air flowing into the pipes, carefully timed by MicroPython software running on an ESP32-S3. The tunes are defined by MIDI files and a playlist can be managed with app rendered in a browser.

Favourite feature: A microphone is used to automatically iterate through the solenoids and play each pipe to detect the note and use it for configuration.

Everything - hardware, mechanics, software - is available on the crank-organ repo and the software design and development write-up is full of gems.


Matt’s New Hardware

M5Stack Tab5

M5Stack Tab5

The M5Stack Tab5 is M5Stack’s first tablet-like IoT development kit, featuring:

  • ESP32-P4 (400MHz RISC-V dual-core) + ESP32-C6-MINI for connectivity
  • 5-inch IPS touchscreen (1280×720), 2MP front camera
  • 16MB Flash, 32MB PSRAM
  • Wi-Fi 6, Bluetooth 5.2, USB-A/C, RS-485
  • Industrial-grade design with removable battery

US$60 (with battery)

Note: MicroPython support pending (but underway)


ESP32-C5 Development Board

ESP32-C5 DevKit

Espressif recently announced that the ESP32-C5 is in Mass Production.

The ESP32-C5 represents a major connectivity advancement:

  • Industry’s first RISC-V MCU with dual-band Wi-Fi 6 (2.4/5GHz)
  • 32-bit single-core RISC-V up to 240MHz
  • Bluetooth 5 LE, IEEE 802.15.4

AU$30

Note: MicroPython support pending


Thumby Color

Thumby Color

The Thumby Color is the world’s smallest color gaming handheld:

  • Raspberry Pi RP2350 processor
  • 0.85” 128×128 pixel 16-bit color display
  • 51.6 × 30.0 × 11.6mm (smallest horizontal handheld)
  • 9 buttons, vibration motor, 110mAh battery
  • Many games, web IDE support

US$50

✅ MicroPython support


STM32-U385 Nucleo

STM32-U385 Nucleo

The STM32-U385RG-Q Nucleo features ST’s newest ultra-low-power MCU:

  • STM32U385RG with 96MHz Arm Cortex-M33 core
  • Ultra-low-power design with SMPS
  • U385RG: 1MB flash, 256K RAM
  • 3x I2C, 2x I3C, 3x SPI, 1x OCTOSPI, UARTs, CAN, USB
  • Analog: 2x 12bit ADC, 2x comparators, 2x op-amps, 2x DAC
  • No external clocks required
  • Integrated ST-LINK debugger/programmer

~AU$40 (AU$5-10 for the micro)

Note: MicroPython support not yet available


Waveshare ESP32-P4-Nano

Waveshare ESP32-P4-Nano

The Waveshare ESP32-P4-Nano packs impressive features in 50×50mm:

  • ESP32-P4 (400MHz RISC-V dual-core) + ESP32-C6-MINI
  • 32MB PSRAM, 16MB Flash
  • Wi-Fi 6, Bluetooth 5, 10/100 Ethernet
  • MIPI DSI/CSI support for displays and cameras
  • USB-C/USB-A ports

US$20 (various configurations)

Note: MicroPython support pending


Waveshare ESP32-S3 4inch Display

Waveshare ESP32-S3 4inch

The Waveshare ESP32-S3 4inch Display is an all-in-one development solution:

  • ESP32-S3 dual-core up to 240MHz
  • 4-inch LCD (480×480), 5-point capacitive touch
  • 16MB Flash, 8MB PSRAM
  • CAN, RS485, I2C interfaces, TF card slot

US$33

✅ MicroPython support


Waveshare RP2350 1.47inch Display

Waveshare RP2350 1.47inch

The Waveshare RP2350 1.47inch Display showcases dual-architecture flexibility:

  • Raspberry Pi RP2350A (Cortex-M33 + RISC-V cores)
  • 1.47-inch LCD (172×320 pixels), 262K colors
  • 520KB SRAM, up to 16MB Flash
  • TF card slot, RGB LED, battery header

US$10

✅ MicroPython support


Hardware News

Unexpected Maker SQUiXL

Unexpected Maker SQUiXL

Unexpected Maker’s SQUiXL is a lovely device that packs a heck of a punch!

  • High-resolution 480x480 capacitive touch display
  • ESP32-S3, 16MB QSPI flash, 8MB Octal PSRAM
  • Battery charging for the included 1500mAh battery, with a fuel gauge
  • Haptics, I2S audio, uSD, STEMMA/QT
  • Arduino IDE, PlatformIO, and MicroPython support

US$99


RePebble: SiFli SF32LB52J MCU

SiFli SF32LB52J

Eric Migicovsky is part of the team bringing back the Pebble Watch (see RePebble!).

Although their first watch will use the venerable nRF52840, they are looking to the future and Eric wrote up how they selected their next-gen micro: How To Build A Smartwatch: Picking A Chip.

They arrived at the SiFli SF32LB52J which is a super interesting little micro!

  • Arm Cortex-M33 cores
    • HCPU: Up to 240MHz, 512KB SRAM (high performance)
    • LCPU: Up to 24MHz, 64KB SRAM (ultra-low-power)
  • Bluetooth 5.3 dual-mode, BLE audio support
  • 2D/2.5D GPU with hardware acceleration, LCD controller
  • 24-bit DAC/ADC, I2S interfaces
  • 45 GPIOs, USB 2.0 Full Speed
  • Open-source sw support was a huge consideration

The HAL looks reasonably well documented…and this micro appears designed to run MicroPython!

A dev board - with 16MB flash and 8MB PSRAM - is available from AliExpress for ~AU$40.


M5Stack PLC Controller

M5Stack PLC Controller

M5Stack have released the M5Stack PLC Controller with M5StampS3, an industrial-grade development platform featuring:

  • ESP32-S3FN8 with 8MB Flash, Wi-Fi 2.4GHz
  • Industrial I/O: 8 opto-isolated digital inputs (5-36V), 4 relay outputs (5A), CAN and RS-485
  • 1.14” color LCD (135×240), 3 user buttons, buzzer
  • Wide voltage input DC 6-36V
  • Temperature (LM75), voltage/current (INA226), RTC

US$43


pico2-ice

pico2-ice

TinyVision have released the pico2-ice, an open-source hardware platform combining an RP2350B with an FPGA:

  • Raspberry Pi RP2350B (2x Cortex-M33 @ 150MHz)
  • Lattice iCE40UP5K UltraPlus (5.3K LUTs, 8 DSP multipliers)
  • 8MB qSPI SRAM, 4MB FPGA Flash, 1Mb SPRAM, 120Kb DPRAM
  • All RP2350 pins + 32 FPGA GPIO pins exposed via Pmod headers
  • 2x RGB LEDs, 2x pushbuttons, USB-C, 4-layer PCB design

✅ MicroPython support, including a well-documented MicroPython library to program the FPGA from the RP2350B.

AU$79. The catch? Shipping to Australia almost doubles the cost…


Clockwork PicoCalc

PicoCalc

The PicoCalc is very neat portable device built around a decent display and qwerty tactile keyboard.

  • ClockworkPi v2.0 mainboard
  • Raspberry Pi Pico 1 H Core module (replaceable!)
  • 320x320 4-inch IPS screen (SPI interface)
  • Ultra-portable QWERTY Backlit keyboard on board (I2C)
  • Dual speaker
  • ABS plastic shell, tempered glass cover
  • 32GB high-speed SD-card with optimized BASIC firmware

US$75

MicroPython on the PicoCalc

PicoCalc MicroPython

Lofi Fren released PicoCalc MicroPython, MicroPython firmware and script collection for the PicoCalc. It was, in turn, built on top of PicoCalc-micropython-driver by Zenodante. Both of these projects - and the community in general - seem to be very active!


Seeed Studio Minichord Synthesizer

Minichord Synthesizer

A “co-create collaboration” with Seeed Studio, the Minichord Synthesizer is a fascinating open source (HW too!) device designed to help create music. Chord buttons, Harp Touch Zone and MIDI support via Platform IO. Built around the Teensy 4.0.

US$170


Seeed Studio XIAO 7.5” ePaper Panel

XIAO 7.5" ePaper Panel

Seeed announced the XIAO 7.5 Inch ePaper Panel, an attractive 800x480 ePaper display powered by a XIAO ESP32-C3. They advertise that it works with ESPHome in Home Assistant.

If you’re looking for an ePaper Panel this is a neat option.

US$70


T-Pico2350 Development Kit

T-Pico2350

The LilyGo T-Pico-2350 is an update to their earlier T-Picos which have been a combination of an RP and ESP32 micros. This one is an RP2350+ESP32-C6.

While the RP2350 drives most of the peripherals, the ESP32-C6 handles radio comms but also has pins broken out. It’s an interesting combination!

CNX have a detailed review but these are the main specs:

  • Raspberry Pi RP2350A (dual-core Arm Cortex-M33/RISC-V @ 150 MHz)
    • 520KB SRAM, 16MB SPI flash
    • MicroSD card slot
    • 2.33” color IPS LCD (SPI ST7796S), 480x222 resolution, capative touch (I2C)
    • HDMI out up to 480p60 (via HSTX)
  • ESP32-C6-MINI-1U-N4 (RISC-V @ 160MHz)
    • 512KB RAM, 4MB flash
    • 2.4 GHz WiFi 6, Bluetooth 5.0, and 802.15.4 (Thread/Zigbee)
    • Evil reversible USB port

Relevant software and docs in the Lilygo-T-Pico2 repo.

US$40


Other news

Conference Talks & Education

Conference Talks

PyCon Italia 2025
Marc-André Lemburg will speak at PyCon Italia 2025 in Bologna (May 30). “Programming hardware displays the easy way - using MicroPython and LVGL”

PyCon Austria 2025
Alexander Fomin presented “Python Beyond the Usual: Building an RC Car with MicroPython” demonstrating robotics applications.


I2CTargetMemory

I2CTargetMemory

Damien recently raised a PR for an implementation of I2CTargetMemory. Appears simple and easy-to-use:

from machine import I2CTargetMemory

mem = bytearray(8)
i2c = I2CTargetMemory(addr=67, mem=mem)

Currently available for the RP2 and STM32 ports.


Self-Charging Arduino Alvik Robot

Self-Charging Alvik

Roni Bandini modified the Arduino Alvik robot to be self-charging, with an excellent detailed tutorial of the build on Hackster.io.

Full MicroPython code available!


RISC-V Emulator in Python

RISC-V Emu

Ciro Cattuto released a RISC-V emulator in pure Python! Further, with emulated peripherals, even MicroPython can be run under the emulator:

$ ./riscv-emu.py --raw-tty --ram-size=4096 prebuilt/micropython.elf 
Welcome to MicroPython on RISC-V!
MicroPython v1.25.0 on 2025-05-01; emulated with risc-emu.py
Type "help()" for more information.
>>> 

This looks like an amazing well-supported emulator and, if you’re interested in RISC-V, this is a must-look-at project.


PYPER2, Electric Rover

PYPER2

One of (previous speaker!) Tim Hanewich’s recent projects is PYPER 2: Python-Based 3D-Printed Electric Rover.

PYPER2 is “a fully 3D-printed electric rover that uses common inexpensive components, is powered by a Raspberry Pi Pico, and programmed in MicroPython.”

All design files and software are available - and clearly Tim has had some fun with PYPER2!


PrestoDeck, a DIY Spotify Music Player

PrestoDeck

Fatih Ak created the PrestoDeck, a DIY Spotify music controller built for the Pimoroni Presto. “It displays the album cover art, name, and artist of the currently playing track and provides basic controls for playback.”


Super Famicom Cartridge Reader

Super Famicom Cartridge Reader

xsk’s sfc-cartridge-pico project implements a Super Famicom cartridge reader in MicroPython using an RPi Pico and shift registers.

This was the motivation behind the rp_blink_faster investigation (covered in the March Meetup) to determine the most efficient way to toggle a pin.


TV-B-Gone

TV-B-Gone

Ned Konz announced that he’s created a (improved!) clone of the popular ol’ TV-B-Gone using MicroPython.

The TV-B-Gone emits a whole bunch of TV infrared signals to turn off many TV’s. The old project no longer worked for many modern TVs and was built around the aging ATTiny. Ned has updated it to run on MicroPython, on an ESP32-S3, and has updated the TV support.

Apart from being a cool project, there’s also a detailed README explaining how it works and how to construct your own.


Remote Soil Monitoring

Soil Monitor

If you’ve ever wanted to remotely monitor the moisture in your soil you have to check out Brian (and brother Andrew) Dorey’s excellent project: Raspberry Pi Pico, LoRa & Home Assistant remote soil monitoring.

Brian’s polytunnel is a kilometer from their house so they need to remotely monitor the state of the soil. They employ soil moisture sensing, LoRa, humidity sensing, e-ink, solar power and battery charging, orchestrating it all with MicroPython. Back at home they tie it in to a Home Assistant system to display the information.

It’s a brilliant write-up on the design of the project and includes many crucial details. The code and hardware designs are available at pi-pico-lora-soil-monitor.


SAM

SAM TTS

Quan Lin has done a superb job of porting the old SAM (Software Automatic Mouth) Text-To-Speech program to pure Python: micropython-smatts.

SAM was cutting-edge 40 years ago so calibrate your enthusiasm (any Andor fans?), this won’t compete with modern LLM TTS. I remember being astonished by it when using it on my Commodore64 back in the day and to see it running on microcontrollers filled me with nostalgic joy.

You can try SAM in the browser to get a feel for the results.


HUB75 MicroPython LED Matrix Driver

Hub75

Excellent work from Andy Crook with his Hub75-24bit RP2 driver. Hub75’s are the large, cheap LED panels, in this case a 64x64 matrix. His driver provides 24-bit colour, HW accelerated drawing (via PIO), BMP loading, font support and 3D textured model support (!). There’s even a particle system.

Andy has also published a bunch of examples on reddit.


Spectrum Analyzer

Spectrum Analyzer

Dan McCreary has been building on top of Peter Hinch’s assumbler-in-MicroPython FFT library, creating a toolkit of scripts that apply an FFT in various ways. Check out his code at dmccreary/spectrum-analyzer and his Course on Spectrum Analyzers and Advanced MicroPython Lab on the topic. There’s a ton of detail!

Or watch the video for a taster:


Quick bytes

mpremote

Thanks to Jos Verlinde, mpremote now has a tree command

utop

Daniël van de Giessen wrote an implementation of top, utop, which was recently merged into micropython-lib. Currently ESP32-only but the API is designed to be consistent across all ports.

YAML Parser for MicroPython

mpy-yaml provides YAML parsing and writing capabilities for MicroPython. From Carlglglz.

RP2350 UART Bootloader

One improvement of the RP2350 is that the bootloader can be controlled - and firmware updated - over a UART connection. Thomas Pfister has a great blog post, Booting the RP2350 from UART and an accompanying video.

Olimex RT1010Py TinyUF2 Support

Olimex adds TinyUF2 support to their RT1010Py MicroPython board.

Olimex ESP32-EVB Relay Web Interface

Olimex demonstrates driving relays via web interface with MicroPython for remote load control.

Sparkfun Free Sensor offer

SparkFun is offering free sensors with MicroPython board purchases.

PicoShell

PicoShell is a lightweight, real-time CLI written in MicroPython for the Raspberry Pi Pico.

Pico 2 Getting Started Guide

Random Nerd Tutorials has published a comprehensive getting started guide for Raspberry Pi Pico 2, covering both MicroPython and Arduino IDE.

ESP-NOW MIDI Library

Thomas Geissl wrote ESP-NOW-MIDI, an Arduino library that enables wireless MIDI communication between ESP devices. A very cool idea! There’s a CircuitPython lib - that ought to be very similar to a MicroPython implementation.

Casio fx-CG100 ClassWiz Calculator

Casio’s fx-CG100 ClassWiz graphing calculator now includes MicroPython programming capabilities.

Digital Dice

An excellent beginner project, Gary Explains how to build a Nerdy Digital Dice. Covers D4 to D20 dice and is a great intro to microcontroller development with MicroPython.

Short Tutorial on Writing an I2C Device Driver

Dave Horton shared that he’d written an - excellent! - tutorial on writing an I2C Device Driver for the BH1750 light sensor).


Final Thoughts

Midjourney visualising Oliver and I coding, with Claude (note that beards are necessary if you ask for a ‘developer’!):

Pair of Developers

Written on May 28, 2025