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

View this email in your browser. Warning: Some Flashing Imagery

Welcome to the latest Python on Microcontrollers newsletter! A busy week with a surprising amount of activity in the Python on hardware community. New software and so many innovative combinations of hardware plus software. Most of this capability was just something one dreamed about a short while ago. It is the community driving innovation and the chip shortage easing which is releasing the floodgates. As we head into summer, I look forward to your projects. – 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:

A New Release of the Thonny Editor Provides New Features


A new version of the Thonny Python editor has been released with bug fixes and new features. The default installation uses Python 3.10 and looks to run in 64 bit mode. The ESP flashing dialog now allows selecting from list of known MicroPython and CircuitPython variants and downloads them for you – GitHub via Twitter.

PyCon US ‘23 and PyCascades ‘23 Videos Are Now Out

PyCon US '23 Videos

The PyCon US 2023 talk recordings are now available on the PyCon US YouTube channel – YouTube.

PyCascades '23 Videos

The PyCascades 2023 talk recordings are now available on the PyCascades YouTube channel – YouTube.

A New MicroPython YouTube Channel

New MicroPython YouTube Channel

MicroPython now has an official YouTube channel for their videos – YouTube.

Software Driving Hardware

Software Driving Hardware

Hackaday was talking about Christopher Barnatt’s very insightful analysis of what the future holds for the Raspberry Pi single board computers on their Podcast. On the one hand, they’re becoming such competent computers that they are beginning to compete with lightweight desktop machines, instead of just being a hacker curiosity.

On the other hand, especially given the shortage and the increase in price that has come with the Pi’s expanding memory endowments, a lot of people who would “just throw in a Raspberry Pi” are starting to think more carefully about their options.

These days, there is no shortage of microcontrollers that have enough memory – both flash and RAM – to support a higher-level environment like MicroPython. And if you think about it, MicroPython brings to the microcontrollers a lot of what people were using a Raspberry Pi for in projects anyway: a friendly interactive programming environment that was free of the compile-here, flash-there debug cycle. If you’re happy coding Python on a single-board Linux computer, you’ll be more or less happy coding in MicroPython or CircuitPython on a microcontroller – Hackaday.

Git 2.41 Released

Git 2.41 Released

Git 2.41 was released June 1st with features and bug fixes from over 95 contributors – GitHub Blog and Release Notes.

From the Python Software Foundation

Python Software Foundation

Python Language Summit – Python core developers, triagers, and special guests gathered for the Python Language Summit: an all-day event of talks where the future direction of Python was discussed. The Language Summit 2023, just before PyCon US ‘23, included three back-to-back talks on the C API, an update on work towards making the Global Interpreter Lock optional, and a discussion on how to tackle burnout in the community – PSF Blog.

PSF Board of Directors Openings – Nominations for the Python Software Foundation Board of Directors are open – PSF Blog.

PyLadies Presents: Careers with Python

Careers with Python

This meetup is the third volume of the “Careers with Python” series that aims to guide one through the various career paths and opportunities available as a Python developer. June 20th, 2023 in Amsterdam – Meetup.

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

This week, Tim streamed work on HT16k33 segment display 14×4 scrolling.

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 Color Gradients with NeoPixels – Adafruit Blog and YouTube.

Catch all the episodes in the YouTube playlist.

The CircuitPython Show

The CircuitPython Show

The CircuitPython Show is an independent podcast hosted by Paul Cutler, focusing on the people doing awesome things with CircuitPython. Each episode features Paul in conversation with a guest for a short interview – CircuitPythonShow.

The latest episode was released June 5th and features Martin Tan. Martin and Paul discuss Martin’s new book, micro:bit Projects with Python and Single Board Computers: Building STEAM Projects with Code Club and Kids’ Maker Groups – Show List.

Project of the Week: Making a Massive Functional Nose

A massive nose sniffs things

A massive nose sniffs things

This massive nose sniffs things then prints a description of the smell. Adnose is an interactive sculpture combining image recognition and machine learning. It was 3D printed in separate pieces before being assembled and then finished to give it a sculptural look. It uses a Raspberry Pi 4, camera, distance sensor, thermal printer and speaker, programmed through a Python script – Raspberry Pi News.

News from around the web!

Cable Tester

