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! There is a steady stream of events through summer. Do check out the list in this newsletter and on python.org to meet up with fellow enthusiasts. Lots of content in the newsletter this week, I hope you have the time to scan through to find items of interest. And we’d like to feature your news and projects, send links via email to cpnews(at)adafruit(dot)com anytime – Anne Barela, Ed.

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:

New Versions of Python Have Been Released


Several new versions of Python have been released by developers, including versions for Python 3.11, 3.12 and another alpha release of Python 3.13:

10 Gigabit Ethernet on Raspberry Pi 5

10 Gigabit Ethernet on Raspberry Pi 5

Jiri Brejcha uses Pineberry’s HatDrive! Bottom for converting a Raspberry Pi 5 PCIe connection to M.2 M-key format. With a Kalea-Informatique 10 Gigabit adapter attached, speeds of 3.5Gbps were achieved in PCIe Gen 2 mode (it wouldn’t boot the unsupported Gen 3 mode) – Jiri Brejcha via X.

Using MicroPython and Raspberry Pi Pico W on the Latest Chrome OS

Raspberry Pi Pico on the Latest Chrome OS

@noelrecords-programming demonstrates developing with MicroPython on Chromebook and Raspberry Pi Pico W using a recent release of Chrome OS – YouTube via X (Japanese).

Making A Giant Retro Gaming Magic Mirror with a Raspberry Pi 5 and Python

Giant Retro Gaming Magic Mirror

David merges an impressive 65-inch touchscreen and a retro arcade machine into the single concept of a “magic mirror” using a Raspberry Pi 5 and Python – Element14 and YouTube.

The Official Raspberry Pi 15.6″ Monitor is Shown at Embedded World 2024

Embedded World 2024

The new Official Raspberry Pi 15.6” Monitor was on display last week at Embedded World 2024 – bret.dk.

Basic specifications from an included data sheet:

  • 15.6 inch IPS LCD Panel
  • 1920×1080 Resolution (60Hz)
  • Connection via HDMI
  • Built-in Stereo Speakers
  • 3.5mm Headphone Jack
  • Powered via USB-C (1A at 5V required)
  • Volume, brightness, and power buttons/controls
  • VESA mount
  • Kickstand for table-top use
  • Wall hanger

Automated Hardware Testing Using pytest

Automated hardware testing using pytest

Pytest is a framework for — you guessed it — testing! When working with embedded hardware you need to spend some time setting up fixtures that connect it to pytest. Once that’s in place, you’ll be surprised at how fast you can write tests for your firmware projects – golioth.

Raspberry Pi OS Now Shipping With Vulkan Support By Default

Raspberry Pi OS Now Shipping With Vulkan Support By Default

For those running the official Raspberry Pi OS on Raspberry Pi 4 and 5 series single board computers, the Mesa V3DV Vulkan driver is now shipping by default to provide for a better out-of-the-box experience – Phoronix.

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 building CircuitPython with clang.

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 Monitoring Battery Voltage – Adafruit Blog and YouTube.

Catch all the episodes in the YouTube playlist.

CircuitPython Weekly Meeting

CircuitPython Weekly Meeting for April 8th, 2024 (notes) on YouTube.

Project of the Week: A Robotic Arm With A Camera

Robotic Arm With Camera

Kevin McAleer made a cute robot arm with a camera on the end. It uses inverse kinematics to keep the camera pointing forward. Adafruit CircuitPython for Linux is used running on a Raspberry Pi 5 – Mastodon and Twitter.

Popular Last Week

What was the most popular, most clicked link, in last week’s newsletter? Comparing the Three Main Zero Form Factor SBC’s in the Market Right Now.

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.

IKEA Förnufig Air Purifier V2 - Custom fan speed controller + Blinkenlights

IKEA Förnufig Air Purifier V2 – Custom fan speed controller + Blinkenlights – Adafruit Playground.

Wippersnapper - Sensirion SEN55 Particulate/VOC/NOx sensor

Wippersnapper – Sensirion SEN55 Particulate/VOC/NOx sensor – Adafruit Playground.

News From Around the Web

Gundam Cyberdeck

Making a Gundam Cyberdeck using Raspberry Pi Pico and CircuitPython – hackster.io and YouTube.

Use CircuitPython to download BMP images

Use CircuitPython to download BMP images from the web and display them on an ILI9341 LCD display – YouTube via X.

ANAVI Handle

ANAVI Handle allows use of Wii Nunchuk-compatible controllers as USB HID peripherals using a Xiao RP2040 and CircuitPython – X and CrowdSupply.

CircuitPython Class

Class: Training in Electronics and Programming using CircuitPython with Djair Guilhermein, São Paulo, Brazil – SESC São Paulo.


Paul Cutler updated his SongMatrix project to use CircuitPython 9. A Pi listens for what song is playing in the background and uses the Python Shazam library to identify it, sending it to Adafruit IO via MQTT, and a MatrixPortal listens for the MQTT message and displays the song info – Mastodon and GitHub.

How to make a pip boy using esp32

How to make a pip boy using esp32

How to make a Pip Boy using ESP32 – YouTube via X (Portuguese).

Run M5NanoC6 with CircuitPython

Run CircuitPython on the M5Stack NanoC6Qiita (Japanese).


RPiano is an electronic musical instrument using an RP2040, AT42QT1070 touch sensor, Nuvaton I2S amp and Stemma QT port, programmed in CircuitPython – X.

