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

View this email in your browser. Warning: Flashing Imagery

Welcome to the latest Python on Microcontrollers newsletter! Finally, a week without a new CircuitPython release. Don’t hold your breath too long, as there will be an 8.0.4 and 8.1.0 is progressing. Today is a favorite for folks in science, math and computers + microcontrollers – it’s Pi Day (3/14 in month/day format, the first 3 digits of Pi). Feel free to post your favorite Raspberry Pi-based project on social media and let us know via cpnews(at)adafruit(dot)com if it’s programmed in any flavor of Python. I hope you enjoy this issue – 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:

Happy Pi Day

Pi Day

Pi Day is celebrated on March 14th (3/14) around the world. Pi (Greek letter “π”) is the symbol used in mathematics to represent a constant — the ratio of the circumference of a circle to its diameter — which is approximately 3.14159. Pi Day is an annual opportunity for math enthusiasts to recite the infinite digits of Pi, talk to their friends about math, and eat pie, the dessertpiday.org.

Pi Day Campaign

Pi Day is also a day of celebrating Raspberry Pi. Pull out your favorite Pi (a Pi Pico / PicoW / RP2040 board count!) and have some fun and consider donating to the Raspberry Pi Foundation – Twitter and Donate.

GitHub Starts Rolling Out Two-Factor Authentication Requirement

GitHub Two-Factor Authentication Requirement

Last year, GitHub announced their commitment to require all developers who contribute code on GitHub.com to enable two-factor authentication (2FA) by the end of 2023. From March 13, they will begin rolling out that 2FA requirement – GitHub Blog.

Make: Interviews Debra Ansell (@GeekMomProjects)

Debra Ansell

Frequent Pythonista Debra Ansell (@GeekMomProjects on Twitter) talks to Make: about the creative process, making blinking projects and much moroe – Makezine.

Using CircuitPython in Neuroscience

CircuitPython in Neuroscience

Embedded.fm talks to Peter Griffin in Episode 444 about operant boxes, projects, embedded systems and more. At about the 29:30 minute mark, Peter talks about using CircuitPython in operant box programming – embedded.fm, transcript and podcast audio download.

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 is out, but you can see 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 ANSI Escape Codes – Adafruit Blog and YouTube.

Catch all the episodes in the YouTube playlist.

Project of the Week: CircuitPython Phone Dialer

CircuitPython Phone Dialer

Steve Anderson (irregularshed on Instagram) posts his project of an old rotary phone dial talking to his computer via CircuitPython running on a Wemos Lolin S2 Mini. “The S2 Mini has quite a good DAC so I’ll be multiplying that out through an op amp to get values between 0v and 5v for my synth” – Instagram.

News from around the web!

Fish Feeder Tracker

Building a fish feeder tracker with an Adafruit MagTag and CircuitPython – Steven Quinn and Code on GitHub.


Theremin-like Pico H musical instrument with ultrasonic sensors programmed in CircuitPython – Raspberry Pi, Twitter Video and GitHub.

OpenAI Cosmic Unicorn

We’ve all been thinking that AI needs to control physical things! So I’ve made a start here with some early morning noodling about in Python. This time OpenAI’s ChatGPT is controlling Pimoroni’s excellent Cosmic Unicorn – Twitter.

Fig Pi

Fig Pi is a LEGO Minifigure-shaped circuit board with an RP2040 microcontroller which can run CircuitPython – Mastodon.

Connecting your Raspberry Pi Pico W to your WiFi network using CircuitPython

Connecting your Raspberry Pi Pico W to your WiFi network using CircuitPython – Adafruit Blog and YouTube via Mastodon.

GPIO for any PC or Laptop: Adafruit FT232H

Adding GPIO for any PC or laptop using an Adafruit FT232H and Python – YouTube.

Macintosh System watch cursor clock

“In #MARCHintosh-esque fashion, I decided to make my Macintosh System watch cursor clock concept a reality! I wrote the display code for it — it’s all CircuitPython, testing it on an Adafruit MagTag (using the buttons to add/remove 1h or 5min) – Mastodon and GitHub.

RP2040 Watch

In today’s mailbag, a 1.28-inch TFT watch built around the Raspberry Pi RP2040 microcontroller. Comes with pre-blown firmware, but absolutely no documentation at all. So I guess it’s time to try and figure out how they’re talking to the screen. First stop picotool to poke around inside the firmware, and then more aggressive methods. Although, with a bit of luck, I can find some datasheets for the screen and other peripherals” – Mastodon Thread.

VT2040 Utils

VT2040-utils is a collection of small utilites to turn a VT2040 and an ESP8266 running MicroPython into a useful portable computer, including an editor and GitHub client – GitHub.

Tote HaD

Tote, Hackaday Edition, is a small (fits in your palm) walking robot, with three degree of freedom legs, costing something around $30 for the parts, programmable in MicroPython – Hackaday and GitHub.

Infinity mirror

An infinity mirror: tiny but so pretty. LEDs are being driven by a Pimoroni Plasma Stick 2040W running the rainbow example – Twitter.

Raspberry Pi Pico W Medication Reminder Box Using CircuitPython

Building a Raspberry Pi Pico W medication reminder box using CircuitPython – YouTube.

Capacitive Difference Sensor

Using a Capacitive Difference Sensor W01 to measure the depth of water in a glass vase without getting it wet – Instructables and YouTube.