A Raspberry Pi Pico powered cable tester/identifier running CircuitPython – Twitter.

VCVRack CableControl

VCVRack CableControl is a virtual cable controller for the VCVRack Eurorack emulator which requires nothing more than a Raspberry Pi Pico (or other CircuitPython compatible microcontroller). The software is written in CircuitPython. It provides 26 physical sockets which can be distributed as inputs or outputs – GitHub.


Measuring sleep current on an ESP32-S2 running CircuitPython – Twitter.


“First thing I put together to try out this new uploaded was an a-MAZE-ing new program for my M5Stack Core Basic. Look at the little triangle guy trying to get through the maze! I’m really liking the vectorio library from CircuitPython, shapes are easy!” – Twitter and GitHub.


“A CircuitPython draft build running on an RP2040 providing all the drum and key sounds with synthio” – Twitter and GitHub.

What's That Smell? Detecting Air Quality with Python

A PyCascades talk: What’s That Smell? Detecting Air Quality with Python (and Raspberry Pi) – YouTube.

Office Fun

“Faculty have seen a drop in student visitors post-COVID, so I Funked Up my Boston College office for more fun. Also a great way to teach IoT and MQTT with the Raspberry Pi Pico W, Adafruit IO, and CircuitPython” – YouTube First Video, YouTube Second Video, and GitHub, via Twitter.

Widow's Might: Non-emergency IoT service Buttons for Elders

Widow’s Might: Non-emergency IoT service Buttons for Elders – Hackster and Hackaday.

Potato Pico

Trying to power a Raspberry Pi Pico running MicroPython with a battery made from potatoes – Twitter.

CST816S Driver

A touchscreen library (CST816S) for the RP2040 Waveshare Round 1.28” LCD in CircuitPython – Twitter.


Programming an Adafruit MagTag eInk display to show a daily brain teaser on a refrigerator using CircuitPython – Twitter.


Connecting a VL6180X distance sensor to a Raspberry Pi Pico running CircuitPython – RP2040learning.com.

Remote Server Monitoring

Raspberry Pi Remote Server Monitoring over WiFi: MicroPython code to monitor a TCP port using usocket – YouTube.

Reusing ESP32-S3 USB Pins

Reusing USB pins GPIO19 and 20 on an ESP32-S3 with MicroPython – maripo.org.

ChatGPT Fish

A Raspberry Pi uses ChatGPT to get answers, fed to a Big Mouth Billy Bass – Tom’s Hardware.


Custom MicroPython (tiny) bitmap fonts for the Pimoroni RP2040 Cosmic Unicorn – Twitter and GitHub.

ESP32 Setup

A standard MicroPython script to set up a new ESP32. The secrets.py file contains the ssid/pwd (and more). The main script can be published safely. Copy, paste, save, run – Twitter.


Lua: The Little Language That Could – Matt Blewitt.

PyDev of the Week: Daniel Alejandro Mesejo-León on Mouse vs Python

CircuitPython Weekly Meeting for 5/30/23 (notes) on YouTube

CircuitPython Weekly Meeting for 6/5/23 (notes) on YouTube

#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? DeviceScript.

Coming Soon

Prop-Maker Feather

The Adafruit Prop-Maker Feather RP2040 is a great new board for making props and toys that have audio, motion and LEDs. There is a quick demo that shows off LED animations on NeoPixels, motion sensing with the LIS3DH accelerometer, servo output control to a micro servo, and audio playback via a 3W I2S amplifier – Adafruit.

Pimoroni Inventor HAT MiniPimoroni Inventor HAT Minito

The Pimoroni Inventor HAT Mini is a versatile motor, servo, and audio driver HAT for Raspberry Pi. Bring your mechanical inventions, creations, and contraptions to life – Adafruit.

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 were no new boards added, but several are in the pipeline.

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

Building CircuitPython from Dan Halbert

CircuitPython Libraries

CircuitPython Libraries

CircuitPython support for hardware continues to grow. We are adding support for new sensors and breakouts all the time, as well as improving on the drivers we already have. As we add more libraries and update current ones, you can keep up with all the changes right here!

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