Is the Raspberry Pi losing its spirit?

Has the Raspberry Pi been a victim of its own success, losing the ‘available to all’ charm that made it so successful? – XDA.


A greenhouse Arduino IoT Cloud project using an Adafruit SHT31 sensor and MicroPython – X.

Place Calls from A9G Board using Raspberry Pi Pico W

Place calls from an A9G board using Raspberry Pi Pico W and MicroPython – hackster.io.


Python 3.12 support has been added to the GHI Endpoint single board computer (SBC) – GHI Electronics.

How to protect your home network with a Raspberry Pi firewall

How to protect your home network with a Raspberry Pi firewall – XDA.

Python: Digital Audio and DSP--Baby Steps

Python: Digital Audio and DSP – Baby Steps – AUDIODiWHY.


supernote-cloud-python: a Python wrapper for the unofficial supernote cloud API – GitHub.

How to Make Cyberpunk “Dark Mode” Data Visualizations in Python

How to make Cyberpunk “Dark Mode” data visualizations in Python – Towards Data Science.


MicroPython Programming Guidebook

The MicroPython Programming Guidebook by Kenichi Miyata and Fumio Kado will be released April 23rd – CQ Publishing (Japanese).


A 3D-printed framework from Nerdiy transforms an IKEA RIBBA into an ePaper dashboard powered by Seeed Xiao ESP32-C3 – hackster.io via X.

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 was one new board added:

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:

Updated Learn Guides

Updated Learn Guides

Pi Video Output Using pygame

Simple Raspberry Pi Robot

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 481!

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

  • 217477 PyPI downloads over 325 libraries

Top 10 Libraries by PyPI Downloads

  • Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 10107
  • Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 9693
  • Adafruit CircuitPython ConnectionManager (adafruit-circuitpython-connectionmanager): 7677
  • Adafruit CircuitPython Register (adafruit-circuitpython-register): 2954
  • Adafruit CircuitPython framebuf (adafruit-circuitpython-framebuf): 2085
  • Adafruit CircuitPython RGB Display (adafruit-circuitpython-rgb-display): 2020
  • Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1974
  • Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 1894
  • Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 1808
  • Adafruit CircuitPython ESP32SPI (adafruit-circuitpython-esp32spi): 1696

What’s the CircuitPython team up to this week?

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


I did some work on reducing “deprecation debt” this past week. In CircuitPython 8, we added the settings.toml file, and recommended using that instead of secrets.py to store WiFi credentials. We’ve been updating Learn Guides to use settings.toml gradually. But while helping a user, I found that all our AirLift-based Learn Guides were still using secrets.py, both in the shared “Internet Connect” example, and also in the AirLift project guide code.py files. I revised all the guides I found, several dozen in total, to use settings.toml. Soon I’ll go back and find any remaining uses of secrets.py and fix those as well.


This past week, I’ve continued addressing Raspberry Pi related guide feedback and updating guides as needed. These guides include Adding a Real Time Clock to Raspberry Pi, Adafruit RGB Matrix + Real Time Clock HAT for Raspberry Pi, Simple Raspberry Pi Robot, Pi Video Output Using pygame, and Pi Hole Ad Blocker with Pi Zero W.


This week I finished up the refactoring inside of circup. It’s now split up into more manageable sized chunks. While working in there I made changes to resolve a few issues. I’ve also made some changes inside of circuitpython-build-tools to make the examples inside the bundles get grouped into subdirectories by module, previously they were all put into one directory together. I’ll be trying to add example loading capability to circup next now that those are grouped.


Last week I finished up my PyCascades talk. I came down with a cold so my recording from Deep Dive may be easier to understand than my actual talk. Besides that, I’ve finished up the USB host FeatherWing support (MAX3421E) in CircuitPython and it was merged. Check it out in the next 9.1.0 beta!

Next week I’ll be at the Embedded Open Source Summit. Reach out to me on Discord if you will be there and want to meet up!


This past week I published a guide for the STEMMA Reflective Photo Interrupt Sensor. This sensor is great at detecting objects and is easy to code with a simple digital input.

I also worked on code for two upcoming projects in Arduino. The first uses a Pico W with a DVI PiCowbell to display Adafruit IO feeds. The second uses the MAX3421E USB Host FeatherWing with an ESP32-S3 TFT Feather. The code takes in USB commands from a USB keyboard and sends them out via BLE, essentially converting a USB device to BLE. Both of these projects will be written up as guides soon.

Upcoming Events

MicroPython Meetup

The next MicroPython Meetup in Melbourne will be on April 24th – Meetup. You can see recordings of previous meetings on YouTube.

2024 Open Hardware Summit

The 2024 Open Hardware Summit will be taking place May 3 & 4, 2024 at Concordia University and lespacemaker in Montreal, Canada – oshwa.org.

PyCon US 2024

PyCon US 2024 launches May 15-23, 2024 in Pittsburgh, Pennsylvania US – PyCon US.

Open Sauce

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

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. The organizing team welcomes you to submit your proposals to the CfP by May 21st – PyOhio.

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.3 and its unstable release is 9.1.0-beta.0. New to CircuitPython? Start with our Welcome to CircuitPython Guide.

20240411 is the latest Adafruit CircuitPython library bundle.

20240412 is the latest CircuitPython Community library bundle.

v1.22.2 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.0a6.

3,882 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.

39,045 Thanks

39,045 THANKS

Adafruit Discord

The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 39,045 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.