Daily tips and tricks from the experts at Adafruit!
View this email in your browser

View this email in your browser. Warning: Flashing Imagery

Welcome to the latest Python on Microcontrollers newsletter! I thought this might be a quiet week with classes starting to adjourn but then MicroPython drops a huge update on Friday followed by Arduino. I found a cool new cheatsheet on git, don’t forget to check out the ‘zine that goes with it. And a bumper crop of projects and news from the web – there is lots to find in this issue. Cheers – Anne Barela, Editor

We’re on Discord, Twitter, and for past newsletters – view them all here. If you’re reading this on the web, subscribe here. Here’s the news this week:

MicroPython v1.23 Released

MicroPython v1.23 Released

A new major release of MicroPython has gone out with several major feature upgrades – GitHub Full Release Notes and Downloads.

“This release of MicroPython adds support for dynamic USB devices defined in Python, adds new openamp, tls and vfs modules, completely revamps the webassembly port to add proxying between JavaScript and Python, and implements significant code size optimisations for frozen modules. There are also many other enhancements and bug fixes.”

Running Arduino and MicroPython Side-by-Side on Multi-Core Microcontrollers

Arduino and MicroPython Side-by-Side

With MicroPython v1.23, there is now support for Asymmetric Multiprocessing (AMP) on multi-core microcontrollers, based on the industry standard OpenAMP framework.

This enables Arduino users to run both an Arduino sketch and a MicroPython program simultaneously on multi-core modules and to communicate between the two – Arduino.

“The communication between Arduino and MicroPython is facilitated by using Remote Procedure Calls (RPC). This allows us to benefit from the simplicity of using MicroPython while unlocking access to all of Arduino’s rich libraries from MicroPython.”

A Raspberry Pi AI Clock Listens and Smells for the Current Time

This Raspberry Pi AI clock listens and smells for the current time

Maker and developer Max Björverud is using a Raspberry Pi to power his clocks that use AI to estimate the current time based on smell and sound. The artificial intelligence side of the project is aided by an open-source Python library called Scikit-learnTom’s Hardware.

A New git Cheatsheet

git Cheatsheet

Cheatsheets have proven very popular in the newsletter but finding good ones to highlight is rare. The zine “How git Works” is now available from Wizardzines Julia Evans – Free Cheatsheet and Buy the Zine, via X.

Tutorial: Getting Started with CircuitPython on XIAO RP2040

Getting Started with CircuitPython on XIAO RP2040

A new step by step tutorial on how to download and install CircuitPython on the SeeedStudio XIAO RP2040. This is a module by Seeed Studio with a Raspberry Pi RP2040 microcontroller – YouTube.

Running for the Python Software Foundation Board of Directors

Running for the Python Software Foundation Board of Directors

PSF Board elections are a chance for the community to choose representatives to help the PSF create a vision for and build the future of the Python community. This year there are 3 seats open on the PSF board. Check out the Life as Python Software Foundation Director video to learn more about what being a part of the PSF Board entails. Nominations open on Tuesday, June 11th – Python Software Foundation.

This Week’s Python Streams

Python Streams

Python on Hardware is all about building a cooperative ecosphere which allows contributions to be valued and to grow knowledge. Below are the streams within the last week focusing on the community.

CircuitPython Deep Dive Stream

Deep Dive

Last Friday, Scott streamed work on ESP BLE Debugging and Fun Friday Hacking.

You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.

CircuitPython Parsec

CircuitPython Parsec

John Park’s CircuitPython Parsec this week is on an IR remote decoder – Adafruit Blog and YouTube.

Catch all the episodes in the YouTube playlist.

CircuitPython Weekly Meeting

CircuitPython Weekly Meeting for May 28, 20244 (notes) on YouTube.

Project of the Week: Building Alan Wake’s Angel Lamp

Building Alan Wake's Angel Lamp

Stargirl builds a fantastic Alan Wake Angel Lamp cosplay prop using CircuitPython. A fantastic 3D print is crowned by an Adafruit Trinket M0 and nOOds filament LEDs – Thea.codes.

Popular Last Week

What was the most popular, most clicked link, in last week’s newsletter? PySheets: The Spreadsheet UI for Python.

New Notes from Adafruit Playground

Adafruit Playground is a new place for the community to post their projects and other making tips/tricks/techniques. Ad-free, it’s an easy way to publish your work in a safe space for free.

Adafruit Connection Manager

Adafruit Connection Manager – Adafruit Playground.

SerialFruit Connect

SerialFruit Connect – A bookmarklet to replace Adafruit BlueFruit Connect apps + Add WiFi/USB/BLE for all! – Adafruit Playground and GitHub.

Mandelbrot on a Neotrinkey

Mandelbrot on a NeoTrinkey? … It’s Complicated – Adafruit Playground.

News From Around the Web

Giant's famous quotes

