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

View this email in your browser.

Happy November! It’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. Let’s dig in!

The new Raspberry Pi 400 Computer released

The Raspberry Pi Foundation yesterday announced the new Raspberry Pi 400 Desktop Computer. It’s all built into the keyboard! And all the ports come out the back.

This is such a great Python/CircuitPython machine (just add Blinka) plus it has all the GPIO pins for hacking.

More – Desk of Ladyada Video Review, Full Computer Kit, Raspberry Pi Only.

ulab 1.0.0 released

Version 1.0.0 of the ulab numerical library is now available. ulab provides numerical capabilities similar to the numpy library but ulab is usable on the limited resources on microcontrollers. This release implements a number of missing features, like higher-dimensional tensors, proper views of arrays, and broadcasting. In addition, a bunch of new functions have been added, as well as customization options.

The author writes:

With the help of Adafruit-sponsored people (they are credited on the front page of the PDF version of the manual), I have also updated the manual, added a reference section, and a chapter on how ulab can be extended and how new function can be implemented.

More – Library and Documentation.

Python in Visual Studio Code Update

October 2020 Release of the Python in Visual Studio Code extension is available. You can download the Python extension from the Windows Marketplace, or install it directly from the extension gallery in Visual Studio Code. If you already have the Python extension installed, you can also get the latest update by restarting Visual Studio Code.

This was a short release where we addressed 14 issues, and it includes debugpy 1.0! Debugpy 1.0 offers a great number of features that can help you understand bugs, errors and unexpected behaviors in your code.

More – Microsoft Python Blog.

Grayscale e-paper support added to CircuitPython

CircuitPython now supports using e-paper / eInk displays. Above, user Joey Castillo, author of the Open Book eReader, tests out the new capability – Twitter.

And Adafruit has a new video out on the eInk refresh process – YouTube.

Slappy.io – an easy to use web development environment for CircuitPython

slappy.io is a new, easy and fast way to write and load CircuitPython to your favorite Adafruit device, on nearly any computer. They wish to be the best solution for programming using Chromebooks and for Maker education – slappy.io and Twitter.

A CircuitPython Sensor Ring

Hackster.io features the Sensor Ring — the latest work from Joey Castillo. Expanding on previous postings, the article discusses adding sensors and DotStar RGB LEDs, design decisions, and directions for future work – Hackster.io.

Two reviews of the CircuitPython compatible Adafruit QT Py board

Two new reviews of Adafruit’s CircuitPython compatible QT Py board:

Make: – “The new QT Py is my current favorite of this class of devices. It’s also one of the smallest, most capable, and most expandable. The QT Py is a great board to start experimenting with CircuitPython…”

Hackster.io – Adafruit’s Teeny, Tiny QT Py Unboxing Video

CircuitPython Deep Dive Stream with Scott Shawcroft

This week, Scott streams his work on some ESP32-S2 polish.

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

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 items for students.

Science is fun and educational when using Adafruit parts and free, easy to follow tutorials in the Adafruit Learning System.

Shop Adafruit now

News from around the web!

“…when I gave CircuitPython a shot, it was amazing. Along with Mu, the simple Python text editor, I was up and running in no time. Mu recognized that I was using CircuitPython, and once I enabled serial communication to help me find the stupid syntax errors I often make, I was up and running. I hadn’t bought into the “not compiling saves time” argument of Python over C++ for microcontrollers, (especially given the lightweight programming I do) but it does turn out to be a nice feature to click save and watch my screen update.”

More on this AdaBox016 build – BobTheChemist.

Making a Heart of Te Fiti from Moana and Tony Stark Arc Reactor – Evan Weinberg and Twitter.

Scott Young posts – Twitter

Me and Phina (4) collaborated on this to scare the wife yesterday. Adafruit HalloWing M4, some photos, bit of sound manipulation and a bit of mucking about in CircuitPython and we came up with something ‘well creepy’!

Rotary Encoder in CircuitPython

How to use a Rotary Encoder in CircuitPython – YouTube and Twitter.

Get plain text from a chip

