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

View this email in your browser.

Happy February! Here’s the latest Python for Microcontrollers newsletter, brought you by the community! We’re on Discord, Twitter, and for past newsletters – view them all here. If you’re reading this on the web, subscribe here.

Content warning – moving images with flashing lights

LCA 2021 Online Keynote: The Story Behind Blinka by Limor Fried

LCA 2021 Online Keynote

LCA 2021 Online Keynote

Limor Fried, founder of Adafruit, gave a keynote talk on the “The Story Behind Blinka”, discussing CircuitPython, at Linux Conference Australia 2021. The video is now available – YouTube

Die shots of the Raspberry Pi RP2040 chip

RP2040 Die Shots

RP2040 Die Shots

An informative thread on Twitter, starting with x-rays of the new Raspberry Pi Pico board and subsequently going layer by layer through the board’s RP2040 chip. The die shots are both beautiful and informative in understanding this new chip. The thread indicates the chip is made in 40nm and at the TSMC fab – Adafruit Blog and Twitter with zoomable image.

27,000 thanks!

27,000 THANKS

Adafruit Discord

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

pip updates


pip is the package installer for Python. pip installs packages from the Python Package Index. A late January update introduced two important changes: Support for Python 2 has been removed. Also support for mainline Python 3.5 has been removed. More – pip.pypa.io

CircuitPython Deep Dive Stream with Scott Shawcroft

Deep Dive with Scott

This week, Scott streams his work on RP2040 DMA and Audio.

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

News from around the web!

CircuitPython Digital Assistant

Melissa LeBlanc-Williams is working on a fun little side project – Twitter.

I call it the CPDA or CircuitPython Digital Assistant running on an Adafruit PyPortal Titano. I’ve only worked on it for a few days so far. The icons will be reworked eventually. It is able to launch apps right off an SD Card.

Edge-lit spiral

An edge-lit spiral. This one uses a single standard LED strip, wound around the path of the spiral. No soldering at all. Animations generated by the Adafruit led_animation CircuitPython library running on an Adafruit ItsyBitsy M4 boardTwitter.

Illuminated fiber-optic hyperbolic paraboloid

Build instructions are now available for the illuminated fiber-optic hyperbolic paraboloid – Geek Mom Projects via Twitter.

Pico parrots

Pico parrots with a Raspberry Pi Pico running CircuitPython – Twitter.

COVID mask distributing robot

Mil Mascaras is an iOS-controlled, CircuitPython-powered Raspberry Pi robot that can offering face masks, “speak” selected sound-files on demand, and move about. It is a no-solder, beginner-friendly robot project. Follow along step-by-step tutorial at on gallaugher.com with code on GitHub. See more on YouTube via Twitter.

Raspberry Pi Pico Sculpture

A circuit sculpture with a Raspberry Pi Pico and Adafruit CircuitPython – Twitter.

Raspberry Pi Pico Plays Bach

A Raspberry Pi Pico Plays Bach – Adafruit Blog, Blog and YouTube.

LED Matrix Stock Ticker

An Adafruit Matrix Portal and CircuitPython powered internet display to fetch stock information from the web – Twitter and GitHub.

Pi Pico draws in MS Paint

A Pi Pico draws in MS Paint – hackaday.io and YouTube.

OSC Eyes

Developing an OSC device using Sonic Pi and a Raspberry Pi Pico. The ADC read CircuitPython slider allows the pupils on the dinkyOSC to move all around the eye – Twitter.

Temperature Logging

18 hours worth of temperature data logged and displayed on a Raspberry Pi Pico and Pimoroni PicoDisplay with MicroPython – Twitter.

Pi Pico emulating an Etch-a-sketch

A Raspberry Pi Pico emulating an Etch-a-sketch – RAREblog.

Timers and Interrupts with a Esp32

A guide and video on timers and interrupts with an ESP32 NodeMCU and MicroPython – Guide, YouTube via Twitter.

ESP32 Talking Weather broadcast

A talking weather broadcast with an ESP32 and MicroPython – YouTube via Twitter.

Pico tutorial

A sneak-peak demo of a Pico tutorial from next month’s HackSpace magazine using MicroPython – Twitter.