Display Giant’s famous quotes from a Raspberry Pi Pico with MicroPython – X.


Python to CircuitPython Serial for “text adventure game” testing – X and GitLab.

Dr. Love: a Game of Love Detection

Dr. Love is a business-card sized gadget to “test if your partner is in love with you or just kind of meh.” It uses a RP2040 board and CircuitPython – GitHub.

Control a drawing robot via connected variables

Using the upcoming CircuitPython IDE: control a drawing robot via connected variables – YouTube via X.

Programming Raspberry Pi Pico with CircuitPython to emulate a keyboard or a mouse: tiny examples

Programming Raspberry Pi Pico with CircuitPython to emulate a keyboard or a mouse: tiny examples – GitHub via DORS/CLUC.

Make a homemade AI home assistant

Make a homemade AI home assistant with Raspberry Pi 5, ChatGPT and Python – Raspberry Pi News and YouTube.

Using a Raspberry Pi Pico to make a Keyboard & Gamepad

Using a Raspberry Pi Pico to make a keyboard & gamepad with CircuitPython KMK – HackSpace Magazine (PDF).


wasd-idler: WASD idle evasion for online games in CircuitPython – GitHub.

Rising and Falling Edge Detection With Raspberry Pi Pico and MicroPython

Rising and falling edge detection with Raspberry Pi Pico and MicroPython – Instructables.

CircuitPython Exercise

CircuitPython Exercise: Touch buttons on an ILI9341 SPI LCD with FT6336 capacitive touch – YouTube and Blog.

Use SSH keys to connect to your Raspberry Pi

Use SSH keys to connect to your Raspberry Pi – Medium.

Write Micropython code on tablet instead of PC

Write MicroPython code on a tablet instead of a PC – YouTube.

How to simulate Micropython and ESP32 in VS Code

How to simulate MicroPython and ESP32 in VS Code – YouTube.

RISC-V adoption predicted to get AI boost

RISC-V adoption is predicted to get an AI boost: the forecast shows 50% growth a year through 2030 – Tom’s Hardware.

Integrating Google Gemini with Home Assistant and RPi Pico W

Integrating Google Gemini with Home Assistant and Raspberry Pi Pico W with MicroPython – hackster.io.

Use your Nintendo Wii Nunchuk as a USB controller with ANAVI Handle open-source hardware adapter

Use your Nintendo Wii Nunchuk as a USB controller with ANAVI Handle open-source hardware adapter – CNX Software.


PicoShell for CircuitPython – GitHub.



Sunfounder’s Pironman 5 Raspberry Pi desktop case comes with RGB LEDs and SSD support – Tom’s Hardware.

M5Stack CoreS3 SE

M5Stack CoreS3 SE cost-down ESP32-S3 IoT controller features a 2-inch touch display, a microSD card slot, a speaker, and two microphones – CNX Software.

New Boards Supported by CircuitPython

The number of supported microcontrollers and Single Board Computers (SBC) grows every week. This section outlines which boards have been included in CircuitPython or added to CircuitPython.org.

This week, there is one new board:

Note: For non-Adafruit boards, please use the support forums of the board manufacturer for assistance, as Adafruit does not have the hardware to assist in troubleshooting.

Looking to add a new board to CircuitPython? It’s highly encouraged! Adafruit has four guides to help you do so:

New Learn Guides

New Learn Guides

Adafruit TRRS Trinkey from Liz Clark

CircuitPython Libraries

CircuitPython Libraries

The CircuitPython library numbers are continually increasing, while existing ones continue to be updated. Here we provide library numbers and updates!

To get the latest Adafruit libraries, download the Adafruit CircuitPython Library Bundle. To get the latest community contributed libraries, download the CircuitPython Community Bundle.

If you’d like to contribute to the CircuitPython project on the Python side of things, the libraries are a great place to start. Check out the CircuitPython.org Contributing page. If you’re interested in reviewing, check out Open Pull Requests. If you’d like to contribute code or documentation, check out Open Issues. We have a guide on contributing to CircuitPython with Git and GitHub, and you can find us in the #help-with-circuitpython and #circuitpython-dev channels on the Adafruit Discord.

You can check out this list of all the Adafruit CircuitPython libraries and drivers available.

The current number of CircuitPython libraries is 485!

New Libraries

Here’s this week’s new CircuitPython libraries:

Updated Libraries

Here’s this week’s updated CircuitPython libraries:

Library PyPI Weekly Download Stats

Total Library Stats

  • 87567 PyPI downloads over 326 libraries

Top 10 Libraries by PyPI Downloads

  • Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 7973
  • Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 7559
  • Adafruit CircuitPython ConnectionManager (adafruit-circuitpython-connectionmanager): 6737
  • Adafruit CircuitPython Register (adafruit-circuitpython-register): 1973
  • Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1151
  • Adafruit CircuitPython ESP32SPI (adafruit-circuitpython-esp32spi): 959
  • Adafruit CircuitPython framebuf (adafruit-circuitpython-framebuf): 944
  • Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 836
  • Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 834
  • Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 833

