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

View this email in your browser.

Happy December! 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. And now the news:

Deep Sleep support coming to ESP32-S2 CircuitPython

Deep Sleep

Deep Sleep

Deep Sleep support coming to ESP32-S2 CircuitPython – Adafruit Blog

The Adafruit MagTag was made for “deep sleep”, thanks to the always-on eInk display. Thanks to a new pull request, we’re getting the beginnings of light and deep sleep support. We can get down to 250uA on the MagTag when in deep sleep, which will let the board run for weeks at a time. Check it out and subscribe to the PR to get notifications when it gets merged into main! We are testing it with data from https://covidtracking.com.

Hackster.io also has a current article summarizing the latest on CircuitPython’s deep sleep support on the ESP32-S2 – Hackster.io.

guizero and circuitpyui – a lightweight graphical user interface libraries for Python and CircuitPython


guizero is a Python 3 library for creating simple graphical user interfaces (GUIs) on Linux/Windows/Mac/Raspberry Pi – GitHub.io


If you are looking for a similar concept framework for microcontrollers, see circuitpyui – GitHub.

Developing the NAU7802 24-bit ADC FeatherWing

NAU7802 24-bit ADC FeatherWing

NAU7802 24-bit ADC FeatherWing CLUE Display

Testing with a custom NAU7802 24-bit ADC FeatherWing and Stemma-QT connected Clue. Using a device library developed in CircuitPython, it measures up to two load cells connected to the custom FeatherWing. – Twitter.

Developing a CircuitPython 6.0.0 library for the NAU7802 24-bit ADC FeatherWing was a worthwhile educational experience.

A Stock Ticker with CircuitPython

Stock ticker

A stock ticker with an Adafruit MatrixPortal. A possible Christmas gift idea in a beautiful wooden case – Twitter and code – Adafruit Forums.

Adafruit Update


Adafruit is shipping orders!

Adafruit is stocked and shipping orders! Now is the best time to get orders in for your favorite products, including holiday projects and gifts – Adafruit.

Shop Adafruit now

News from around the web!

Mechatronic Tardigrade

Mechatronic Tardigrade Circuit

Building a mechatronic tardigrade with Adafruit parts and CircuitPython – Twitter Thread.

RGB Matrix Wall Display

Building an RGB Matrix wall display – Twitter.

Lucid dreaming

Lucid dreaming with the Circuit Playground Express – Ben Jabituya, YouTube, and Hackaday.

Adafruit MagTag Stars

“My turn on the Adafruit MagTag this week for Crash Space LA DFN Happy Hour. I made stars! CircuitPython” – Twitter.

Adafruit MagTag Sensors

An Adafruit MagTag displaying sensor values on the grayscale e-Ink display. All running under CircuitPython – Twitter and GitHub Code.


Bluepad32 – Connect any Bluetooth gamepad to your ESP32 – GitLab

A demo of Bluepad32: A CircuitSnake Game for the Adafruit MatrixPortal and CircuitPython – YouTube via Twitter.

An Airlift coprocessor firmware variation for Bluepad32 – GitHub.

CircuitPython IoT Trivia

CircuitPython IoT Trivia ESP32-S2 OLED Version – GitHub and Twitter.

Socket Programming in Python

Socket Programming in Python – Twitter Real Python.

Making PlayStation 1 Modchips

Creating A New PS1 Modchip using an ESP8266 and MicroPython – KChung’s Blog.

MicroPython micro:bit Custom Python Module

MicroPython micro:bit Custom Python Module – Twitter.

Pyboard (MicroPython) Beginner's Guide

Easy & Powerful Arduino Alternative? Pyboard (MicroPython) Beginner’s Guide – YouTube and Twitter.

10 Python Skills They Don’t Teach in Bootcamp – Towards Data Science.

Introspection in Python: use built-in Python tools to both find out exactly what any module can do, and find out exactly how Python will execute your code – Anvil.

PyDev of the Week: Mridu Bhatnagar on Mouse vs Python

CircuitPython Weekly for November 30th, 2020 notes and on YouTube

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

New Tools

nRF Sniffer for Bluetooth LE

nRF Sniffer for Bluetooth LE – a development tool for Bluetooth LE packet sniffing and learning – Nordic Semiconductors.

Coming soon

Cobbler400 test

Adafruit posts “Our successful Cobbler400 test for attaching Pi Bonnets/PHATs is followed by a dessert…an extra big helping of Cobbler that can show off your favorite HAT like say, a Sense HAT or maybe a PiTFT to show your favorite GIFs” – 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 was one new board added:

CP Sapling from Oak Development Technologies.

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

New Learn Guides!

New Learn Guides

MagTag Slideshow from John Park

Matrix Portal Money-Sensing Tip Jar from Erin St. Blaine

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

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!


This past week I’ve been working with the MLX80395 magnetometer by Melexis; it’s a nice little sensor, similar to the TLV493 as they’re both targeted towards directly sensing magnets as opposed to sensing the earth’s electromagnetic field. These are particularly interesting to me due to the type of interfaces they enable. Being able to sense the distance, rotation and orientation of something (by attaching a magnet to it) without needing direct contact with it is pretty dang cool.

