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! This issue will wrap 2024 for the newsletter and things are at an all-time high, judging from where things were a year ago. Next are two ways in which hardware is helping make software faster. And there is no lull in projects and news this week, check it all out below and Happy Holidays! The newsletter will resume in 2025 with the January 13th issue, where we’ll see responses to the annual CircuitPython survey. - Anne Barela, Editor

We’re on Discord, Twitter/X, BlueSky and for past newsletters - view them all here. If you’re reading this on the web, subscribe here. Here’s the news this week:

The Year in Review

The Year in Review

Without hype, this has been a very good year for using Python on hardware. The state of the art in both hardware and software has increased. More folks are using Python on hardware. The language is easier to use and faster. And the hardware ecosystem has grown considerably.

Changes over the past year, from the January 1st newsletter to today:

Event January December
CircuitPython Version 8.2.9 9.2.1
MicroPython Version v1.22.0 v1.24.1
Python Version 3.12.1 3.13.1
CircuitPython Compatible Boards 596 708
CircuitPython Libraries 471 508
Newsletter Subscribers 10,735 11,716

Thank you all for a fabulous 2024 and we’re all looking forward to a strong 2025.

Hardware Acceleration for uLab in MicroPython

Hardware Acceleration for uLab

In the past, digital signal processing and machine learning applications on microcontroller platforms were bound by the numerical processing speed. Several years ago, ARM released the definition of the Helium extension to the Cortex-M CPU instruction set, designed to deliver significant numerical performance improvements of certain common operations.

On many variants of MicroPython, ulab, the numpy look-alike numerical library has been a popular choice for those who want to retain the ease of Python, but need to crunch numbers fast. The ulab project is planning on raising the bar and exploiting the advantages of ARM’s Helium processors to accelerate many of its numerical methods. See more on the OpenMV Blog.

PIOLib: A Userspace Library for PIO Control

PIOLib

As discussed in the newsletter last week, Raspberry Pi has released a user library for working with the RP1 processor on the Raspberry Pi 5, allowing control of timing sensitive devices like NeoPixel LED strands. Raspberry Pi News goes into detail about this new library - Raspberry Pi News.

Jeff Epler at Adafruit has completed CircuitPython bindings for PIOlib and it will be added to an upcoming release of CircuitPython. Check out a blog post and YouTube video.

CircuitPython 2025 Survey

CircuitPython 2025 Survey

CircuitPython lead developer Scott Shawcroft has kicked off the CircuitPython 2025 survey - Read more.

“It is easy to get sucked into the day-to-day tasks of a project. The holidays, when work slows, can be a moment to reflect more broadly on goals for ourselves and how we spend our time. Let’s take this moment to reflect on 2024 and look ahead to 2025 for CircuitPython. Just like past years, we’d like folks in the CircuitPython community to share their thoughts about CircuitPython’s future. So, please post about #CircuitPython2025 to some public place on the internet by Tuesday January 14th, 2024.”

P.S. This survey is also a chance for newsletter subscribers to let us know your thoughts and wishes about the newsletter going forward.

The CircuitPython Show Returns

The CircuitPython Show

The CircuitPython Show will return in mid-January! It will feature interviews with CircuitPython community members, panel discussions, and topics with new and returning guests. Topics will cover designing a PCB, building CircuitPython, creating a library, creating games with CircuitPython, and more. Find the show wherever you get your podcasts - BlueSky and Mastodon.

Gurubase Looks to Use AI for MicroPython

Gurubase

Gurubase.io is looking to build a centralized, open-source, tool-focused knowledge base. Each “guru” in Gurubase is equipped with custom knowledge to answer user questions based on data related to the respective tool. MicroPython Guru has been manually added to Gurubase. MicroPython Guru uses the data from the MicroPython GitHub repo and data from the docs to answer questions by leveraging the LLM.

The goal is to give MicroPython an AI assistant available to help users with their questions. It appears to be a work in progress - Gurubase and GitHub Pull Request.

Five of the Best Budget-Friendly Single Board Computers (SBC)

Best Budget-Friendly Single Board Computers

Single-Board Computers are quite popular in the tinkering crowd thanks to their miniature designs, high versatility, and low power consumption. That said, the prices of SBCs have skyrocketed in recent times, with many high-end boards costing well above $100 – without taking any peripherals or accessories into account.

Thankfully, the era of affordable SBCs isn’t dead yet, as you can still find a handful of boards that offer the classic SBC experience - XDA.

Python 3.14.0 alpha 3 is Out

Python 3.14.0 alpha 3 is out

The Python development team has released the next alpha version of Python 3.14 for holiday tinkering - python.org.

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

