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

View this email in your browser.

Welcome to the latest Python on 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. Let’s get started!

Tom’s Hardware Best RP2040 Boards 2021

Best RP2040 Boards

While Raspberry Pi has its own RP2040-powered board in the Raspberry Pi Pico, there are now more than a dozen, third-party solutions that offer improvements which range from smaller sizes to built-in Wi-Fi, more storage or a lot of additional outputs. There are even RP2040-powered keypads.

To help you choose, we’ve listed the best RP2040 boards below. These boards can be used for everything from general learning to building Wi-Fi connected robots to implementing basic A.I.

Adafruit has three of the 10 boards! – Tom’s Hardware.

GitHub repository use from within Visual Studio Code

GitHub repository use from within Visual Studio Code

GitHub repository use from within Visual Studio Code

GitHub repository use from within Visual Studio Code

The Remote Repositories extension lets you quickly browse, search, edit, and commit to any remote GitHub repository directly from within Visual Studio Code – Visual Studio Code Blog and YouTube.

2021 – The Year Windows Became a First Class Python Development Environment

Windows Powershell

I felt so badly burned by Apple’s laptop hardware design decisions of a few years ago that I’ve rather fallen out of love with that platform for my personal work. My first choice was the Linux desktop, and after months of struggling, instability and accessibility issues I’ll admit I’ve been looking for stable, solid alternatives that are also powerful enough to get the job done and maybe even have something new to offer… If you’ve tangoed with Windows in the past, and found yourself struggling against its rather byzantine UI, I’d urge you to read on and see if maybe it’s not time for another careful look.

2021 – The Year Windows Became a First Class Python Development Environment – Blind Not Dumb.

PyFest This week!


PyFest is an online festival dedicated to Python. The aim is to bring all the Python community together in a fun and interactive event.

Join for a series of lighting talks, artistic performances, quizzes and more… starting on 16 June 2021.

PyFest will be free and streamed on YouTube and TwitchPyFest.

The CircuitPython Parsec with John Park

CircuitPython Parsec

This week, John shows how to use the CircuitPython map_range function.

You can see the latest video and past videos on the Adafruit YouTube channel under John Park’s CircuitPython Parsec playlist – YouTube.

News from around the web!

Make: Boards Guide Review: Adafruit Neo Trinkey

Make Boards Guide Review: Adafruit Neo Trinkey – Make.


magtag-keps – get the top post from Reddit r/worldnews without using Reddit’s API and display on an Adafruit MagTag – GitHub.

RP2040 Powered Shortcut Keyboard

How to Build an RP2040 Powered Shortcut Keyboard with CircuitPython – Tom’s Hardware and YouTube.


Finally got the Pimoroni blinkt! working in CircuitPython on a Seeedstudio Xiao – Twitter.

Wave by Genki

Wave is a unique smart ring by Genki. There is a repository for the official Python API interface for Wave, arguably the easiest way to work with data from motion sensors in Python – GitHub and Genki.

CircuitPython 7 Beta

I upgraded my M4 to CircuitPython 7.0b3 with an Airlift and getting the mpy library from bundle and community bundle. The HDMI output is from the Gameduino 3X Dazzler – Twitter.

3D Printed Macropad

“The worlds cutest 3D printed macropad” inspired by Romly‘s keycappie and powered by Adafruit QT Py and CircuitPython – Twitter.

Plant Watering

Second big testing round of a plant watering project. Now with real sensors. Prototyped with 2 cables in water, it simply detects if there is water left in the tank or not, and if not, it’s refilled completely to stop the pump and close the valve. Done in CircuitPython – Twitter.

Audio and LEDs

Audio and LEDs

It’s pretty easy to get audio and LEDs playing at the same time in CircuitPython on Raspberry Pi Pico RP2040 boards. This example on an Adafruit QT Py RP2040 – Twitter.

Flipping Dots

Finally getting around to updating this project with CircuitPython in preparation for the next version (stepper motor for that one). Unexpected Maker and Adafruit are helping make this happen – Twitter.

CircuitPython with The Kitronik Motor Driver Boards

Using CircuitPython With The Kitronik Motor Driver Boards for Raspberry Pi Pico – Kitronik.

Introduction to Self-Made Keyboard in CircuitPython

Introduction to Self-Made Keyboard in CircuitPython from PyCon mini Hiroshima (Japanese) – Twitter and Slides.

Light-up Jar

A 4” pitch 20 light NeoPixel strand in a mason jar with gel beads for light diffusion, connected to a Circuit Playground Bluefruit and a simple CircuitPython script – Twitter.

CircuitPython FPGA programmer

Configuring an FPGA using a SAMD21 development board running a CircuitPython script – Twitter.

Toy Keyboard

Toy Keyboard USB Matrix Decode with the Pi Pico and CircuitPython – DIY Electromusic.


A scrolling text graduation gown with CircuitPython and an LED matrix display – Twitter.

Pew Pew Variations