Using an HCSR04P or HCSR04+ Ultrasonic Sensor with a Raspberry Pi Pico and MicroPython

Using an HCSR04P or HCSR04+ Ultrasonic Sensor with a Raspberry Pi Pico and MicroPython – Tom’s Hardware via Twitter.

Making is Show Business now

Making is Show Business now – alexdanco.com.

Hexabitz Piano

A Hexabitz Piano, controllable from Raspberry Pi and a Python GUI – Adafruit Blog.

A comprehensive guide to debugging Python scripts in VS Code

A comprehensive guide to debugging Python scripts in VS Code, how to efficiently debug your scripts in 10 mins – Towards Data Science.

Make Your First Python Game

Make Your First Python Game: Rock, Paper, Scissors – Real Python.

Become a More Efficient Python Programmer

Become a More Efficient Python Programmer – Towards Data Science.

History of Python Package Managers

The History of Python Package Managers – nickmccullum.com.

Why we don't use python native enums

Why we don’t use Python native enums – kodare.net.

Grammar of Graphics for Python

Plotnine: Grammar of Graphics for Python – a translation of the visualisation chapters from “R for Data Science” to Python using Plotnine and Pandas – datascienceworkshops.com.

CircuitPython Weekly Meeting for February 1st, 2021 notes and on YouTube

PyDev of the Week: Carl Friedrich Bolz from Mouse vs Python

#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Adafruit Learning Guide: Getting Started with Raspberry Pi Pico and CircuitPython.

Coming soon

TCA8418 keyboard matrix driver

A TCA8418 keyboard matrix driver – Desk of Ladyada on YouTube.


The Cricket-S2 is getting a revision, It is an ESP32-S2 based, CircuitPython capable, board in a Raspberry Pi Zero board format – Twitter.

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 2 new boards added!

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

Neopixel Crystal Chandelier with CircuitPython Animations and Speed Control from Erin St. Blaine

Raspberry Pi YouTube Boombox from Noe and Pedro

Adafruit Feather M4 CAN Express from Kattni

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 channel 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 290!

New Libraries!

Here’s this week’s new CircuitPython libraries:

Updated Libraries!

Here’s this week’s updated CircuitPython libraries:

  • A list of updated libraries can be found here.

What’s the team up to this week?

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


I made a CircuitPython 6.2.0-beta.0 release last week, and just today (written 1/27) released 6.2.0-beta.1. These releases include support for the Raspberry Pi RP2040 chip. Thanks, Scott, for that port!

In beta.1 I made it a lot easier to enable and disable json, re, and other modules that we inherited from MicroPython but haven’t yet incorporated into the CircuitPython style of coding native modules. I also cleaned up the documentation for those modules, removing the MicroPython ujson and ure style of naming.

I continued to work on the mysterious slow files writes issue. I have a fix but it’s fixing the symptom rather than the underlying problem, so we’ll try to find the root cause.

As I may have mentioned before, the next significant project I’ll be working on is a secondary CDC (serial) USB channel. This will allow easy serial communication with a host computer without worrying about the REPL and things like ctrl-C getting in the way.


This past week, I created a MagTag project to show the poem that Amanda Gorman read at the Inauguration, showing one new line every hour. To make it work how I wanted, I wrote a function to precisely wrap text according to its width in pixels. Discord’s FoamyGuy (Tim) has stepped up and plans to bring this feature to a future version of the adafruit_display_text library. I wrote more about it on my blog.


I also updated the “Protomatter” library for RGBMatrix. This version adds support for stacked or “tiled” displays. For instance, you can now take 4 64×32 displays, arrange them as two rows of two, and use them as a virtual 128×64 display. This feature is in the first 6.2 alpha release. An update to the matrixportal library and the guide page are on the way as well.