PicoVGA – VGA/TV display on Raspberry Pico by Miroslav Nemecek – GitHub.


Keyboard Builders’ Digest Issue 115 is out – kbd.news.


RustPython is a Python 3 (CPython >= 3.11.0) interpreter written in Rust – GitHub.

Aura Text

Aura Text: Like Any Text Editor, Unlike Any Text Editor build using Tkinter and Python – GitHub.


Meet Zig: The modern alternative to C – Infoworld.

Lazy recursion, with generators

Lazy recursion, with generators – tushar.lol.

PyDev of the Week: Logan Thomas on Mouse vs Python.

CircuitPython Weekly Meeting for March 13, 2023 (notes) on YouTube

#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? New Raspberry Pi Pico and RP2040 Documentation.


Video Editing Macropad

A Wireless Video Editing Macropad with a 60mm Rotary Encoder (Jog Wheel). Designed for use with BlueMicro840 controllers programmable in Arduino or CircuitPython – Tindie and YouTube.

Adafruit Metro M7

Adafruit Metro M7 features 500 MHz NXP i.MX RT1011 Cortex-M7 SoC with ESP32 WiFi. Programmable in CircuitPython and Arduino – CNX Software and Adafruit.

Coming Soon

Pimoroni DV Stick

The Pimoroni DV Stick will plug into an HDMI port and sport two RP2040 chips. It’ll allow for a MicroPython prompt and be programmable with C++, MicroPython or CircuitPython – Tom’s Hardware.

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

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:

New Learn Guides!

New Learn Guides

Infinite Text Adventure from Jeff Epler

Cyber Cat MIDI Keyboard from John Park

TRON DISC from the Ruiz Brothers

Bubble Table with LED Animations and IR Remote Control 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 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 360!

Updated Libraries!

Here’s this week’s updated CircuitPython libraries:

Library Statistics

Total Library Stats

  • 140419 PyPI downloads over 308 libraries

Top 10 Libraries by PyPI Downloads

  • Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 7080
  • Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 6588
  • Adafruit CircuitPython Register (adafruit-circuitpython-register): 1788
  • Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1686
  • Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1595
  • Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1295
  • Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 1231
  • Adafruit CircuitPython framebuf (adafruit-circuitpython-framebuf): 1114
  • Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 1112
  • Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 1023

What’s the team up to this week?

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


This week I’m collecting a small number of fixes for a CircuitPython 8.0.4 release, which should happen fairly soon. I’ve also updated several underlying software libraries used by CircuitPython, in preparation for the 8.1.0 release.


I was out sick most of this past week, but was able to work with the Adafruit IO team to resolve an elusive issue where the ESP8266 was freezing up. It ended up being due to an incorrect file system size parameter. I also started trying out the new ChatGPT API on the Raspberry Pi to see what some of the possibilities are.


I have been on vacation a portion of the week. Before leaving I was working on trying to fix some bugs in the bitmaptools boundary fill method. It was not properly executing background tasks or checking for interrupt from user so it made it feel stalled while working on larger bitmap segments.


I’ve been working on the next feature for the Metro M7 (I2S output) and a ChatGPT-powered game for PyPortal that presents an infinite text adventure game. For the latter, there was a short video shown on last week’s Ask an Engineer about it. It’ll soon be a guide in the Adafruit Learning System.


This week I’ve been exploring the world of iMX RT’s memory hierarchy and its impact on error handling and performance. These CPU cores have caches and tightly coupled memory that can be used to store data and code for fast access. Without using these areas well, the CPU will spend time waiting and effectively slow down.

Furthermore, if we’re writing flash for CIRCUITPY, we cannot access code on the flash at the same time. This lead to really bad crashes where the CPU couldn’t load the error handling code. Putting error handling code in RAM makes the crashes easier to debug and enter safe mode from.

So, I hope to make a PR soon to improve error handling and also performance.


This past week I published two new product guides. The first was for the ESP32-S3 Reverse TFT Feather. It’s really great for compact IoT projects since it has the screen and three buttons built-in. The next guide was the PiCowbell Adalogger. This board is designed to plug directly into a Pico or Pico W and has a STEMMA QT port, microSD card slot and RTC module with a coin cell battery holder for battery back-up. In the CircuitPython and Arduino pages I included examples for setting the RTC and for a quick start datalogging example: logging data from a temperature sensor to a text file on the microSD card with timestamps from the RTC.

Upcoming events!

Munich RISC-V Meetup

A Munich RISC-V Meetup, one day after the doors of Embedded World close on March 17th. RISC-V enthusiasts will get together in Munich, Bavaria – RISCV.org

MicroPython Meetup

The next MicroPython Meetup in Melbourne will be on March 22nd – Meetup.

Hackaday Berlin 2023

Hackaday Berlin 2023 is scheduled for Saturday, March 25 – Adafruit Blog and announcement.

PyCon US 2023

PyCon US 2023 will be April 19-17, 2023, again in Salt Lake City, Utah USA – PyCon US 2023.

EuroPython 2023

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

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

20230313 is the latest CircuitPython library bundle.

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

3.11.2 is the latest Python release. The latest pre-release version is 3.12.0a6.

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

36,921 thanks!

36,921 THANKS

Adafruit Discord

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

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 Adafruit to create a coding course, “Learn Hardware Programming with CircuitPython”. The course is now available in the Codecademy catalog.


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.