Last Friday, Tim was working on LED_Animation GitHub issues.

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

CircuitPython Parsec

CircuitPython Parsec

John Park’s CircuitPython Parsec was off last week. Catch all the episodes in the YouTube playlist.

CircuitPython Weekly Meeting

CircuitPython Weekly Meeting for December 16, 2024 (notes) on YouTube.

NOTE: The next meeting will be on January 6, 2025.

Project of the Week: Tangible Prayers with a Twist

Tangible Prayers with a Twist

Charlie, in a conversation with Dan Alroy, heard mentioned of a God Box. Basically, it’s a box you put in written snippets of, say, a prayer or a petition. Charlie wanted to do something akin to Tibetan prayer flags, where you record a prayer and it is converted into something you could hang and let the wind carry off what what was recorded.

The build uses a Raspberry Pi Pico programmed in CircuitPython. An Adafruit PDM microphone captures audio with NeoPixel strips acting as a VU meter. Output is to a thermal printer - Molecularist.

“The main twist is that what comes out on the strip is based on the recording, but encoded in a visually interesting way. You can then store it in the god box or hang it, but only you and your higher power know what is encoded on that strip.”

Popular Last Week

What was the most popular, most clicked link, in last week’s newsletter? CircuitPython comes to BlueSky.

Did you know you can read past issues of this newsletter in the Adafruit Daily Archive? Check it out.

New in the Adafruit Playground

Adafruit Playground is a new place for the community to post their projects and other making tips/tricks/techniques. Ad-free, it’s an easy way to publish your work in a safe space for free.

EPS32 V2 eInk / ePaper Daily Calendar and Clock

EPS32 V2 eInk / ePaper Daily Calendar and Clock - Adafruit Playground.

News From Around the Web

Overclocking

Mike Bell is actively trying to overclock the new Raspberry Pi Pico 2. He has succeeded in running one at 840 MHz with various tweaks and dry ice cooling - BlueSky.

RP2350-powered guitar pedal

Making a RP2350-powered guitar pedal with a custom PCB and CircuitPython - X.

Third Eye assistive vision

Using AI to assist people with vision impairment with Raspberry Pi, ESP32-S3 and Python - The MagPi.

Simple homebrew scale

Simple homebrew scale with Adafruit’s NAU7802 I2C sensor - Mastodon.

IKEA Vindriktning air quality sensor

Hacking the IKEA Vindriktning air quality sensor with CircuitPython and an ESP32 - X and YouTube.

Weather Source prototype

“After about 10 hours of coding, we have a working Weather Source prototype – thanks to how easy it is to code with CircuitPython. Just need to add the weather condition icon image and tweak a few graphics issues. Tested with an Unexpected Maker FeatherS2 (ESP32-S2) attached to an Adafruit 3.5” TFT FeatherWing display. Of course it’ll need some gratuitous graphic animations, too.” - Mastodon.

Keyboard

Turning a mechanical keyboard into a USB HID device with Raspberry Pi Pico and CircuitPython - X.

Raspberry Pi powers sentry turret straight out of the 'Portal' franchise

Raspberry Pi powers sentry turret straight out of the ‘Portal’ franchise uses Python - Tom’s Hardware and Reddit.

MicroPython: ESP32 Cheap Yellow Display Board – CYD

Using MicroPython with an ESP32-based Cheap Yellow Display Board (CYD) - Random Nerd Tutorials.

transparent OLED display

Transparent OLED display graphics with a Raspberry Pi Pico and MicroPython - X.

Intra-Dimensional Kaleidoscope

IDK is an intra-dimensional 32x64 kaleidoscope programmed in CircuitPython that can be viewed at any angle - Hackster.io.

Smart Doorbell

A smart doorbell using Raspberry Pi 5, Jitsi, Telegram and Python - Instructables.

Pico sound player

A Pico sound player (using RP2040, PCM5110, and a SSD1306 display) with CircuitPython - X.

Connecting a Raspberry Pi Pico W to Microsoft Azure IoT Hub

Updated: connecting a Raspberry Pi Pico W to Microsoft Azure IoT Hub using MicroPython and MQTT - Pete Codes.

Silence, Meet Signal: A Beginner's Guide to PDM Microphones

Silence, Meet Signal: a beginner’s guide to PDM microphones with MicroPython - Hackster.io.

BLE heart rate monitor

CircuitPython BLE heart rate monitoring on an Adafruit Clue nRF52840 (M4) microcontroller - X.

Si1145 sensor Micropython example

Using an Si1145 proximity sensor with an ESP32 and MicroPython - Learn MicroPython.