What’s the CircuitPython team up to this week?

What is the team up to this week? Let’s check in:


Scott, Jeff, and I triaged the issues we previously tagged with the CircuitPython 9.x.x milestone, in preparation for the 9.1.0 release. We narrowed down about thirty issues to about a half dozen we really want to fix for 9.1.0, and have deferred the others to a later release.


This past week I work more on the CircuitPython Code Editor and was able to get Raw-Paste mode implemented. However, the output from the device was somehow being doubled even though the code was only being read once. I also updated the 2.9” eInk learn guide with information about the EYESPI connector.


I had a lighter week than usual with the holiday on Monday. The main things I worked on were the Circup learn guide new usage pages detailing all of it’s features, and a new wwshell tool that will come along with circup. It’s a CLI for managing files via wireless workflows. I also tested several old versions of the CircuitPython core to try to find at which versions there are changes affecting the FlipInput displayio widget.



I’ve made the slides from my PyCon presentation available here. PyCon organizers have said that all talks will become available on YouTube sometime in the coming weeks and I’ll be sure to share that video link when it becomes available.


Last week I got pretty distracted away from ESP BLE work. This week I’m trying to dust it off and keep working on it. I’m hoping to have pairing and bonding support ready for CircuitPython 9.1.0.


This week I worked on the TRRS Trinkey guide. This Trinkey has a TRRS jack to create switches for assistive technology (AT) interface devices. Each pin on the TRRS jack can act as a GPIO pin, giving you 6 GPIO. Bill Binko for ATMakers is working on some real-world examples that he has used the Trinkey for. These examples are written in CircuitPython and really show what this Trinkey is capable of.

Upcoming Events

Open Sauce

Open Sauce, the Maker extravaganza, is returning to San Francisco, California June 15-16 – Open Sauce.

MicroPython Meetup

The next MicroPython Meetup in Melbourne will be on June 26 – Meetup. You can see recordings of previous meetings on YouTube.

EuroPython 2024

EuroPython is the oldest and longest running volunteer-led Python programming conference on the planet. This year it will be held July 8-14 in Prague – EuroPython 2024.

PyOhio 24

PyOhio is being held July 27-28, 2024 in Cleveland, Ohio – PyOhio.

Espressif DevCon24

Espressif DevCon24 will be held Sep 3-5, 13:00-18:00 CEST. Call for presentations now – Espressif.

Send Your Events In

If you know of virtual events or upcoming events, please let us know via email to cpnews(at)adafruit(dot)com.

Latest Releases

CircuitPython’s stable release is 9.0.5 and its unstable release is 9.1.0-beta.3. New to CircuitPython? Start with our Welcome to CircuitPython Guide.

20240530 is the latest Adafruit CircuitPython library bundle.

20240531 is the latest CircuitPython Community library bundle.

v1.23.0 is the latest MicroPython release. Documentation for it is here.

3.12.3 is the latest Python release. The latest pre-release version is 3.13.0b1.

3,929 Stars Like CircuitPython? Star it on GitHub!

Call for Help – Translating CircuitPython is now easier than ever

CircuitPython translation statistics on weblate

One important feature of CircuitPython is translated control and error messages. With the help of fellow open source project Weblate, we’re making it even easier to add or improve translations.

Sign in with an existing account such as GitHub, Google or Facebook and start contributing through a simple web interface. No forks or pull requests needed! As always, if you run into trouble join us on Discord, we’re here to help.

38,577 Thanks

38,577 THANKS

Adafruit Discord

The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 38,577 humans – thank you! Adafruit believes Discord offers a unique way for Python on hardware folks to connect. Join today at https://adafru.it/discord.

ICYMI – In case you missed it


Python on hardware is the Adafruit Python video-newsletter-podcast! The news comes from the Python community, Discord, Adafruit communities and more and is broadcast on ASK an ENGINEER Wednesdays. The complete Python on Hardware weekly videocast playlist is here. The video podcast is on iTunes, YouTube, Instagram), and XML.

The weekly community chat on Adafruit Discord server CircuitPython channel – Audio / Podcast edition – Audio from the Discord chat space for CircuitPython, meetings are usually Mondays at 2pm ET, this is the audio version on iTunes, Pocket Casts, Spotify, and XML feed.


The CircuitPython Weekly Newsletter is a CircuitPython community-run newsletter emailed every Monday. The complete archives are here. It highlights the latest CircuitPython related news from around the web including Python and MicroPython developments. To contribute, edit next week’s draft on GitHub and submit a pull request with the changes. You may also tag your information on Twitter with #CircuitPython.

Join the Adafruit Discord or post to the forum if you have questions.