Pushing the “just make it out of PCB” thing, and do buttons (touch), battery holder and USB socket all from a 0.6mm PCB, with just the MCU and the screen as discrete parts running CircuitPython – Twitter Thread.

Replace "master/slave" with "controller/peripheral"

MicroPython PR: Replace “master/slave” with “controller/peripheral” for SPI – GitHub and Adafruit Blog.

Raspberry Pi Pico MIDI Channel Router

Raspberry Pi Pico MIDI One to Eight Channel Router with MicroPython – DIY Electromusic and YouTube.

MicroPython and Ikea SmartHome

MicroPython and Ikea SmartHome – Trammell Hudson.

unPi Sonar Glass

unPi Sonar Glass: a proof of concept, inexpensive Smart Visor for the Blind, built with MicroPython on a Raspberry Pico – unpi.ro.

Pico Robot

A Raspberry Pi Pico MicroPython base robot – Coder Dojo and YouTube.

JSON Import

Directly import json files into your Python code. Let’s say you have a json file named info.json. After installing this Python package you can use json data by adding import info to your code – GitHub.

Listening to Satellites with my Raspberry Pi

Listening to Satellites with my Raspberry Pi – healeycodes.com.

Air Piano using OpenCV and Python

Air Piano using OpenCV and Python – Towards Data Science and GitHub.


pytube – a lightweight, dependency-free Python library (and command-line utility) for downloading YouTube Videos – GitHub and pytube.io.

Setting Up Python

Python Basics: Setting Up Python video – Twitter and Real Python.


Python is 1.3x faster by just adjusting some compiling options for libpython – Python Bug Tracker.

The 2021 Python Language Summit: What is the stdlib? – PSF Blog.

What’s New In Python 3.10 – Python Docs.


Gooey: Turn (almost) any Python 2 or 3 Console Program into a GUI application with one line – GitHub.

How I teach Python on the Raspberry Pi 400 at the public library

How I teach Python on the Raspberry Pi 400 at the public library – opensource.com.

Securing the open source supply chain by scanning for package registry credentials

Securing the open source supply chain by scanning for package registry credentials – GitHub Blog.

Switch Statements in Python 3.10 – Dev.

PyDev of the Week: Raghav Bali on Mouse vs Python

CircuitPython Weekly Meeting for July 6th, 2020 (notes) on YouTube

#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? pyRTOS: a real-time operating system (RTOS) for CircuitPython.

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 two 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

FunHouse IoT Fume Extractor and Air Quality Sensor from Liz Clark

Improved AMG8833 PyGamer Thermal Camera from Jan Goolsbey

Python Edge Speech Recognition with Voice2JSON from Melissa LeBlanc-Williams

Deco Two-Key Feather Macro Pad from John Park

Updated Learn Guides!

Contribute to CircuitPython with Git and GitHub from Kattni

CircuitPython Project Bundle


When you get to the CircuitPython code section of an Adafruit Learn Guide, sometimes things can get a bit complicated. You not only have the code you need to upload to your device, but you likely also need to add some libraries that the code requires to run. This involved downloading all the libraries, digging through to find the ones you need, and copying them to your device. That was only the beginning on some projects, as those that include images and/or sound files required further downloading and copying of files. But, not anymore!

Now, with Project Bundles, you can download all the necessary code, libraries and, if needed, asset files with one click! We automatically check which libraries are required for the project and bundle them up for you. No more digging through a huge list of libraries to find the ones you need, or fiddling with looking for other files or dependencies. Download the Project Bundle, copy the contents to your device, and your code will simply work. We wanted to make this the easiest way to get a project working, regardless of whether you’re a beginner or an expert. We’ll also be adding this feature to popular IDEs as an add-on. Try it out with any Circuit Python guide on the Adafruit Learning System. Just look for the ‘Download Project Bundle’ button on the code page.

To download and use a Project Bundle:

In the Learning System – above any embedded code in a guide in the Adafruit Learn System, you’ll find a Download Project Bundle button.

Project Bundle download button

Click the button to download the Project Bundle zip.

Project Bundle zip downloaded

Open the Project Bundle zip to find the example code, all necessary libraries, and, if available, any images, sounds, etc.

Project Bundle unzipped

Simply copy all the files over to your CIRCUITPY drive, and you’re ready to go!

If you run into any problems or bugs, or would like to submit feedback, please file an issue on the Adafruit Learning System Guides GitHub repo.

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

New Libraries!

Here’s this week’s new CircuitPython libraries:

Updated Libraries!

Here’s this week’s updated CircuitPython libraries:

What’s the team up to this week?

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


I released CircuitPython 7.0.0-alpha.3 last week. This the first 7.0.0 release that’s been listed on circuitpython.org, even though the tag is “alpha.3”.

I’m continuing to work on keypad scanning support. I was on vacation for part of the past week, but will finish the initial support soon.


I’ve continued working on ParallelImageCapture (camera) support for ESP32-S2, and have added a Pull Request to add this feature to CircuitPython. So far, it works with the OV7670 camera, like SAMD51 and RP2040 do.