Binho.com teams up with Shannon Morse to present “Using a Host Adapter and Adafruit’s SPI FRAM Breakout Board to Find Plain Text Data on Hardware!” – Adafruit Blog.

PyGame 2.0

pygame 2.0 – the happy dance birthday release – was released October 28th on its 20 year anniversary – Release Notes and information via Hackaday (thanks Tim C.)

IoT RFID Reader

A MicroPython IoT RFID Reader – GitHub

Word Cloud

One line of Python code To help you understand an article – generating fancy masked word cloud images using stylecloud – Towards Data Science.

US Election Forecast Correlations

538 and the Economist have released detailed data from their US election forecasts, listing how each state votes in 40,000 simulations of the presidential election – roadtolarissa.

TalkPython Podcast

Python and machine learning (ML) at the NASA Jet Propulsion Laboratory (JPL) – TalkPython Podcast.

Talking TODOBot

Make a talking TODO bot with a BBC micro:bit and MicroPython – GitHub.

Command Line Interfaces in Python

Command Line Interfaces in Python (Overview video) – Real Python

Python Software Foundation Fellow Members for Q3 2020 announced – PSF Blog.

How to abort/cancel an HTTP request in Python thread with sockets? Call shutdown before close – Stack Overflow.

PyDev of the Week: Kevin Thomas on Mouse vs Python

CircuitPython Weekly Meeting for November 2, 2020 (notes) on YouTube

#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? vscode-circuitpython plugin for VSCode.

Made with Mu

Why Mu? Mu tries to make it as easy as possible to get started with programming but aims to help you graduate to “real” development tools soon after. Everything in Mu is the “real thing” but presented in as simple and obvious way possible. It’s like the toddling stage in learning to walk: you’re finding your feet and once you’re confident, you should move on and explore! Put simply, Mu aims to foster autonomy. Try out Mu today! – codewith.mu

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, no new boards were added, but several are being worked on.

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

CircuitPython BLE Libraries on Any Computer from Dan Halbert

Remote Control Candy Dispenser Ghost from Noe and Pedro

3D Printed Frankenstein Monster with NeoPixel Eyes from Liz Clark

Matrix Portal New Guide Scroller from Brent Rubell

Adafruit Voice Bonnet from Kattni

Adafruit QT Py Activity Timer and Hydration Reminder from Kattni

AdaBox 016 from John Park

Using Google Assistant on the BrainCraft HAT from Melissa LeBlanc-Williams

Make a Pi Trash Classifier with Machine Learning and Lobe from Jen Fox

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

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’ve been testing new prototypes and doing maintenance on existing libraries. I should have hardware to test another revision of the CAN FeatherWing by the time this gets to you; we’re moving to a new controller that is in essence a 2515 with an integrated transceiver in a smaller package!

It’s not uncommon to see multiple versions of an IC in different packages, sometimes integrated with associated components to make manufacturing a bit simpler. A great, and a bit unique, example of this is the case of some of Trinamic’s excellent stepper drivers; The TMC2209 is a controller with a great feature set that includes useful stuff like current-based stall prevention that enables sensorless homing on 3D printers. This and more is packed into a diminutive QFN package.

You may have recently EYE on NPI where Ladyada looked at Trinamic’s new TMC2226 that has a lot of the features of the TMC2209 in a TSSOP package. In fact, it has all the features of the TMC2209 because it’s the same guts in a new package. The larger TSSOP package has the advantage of a larger thermal pad for heat dissipation, as well as being easier to inspect by eye, thanks to having external pins.


More, more BLE (Bluetooth Low Energy)!

I finished up the CircuitPython BLE Libraries on Any Computer guide, which shows how to use the adafruit-blinka library to run CircuitPython BLE code and libraries on Windows, MacOS, and Linux (including Raspberry Pi).

And, I’ve added a longish shared guide page to all the AirLift board product pages describing how to use the ESP32 AirLift co-processor in BLE mode, instead of its usual WiFi mode. You can now use other BLE devices to talk to AirLift-equipped accessory or development boards, such as the AirLift FeatherWing, the Metro M4 AirLift Lite, or the new MatrixPortal board.