If you’d like to contribute, CircuitPython libraries are a great place to start. Have an idea for a new driver? File an issue on CircuitPython! Have you written a library you’d like to make available? Submit it to the CircuitPython Community Bundle. Interested in helping with current libraries? Check out the CircuitPython.org Contributing page. We’ve included open pull requests and issues from the libraries, and details about repo-level issues that need to be addressed. We have a guide on contributing to CircuitPython with Git and GitHub if you need help getting started. You can also find us in the #circuitpython 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 441!

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

  • 111186 PyPI downloads over 310 libraries

Top 10 Libraries by PyPI Downloads

  • Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 7692
  • Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 7429
  • Adafruit CircuitPython Register (adafruit-circuitpython-register): 2121
  • Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1521
  • Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1019
  • Adafruit CircuitPython Pixelbuf (adafruit-circuitpython-pixelbuf): 879
  • Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 866
  • Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 865
  • Adafruit CircuitPython BLE (adafruit-circuitpython-ble): 779
  • Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 753

What’s the CircuitPython team up to this week?

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


This week I’ve been working on making the fetching of submodules more selective in the CircuitPython repo. The idea is to fetch only the submodules you need. If you’re building only for a particular port, there’s no reason to fetch all the submodules for every port, which can take minutes.

I’ve also talked with Greg Neverov and looked at his proposals for asyncio again, as we start working on what we want in the 9.0.0 release.


This week I finished up the Feather RP2040 DVI guide. It was started before the board came out, but there were some issues, so getting the board into the shop was delayed. The guide was set aside, and not dealt with again until the past week. It’s completed now! If you picked up one of these nifty boards, check out the guide. It has everything you need to get started, including CircuitPython and Arduino DVI video examples!

Next up in guide land is the CHOC NeoKey breakout, followed by the STEMMA QT Gamepad. Keep an eye out for those coming soon!


This past week I’ve been catching up on GitHub issues. I’ve been focusing on the display issues in the Raspberry Pi Installer Scripts GitHub repository. One of the issues that took some time was updating the Display Driver for the 1.14” display so that it fixes the offsets. I started with the source code from the current driver and added the calculations from the old driver and was able to get it working again.


This week I’ve been going back through typing PRs submitted during PyCon that needed additional changes still and doing what I can to move them forward. I also started digging into a displayio issue submitted recently that results in hidden objects making the refresh rendering time longer than they would if they were visible, I’ve attempted a few fixes and had some success in figuring out where the hidden items are taking extra time. It still needs some additional testing and likely a few more changes before it’s ready to go.


Another week, another synthio improvement. In a new pull request, the overall FIR filtering is replaced with per note biquad filtering, which is more frequently used in audio synthesis. This allows each sound to have a different filter, which is especially useful for creating percussive effects where a drum might have a low pass filter while a high hat would use a high pass filter. Mark (gamblor) demonstrated this during last week’s Show and Tell program.


This week I’ve been mostly working in the Pyrate code. I added 1-Wire support and am working on UART support. UART is a bit tricky because the pins on the Pyrate board don’t support native UART. So, I’m polishing up the PIO code used for UART. That code will allow us to use any pin for TX or RX.


This week I’ve been working on a synth that uses the ANO rotary encoders. The code is written in CircuitPython with the new synthio module features. It is probably the longest code I’ve ever written in CircuitPython and it’s been super fun adding different modes to show the features in synthio. The guide should be live soon along with some demo videos.

Upcoming events!

MicroPython Meetup

The next MicroPython Meetup in Melbourne will be on June 28th – Meetup. From the May 24th meeting – Notes.

EuroPython 2023

EuroPython 2023 will be July 17-23, 2023, in Prague, Czech Republic and Remote – EuroPython 2023.


PyCon UK will be returning to Cardiff City Hall from Friday 22nd September to Monday 25th September 2023 – PyCon UK.

Hackaday Supercon 2023

Hackaday has announced that the Hackaday Supercon is on for 2023, and will be taking place November 3 – 5 in Pasadena, California, USA.They’d like to hear your proposals for talks and workshops! The Call for Speakers and Call for Workshops forms are online now, and you have until July 18th to sign up – Adafruit Blog and Hackaday.

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

20230605 is the latest CircuitPython library bundle.

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

3.11.3 is the latest Python release. The latest pre-release version is 3.12.0b1.

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

37,422 thanks!

37,422 THANKS

Adafruit Discord

The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 37,422 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, IGTV (Instagram TV), 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 Tuesday. 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.