The TLV493 is designed with joysticks in mind, and the MLX90395 is similarly marketed for “contactless” replacements in places where you’d normally see a mechanical switch or potentiometer. I think it’s pretty cool when new doors are opened that change what is possible for all the many places we interact with technology. Buttons still have to be buttons, but when you don’t need to make any physical contact with the “switch”, a lot of the design constraints for how an interface has to work go out the window.

It will likely be quite a while until these types of interfaces are common, as the humble switch and potentiometer aren’t going anywhere anytime soon, due to familiarity, cost, and overall suitability for their intended purpose. With that said, however, I think it won’t be too long before we see them being used more, and likely in entirely different ways and places than the switch and pot.


I have deep sleep working in CircuitPython on the ESP32-S2. The API has gone through several iterations, and has become simpler. I measured the current consumption to confirm it’s really sleeping, using a used Monsoon power meter acquired on eBay, and it’s in the couple of hundred micro-ampere range, as expected for the board. Expect to see this new capability in a beta of CircuitPython 6.1.0 soon.


This week I’ve continued working on I2S audio output for the ESP32S2, which remains a work in progress. I’ve also worked on various bugs and improvements in the core, as well as an upcoming guide using Bluetooth and Blinka on a Raspberry Pi 4.


This week I added another page to the Which CircuitPython Board is Right for You? guide – Beginner Boards. This page is for folks who are new to CircuitPython, microcontrollers or programming in general. There are a lot of CircuitPython compatible boards to choose from and knowing which one is best to start with should prove to be super helpful. Thanks again to Carter for helping out with this page and the rest of the guide.

I started working on a new project. It’s a redo of a MicroPython project, and similar to a previous festive project I did. It will in fact use the same wreath from my previous project, but this time it’s featuring the Adafruit MagTag and a NeoPixel strip. The buttons on the MagTag will activate different LED animations. This guide should be out next week.


This week I wrapped up the work on UDP, with a functional demo of sendto and recvfrom_into, grabbing the time from the global NTP servers. The rest of my week was mostly spent on bugfixes and reviews, including ESP32-S2 pin claiming errors, IDF problems, STM32 I2C sending and receiving, and a new STM32 board, the Thunderpack 1.2. This coming week, I’ll be transitioning back into i.MX territory, to check out some of the modules that never got wrapped up, like PWMOut and AnalogIO. I’ll also be looking into TCP Server and keeping an eye on new ESP32-S2 bugs that come in on the MagTag and other boards.



This past week, I worked on an online ESP Tool some more. One of the challenges I was facing was that the Web Serial streams were converting my bytes into UTF-8 and the ESP32 I was connected to wasn’t responding. I found this out by connecting a logic analyzer up and comparing what I thought I was sending to what I was actually getting at the board level. I had a similar issue with the response. I fixed this by removing the TextEncoderStream and TextDecoderStream classes out of the mix and interacting with the port directly, which was different than most examples I was seeing.

Once I had that working, I was able to get the ESP32 to sync and detect the board. I also had it returning the MAC address, which is the unique hardware ID of the network device that accesses the internet. I have the ESP32-S2 being detected as well. Once I had that working, I started work on being able to upload files and have the JavaScript code directly start programming the firmware onto the board. It’s not quite working at this point, but it is getting close.

This last week I’ve been doing a number of small improvements to the ESP32-S2 and network related things. For example, I sped up json parsing. On my stream I did a test query that took 111 seconds at the start and afterwards took 3 seconds.

I’ve also got a PR out to tweak how the Adafruit requests library works. It turns out the send method may act like it sent data even when it actually hasn’t (and can’t). So now requests will send everything and check it can read a response before handing off to full response parsing. If it can’t read, it recreates the socket and tries again.

There a few other small things too. If you are an early adopter of the ESP32-S2 and CircuitPython, keep an eye on CircuitPython’s pull requests and make sure to stay update with the latest pre-release, or even the absolute newest build. We’re squashing bugs every day. 🙂

Upcoming events!

Women Who Code - CONNECT Forward

Women Who Code CONNECT Forward, December 2-4, 2020 online – Women Who Code.

micro:bit LIVE 2020

Join educators, researchers, and the developer community for micro:bit LIVE 2020 virtual, an online event December 4-5, 2020. There is no cost to register and attend – Microbit.Org.

PyDay Chile

PyDay Chile 2020 Conference: December 5, online – pyday.cl.

Virtual Girls into Coding

Virtual Girls Into Coding #6, December 13th: a free event for girls ages 10-14 to explore online coding activities, online robotics, 3D Design, electronics, and physical computing using the BBC micro:bit. This is a fantastic opportunity to use Python (text-based language) and to get some hands-on making time from the comfort of your home – Eventbright.

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.

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

20201126 is the latest CircuitPython library bundle.

1.13 is the latest MicroPython release. Documentation for it is here.

3.9.0 is the latest Python release. The latest pre-release version is 3.10.0a2.

1908 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.

25,965 thanks!

25,965 THANKS

Adafruit Discord

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


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.