I worked on a lot of miscellaneous this week, as we spent the week getting caught up with RP2040 launch whatnot. I updated the MPR121 guide to include the STEMMA QT revision, and everything that goes with that such as new wiring diagrams and images. I created a repo for a new CircuitPython library called DisplayIO_Layout that will initially be populated with a grid layout concept from @foamyguy and @kmatch98. I used the base code in a personal project and I’m really looking forward to it being available as a library for others to use. I fixed up a couple of wiring diagrams that were done up wrong. I merged a PR from a community contributor on the CircuitPlayground library to add further configuration for tap, and then removed some unnecessary code now that we have CircuitPython 6.x stable and beta in play. Finally, I’ve been keeping up with questions on Discord regarding the new Pico and its RP2040 chip as folks are getting their new boards and trying them out with CircuitPython.


This past week, I’ve been debugging Socket, moving through a list of new issues and concerns as more people get their hands on the module and start testing. I also took a little time to get up to date on the features of the newly revealed RP2040, and have gotten some new low power monitoring tools, so I’m looking forward to contributing to those projects as well.


This past week I mostly worked on closing a variety of GitHub issues and reviewing some GitHub Pull Requests. I also took a look at Home Assistant and figuring out what is required to get some of our sensors working. I ended up using CircuitPython to publish messages directly to MQTT and added a device into the configuration. I will be working on writing a guide, so keep an eye out for that.


This week was a whirlwind with the launch of the RP2040. I’ve been answering lots of questions and continuing to do a bunch of reviews.

My next goal is to add audio playback support to the RP2040. It’s been a bit slow to get my brain back in audio mode, but I hope to have something playing for Friday’s stream. (I’m hoping to knock out PWM and I2S output.)

Upcoming events!

FOSDEM 2021 Python Developer Room

FOSDEM is a free and non-commercial event organised by the community for the community. Typically hosted in Brussels, Belgium, FOSDEM 2021 is taking place online February 6-7, 2021. This year, there will be a Python Developer Room. Details – Adafruit Blog.

PyCascades 2021

PyCascades is a regional PyCon in the Pacific Northwest, celebrating the west coast Python developer and user community. Held online February 19th — 21st, 2021 – PyCascades.

2021 Open Hardware Summit

The 2021 Open Hardware summit will be held online, Friday April 9, 2021. The summit will be livestreamed, but ticket holders will have access to additional interactive portions of the summit like meet-and-greets, workshops, and sponsor booths. Find details, including ticket and sponsorship information at 2021.oshwa.orgOSHWA.

GeoPython 2021

The online GeoPython conference is focused on Python and Geo, its toolkits and applications. April 22-23, 2021 – https://2021.geopython.net/.

PyCon US 2021

PyCon US, the annual official annual Python gathering, has been announced to be held online May 12-15, 2021. Sprints will be held May 16-18, 2021. More information and signups at https://us.pycon.org/2021/

Send Your Events In

As for other events, with the COVID pandemic, most in-person events are postponed or cancelled. If you know of virtual events or events that may occur in the future, please let us know on Discord or on Twitter with hashtag #CircuitPython.

Latest releases

CircuitPython’s stable release is 6.1.0 and its unstable release is 6.2.0-beta.1. New to CircuitPython? Start with our Welcome to CircuitPython Guide.

20210201 is the latest CircuitPython library bundle.

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

3.9.1 is the latest Python release. The latest pre-release version is 3.10.0a4.

2,217 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.

jobs.adafruit.com – Find a dream job, find great candidates!


jobs.adafruit.com has returned and folks are posting their skills (including CircuitPython) and companies are looking for talented makers to join their companies – from Digi-Key, to Hackaday, Microcenter, Raspberry Pi and more.

Job of the Week

Community Game Designer – Hack Club – Adafruit Jobs Board.

You hear a friendly dragon whisper “hack club is cool”. You’re inclined to agree. You find yourself compelled to type the following into your terminal to learn about the open game designer position at hack club: $ ssh jobs.hackclub.com

ICYMI – In case you missed it


The wonderful world of Python on hardware! This is our Python video-newsletter-podcast! The news comes from the Python community, Discord, Adafruit communities and more and is reviewed on ASK an ENGINEER Wednesdays. The complete Python on Hardware weekly videocast playlist is here.

This video podcast is on iTunes, YouTube, IGTV (Instagram TV), and XML.

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.

And lastly, we are working up a one-spot destination for all things podcast-able here – podcasts.adafruit.com


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 our Discord or post to the forum for any further questions.