Following up on adding canio to the ESP32-S2, it’s another project with the ESP32-S2! I’m investigating support for AudioOut and I2SOut. Both peripherals are available in the microcontroller, but I have to write the core code to make it all work. I’ve switched from the Kaluga devkit to the new Adafruit Metro ESP32-S2 Express. So far, it’s all a work in progress, but maybe horrible distorted noises will come out of a speaker soon!


The QT Py Activity Timer and Hydration Reminder guide was published. If you’re the type of person who gets hyperfocused and forgets to take breaks or eat lunch, or you want a periodic reminder to stay hydrated, check out this guide. It’s a compact little LED ring sandwich that sits on your desk, with entirely customizable code. The guide covers assembly and how to customize the code to fit your needs.

I also added a Pinouts page to the existing Braincraft HAT guide. If you picked up one of these HATs and wanted the details about what’s on it, check out this update.

Along with that, I published the Adafruit Voice Bonnet guide. The Voice Bonnet adds two mics and speakers to your Raspberry Pi. Everything you need to know, and details on getting up and running with it is available in this guide.


These past few weeks I’ve been taking some time off, working on an accumulation of life issues and some of my own projects. Some of it has been CPy related despite being off the clock, such as an SPI Peripheral module I need for a tracking system, and a new teeny CircuitPython enabled dev board I whipped together with JLCPCB:


Now that I’m back, I’m switching over briefly to Arduino, to implement some of the improvements we made to the NeoPixel on ESP32-S2 CircuitPython. The NeoPixel libraries on Arduino don’t yet use the ESP32’s RMT module (ReMoTe controller module), which is usually used for IR but is also capable of emulating high speed protocols like the NeoPixel’s. I’m also reading up on the ESP32-S2 network layers so I can better assist Scott with those kinds of projects.


This past week has mostly been about e-ink displays. I’ve been working on updating a the e-ink breakouts guide to be a more all inclusive guide. I started with adding our new 2.9” Grayscale e-ink display, which required ensuring the software support was in place, so there were a lot of Arduino library updates.

I also added a number of 2.9” Tri-Color e-Ink display pages to the same guide. Some of the changes that were made to examples were coming up with a common pinout for wiring up the breakouts so that the user only needed to make only minimal changes to the examples to use them with the FeatherWings and Breakouts. This was a different approach than the old examples which had the wiring chosen to make the wiring diagrams clearer.


This last week has been a bit scattered. I finished up the native work in CircuitPython to support grayscale e-paper displays. I made a bit of progress on the deep sleep API before getting distracted by adding NTP support for the ESP32-S2 and fixing some bugs in latest version of Adafruit requests.

I’m going to continue fixing requests bugs, wrapping up NTP and hopefully get back to the deep sleep API. It’s all worthwhile work so the only cost is switching between the different tasks. It will be great to get it all polished up. 🙂

Upcoming events!

Python Brasil 2020

Python Brasil 2020 is the largest conference on Python programming language in Brazil and Latin America. This year, due to the Covid-19 pandemic, Python Brasil will be held remotely. There will be seven days of immersion November 2-November 8, 2020 – Site and Tickets.

Hackaday Remoticon 2020

The Hackaday Remoticon will take place everywhere November 6th – 8th, 2020. It’s a weekend packed with workshops about hardware creation, held virtually for all to enjoy – Hackaday.

PyCon Sweden

PyCon Sweden 2020 will be held 12-13 of November 2020 online – PyCon Sweden.

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

20201101 is the latest CircuitPython library bundle.

v1.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.1.10a1.

1,886 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

Experience Design Specialist – Exploration Commons at 50 East, Carroll County Public Library – Adafruit Jobs Board.

Two full time, two part time Experience Design Specialists who are passionate about new technologies and/or have professional cooking experience. You will create and implement trainings and programs for a thriving maker and culinary community in our innovative and state of the art makerspace and teaching kitchen.

25,555 thanks!

25,555 THANKS

Adafruit Discord

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