On the way, I added a board definition for the second (and current) version of the Kaluga development board, v1.3. This version has a few pinout modifications that are supposed to let the camera work better; I also learned that, on either version, the camera module can interfere with the remote debugging feature, which creates challenges. If you have a Kaluga, check the silk screen on the bottom to find out which version it is.

Finally, while I haven’t filed a pull request about it yet, I discovered and fixed a small bug in CircuitPython that could trigger a crash but only with a custom “debug build”.


This week we moved the rest of the CircuitPython GitHub repositories to the main default branch. This is an important change for many reasons. It affects contributors – the easiest solution is to delete your fork and clone, and start with a fresh fork and clone.

I also completed a massive list of miscellaneous things that came up over the weekend and throughout the week, including adding the 7.x bundle to circuitpython.org, adding a NeoPixel example to the Rotary QT Trinkey guide and more.

I started the Slider Trinkey guide and the QTRP2040 guide. Look for the Slider Trinkey guide soon, and the QTRP2040 guide not long after.


While I took a week off this past week, I’ve most recently been working on the documentation for the sleep modes, paired with updates to the new RP2040 alarm module. I finally got a Nordic PPK2 testing board in to assist with power analysis, which has been out of stock all spring and just finally came back in with the online retailers. It’s been nice to verify the power savings from the sleep modes concretely – I’m excited to revive some personal datalogging projects with Circuitpython now that I can get months of battery life per AA battery.


This past week I finished working on a new guide that uses Voice2JSON to implement a very customizable Voice Assistant. Voice2JSON allows for speech recognition that runs directly on your device without the need to go out to the internet to recognize what you are saying. You can check out the guide here.


This week I’ve been bug hunting issues with the BLE workflow in the core. At this point, I think the major issues have been ironed out. Most of the issues were surrounding BLE encryption and bonding. (Bonding is the process of remembering the security keys to encrypt the connection for use in reconnecting.) Once bonded, devices may choose to broadcast an encrypted version of its device ID which reduces the ease of tracking as well. With these changes, I hope it’ll be solid enough for testing with the app while I’m on vacation for next week (back June 21st).

Upcoming events!

EuroPython 2021

EuroPython, the largest conference for the Python programming language in Europe, will be held online July 26 – August 1, 2021. More information at https://ep2021.europython.eu/


PyOhio 2021 is a free event on July 31, 2021 – PyOhio.org via Twitter.

PyConline AU

PyConline AU will be held 10-12 September, 2021 – pyconlineau

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

20210612 is the latest CircuitPython library bundle.

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

3.9.5 is the latest Python release. The latest pre-release version is 3.10.0b2.

2,469 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, Micro Center, Raspberry Pi and more.

Job of the Week

Exhibit Fabricator III – Science Museum of Minnesota – Adafruit Jobs Board.

Microsoft Hiring

Microsoft is hiring two people for their team to speed up standard Python (CPython):

Foundation Hiring

Foundation is looking for a full-time Embedded MicroPython/C Engineer – MicroPython Forums.

29,522 thanks!

29,522 THANKS

Adafruit Discord

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

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

Codecademy “Learn Hardware Programming with CircuitPython”

Codecademy CircuitPython

Codecademy, an online interactive learning platform used by more than 45 million people, has teamed up with the leading manufacturer in STEAM electronics, Adafruit Industries, to create a coding course, “Learn Hardware Programming with CircuitPython”. The course is now available in the Codecademy catalog.

Python is a highly versatile, easy to learn programming language that a wide range of people, from visual effects artists in Hollywood to mission control at NASA, use to quickly solve problems. But you don’t need to be a rocket scientist to accomplish amazing things with it. This new course introduces programmers to Python by way of a microcontroller — CircuitPython — which is a Python-based programming language optimized for use on hardware.

CircuitPython’s hardware-ready design makes it easier than ever to program a variety of single-board computers, and this course gets you from no experience to working prototype faster than ever before. Codecademy’s interactive learning environment, combined with Adafruit’s highly rated Circuit Playground Express, present aspiring hardware hackers with a never-before-seen opportunity to learn hardware programming seamlessly online.

Whether for those who are new to programming, or for those who want to expand their skill set to include physical computing, this course will have students getting familiar with Python and creating incredible projects along the way. By the end, students will have built their own bike lights, drum machine, and even a moisture detector that can tell when it’s time to water a plant.

Visit Codecademy to access the Learn Hardware Programming with CircuitPython course and Adafruit to purchase a Circuit Playground Express.

Codecademy has helped more than 45 million people around the world upgrade their careers with technology skills. The company’s online interactive learning platform is widely recognized for providing an accessible, flexible, and engaging experience for beginners and experienced programmers alike. Codecademy has raised a total of $43 million from investors including Union Square Ventures, Kleiner Perkins, Index Ventures, Thrive Capital, Naspers, Yuri Milner and Richard Branson, most recently raising its $30 million Series C in July 2016.


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.