UPi B7

UPi B7 Raspberry Pi 3B+ and Raspberry Pi 4 case with touchscreen review - The MagPi.

MicroSD card specifications

A graphic summarizing MicroSD card specifications defining storage capacity (e.g., SDHC, SDXC), speed classes (e.g., V10, U3), UHS bus speed, application performance classes (e.g., A2, A2), etc. - X.

New

Olimex ESP32-P4-DevKit

Olimex ESP32-P4-DevKit offers Ethernet, USB JTAG, MIPI DSI and CSI interfaces - CNX Software.

Pico W5

Elecrow launches the Pico W5, a dual-band alternative to the Raspberry Pi Pico 2 W - hackster.io.

Raspberry Pi CM5 gets carrier boards

Two CM5 carrier boards with built-in PoE/PoE+ - CNX Software.

Pimoroni Presto - Beta Edition

Presto is a new RP2350-powered, connected desktop companion by Pimoroni, featuring a 4” square (480 x 480 pixel) touchscreen, built into an elegant black aluminium stand with bonus RGB backlighting - Pimoroni.

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:

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

The Adafruit Learning System has over 3,000 free guides for learning skills and building projects including using Python.

Karel The Robot In CircuitPython from Tim C

CircuitPython Libraries

CircuitPython Libraries

The CircuitPython library numbers are continually increasing, while existing ones continue to be updated. Here we provide library numbers and updates!

To get the latest Adafruit libraries, download the Adafruit CircuitPython Library Bundle. To get the latest community contributed libraries, download the CircuitPython Community Bundle.

If you’d like to contribute to the CircuitPython project on the Python side of things, the libraries are a great place to start. Check out the CircuitPython.org Contributing page. If you’re interested in reviewing, check out Open Pull Requests. If you’d like to contribute code or documentation, check out Open Issues. We have a guide on contributing to CircuitPython with Git and GitHub, and you can find us in the #help-with-circuitpython and #circuitpython-dev 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 508!

New Libraries

Here’s this week’s new CircuitPython libraries:

Updated Libraries

Here’s this week’s updated CircuitPython libraries:

What’s the CircuitPython team up to this week?

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

Dan

I’ve been fixing some CircuitPython bugs. I hope to do CircuitPython 9.2.2 release that includes these and other fixes soon.

The CircuitPython CharLCD library has been slow when used with a character LCD I2C backpack, particularly when used with an adapter like the MCP2221. I fixed the I2C writes to be more efficient; it is about four times faster now.

Tim

I completed a guide on Karel the Robot in CircuitPython and it was published (ed: see in Learn section above). I’ve also created a library for controlling Wiz smart lights from CircuitPython and have started a guide for it. While working on these guides, I found a few things to fix in the screenshot utility that generates file structure screenshots for many guides.

Jeff

It’s been another week of work on Raspberry Pi 5. This time, I’m implementing support for RGB matrices. The code I’m working on now is written in C++, but I plan to wrap it for use from Python code. One possibility is that it will have an interface like displayio; another is that it would work like a subset of the Python library in https://github.com/hzeller/rpi-rgb-led-matrix.

Here, my test code is running on a pair of 64x32 matrices connected in a “serpentine” configuration. It has a 10-bit color depth and achieves a 60fps refresh rate:

Jeff

For now the code lives at https://github.com/jepler/pi5-pio-protomatter.

Scott

This week I’m in Michigan visiting family. I’m working to get UART support going in the Zephyr version of the Nordic port. I want to prove out Zephyr as a future base for CircuitPython.

Liz

This week I worked on a guide for the A4988 stepper motor driver. This breakout lets you control a stepper motor with just two pins; no library required. I found it to be really fun to use and look forward to using it in a project.

Upcoming Events

MicroPython Meetup

The next MicroPython Meetup in Melbourne will be on January 22nd – Meetup. You can see recordings of previous meetings on YouTube.

PyCon US 2025

The community is coming back to Pittsburgh, Pennsylvania for PyCon US 2025 May 14 - May 22, 2025 - us.pycon.org.

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 9.2.1. New to CircuitPython? Start with our Welcome to CircuitPython Guide.

20241220 is the latest Adafruit CircuitPython library bundle.

20241206 is the latest CircuitPython Community library bundle.

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

3.13.1 is the latest Python release. The latest pre-release version is 3.14.0a3.

4,152 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.

38,558 Thanks

38,558 THANKS

Adafruit Discord

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

ICYMI

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, Instagram), 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.

Contribute

The CircuitPython Weekly Newsletter is a CircuitPython community-run newsletter emailed every Monday. 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.