View this email in your browser. Warning: Flashing Imagery
Welcome to the latest Python on Microcontrollers newsletter! I knew this was going to be a large issue but it exceeded my expectations. MicroPython v1.24.0 is out full of goodness as well as a new final version of CircuitPython. Python now is the predominant language on GitHub, surpassing JavaScript. Halloween projects are featured this week and there are a number of significant non-Halloween builds to look at. Happy November. - Anne Barela, Editor
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:
MicroPython v1.24.0 Released
MicroPython v1.24.0 adds support for the new Raspberry Pi RP2350 MCU, improved RISC-V support with native code generation, support for ESP32-C6 MCUs, updates the Zephyr version with threading support, unified TinyUSB bindings across ports, a portable UART IRQ API, and enhanced mpremote recursive copy. There are also numerous bug fixes, enhancements to the test suite and more attention to testing of the machine module and its API. Read on for more details.
Support for the RISC-V architecture has been significantly extended, to include an RV32IMC native code emitter, native NLR and GC register scanning implementations for 32- and 64-bit RISC-V, support for placing RV32IMC native code in .mpy files and also freezing it, and RISC-V semihosting support. Testing for RISC-V is done with the qemu and unix ports, and the support is utilised in the esp32 and rp2 ports.
There is now support concatenation of adjacent f-strings, as well as raw f-strings. There is also a new micropython.RingIO class which provides a stream interface to an efficient, thread-safe, byte-oriented ring-buffer implementation.
All the ports that use TinyUSB have now been unified to use the same shared helper code for CDC serial. This includes: esp32 (S2 and S3), mimxrt, renesas-ra, rp2 and samd ports. With this has come the useful feature that the startup CDC serial data is buffered and then sent to the host upon connection. This means that (among other things) the REPL banner and initial prompt is now seen on first connection to a board - GitHub Release Notes.
Pimoroni is working on updating their fork to v1.24.0 - GitHub. Via Mastodon.
A New Release of Raspberry Pi OS
Raspberry Pi has released a new version of Raspberry Pi OS. This version includes a significant change, albeit one that we hope most people won’t even notice. The Wayland compositor for window handling is now turned on by default for all models - Raspberry Pi News.
“For most of this year, we have been working on porting labwc to the Raspberry Pi Desktop. This has very much been a collaborative process with the developers of both labwc and wlroots: both have helped us immensely with their support as we contribute features and optimisations needed for our desktop. After much optimisation for our hardware, we have reached the point where labwc desktops run just as fast as X on older Raspberry Pi models. Today, we make the switch with our latest desktop image: Raspberry Pi Desktop now runs Wayland by default across all models. When you update an existing installation of Bookworm, you will see a prompt asking to switch to labwc the next time you reboot.”
CircuitPython 9.2.0 Released
CircuitPython 9.2.0, the latest minor revision of CircuitPython (although packed with enough for a major step), is a new stable release. - Adafruit Blog and GitHub Release Notes.
Highlights of this release
- Fix RP2350 cache invalidation for PSRAM.
Notable changes in 9.2.0 from 9.1.x
- Raspberry Pi RP2350 support.
- Update to Espressif ESP-IDF V5.3.1, including new I2C driver.
- Merge MicroPython updates from v1.22.2 and v1.23.
- Espressif BLE improvements.
- Add
math.dist()
.
_eve
updates.
- New
busio.I2C.probe()
and bitbangio.I2C.probe()
methods to check for a single device address.
- ESP32-S3: implement
sdioio
.
- New
audiodelay
s and audiofilters
modules. These modules are experimental, and the API may change.
- Incompatible change: Change default hostname for all Espressif boards to the ESP-IDF default, which is
espressif
.
- Incompatible change: Use default hostname for mDNS. Fix mDNS collision mangling.
Raspberry Pi Product Series Explained
As the Raspberry Pi product line expands, it can get confusing trying to keep track of all the different Raspberry Pi boards out there. Raspberry Pi has published a high-level breakdown of their models, including the flagship single board computer (SBC) series, Zero series, Compute Module series, and Pico microcontrollers - Raspberry Pi News.
Arduino Brings Its MicroPython Editor to the Cloud with a Browser-Based Web App Release
The web appears to be a popular place to edit MicroPython and CircuitPython apps with the latest entry being from the Arduino team. At the moment the editor is still in the ‘lab’ phase with bug fixes and improvements planned. A webserial browser is required (Firefox would need an extension) - hackster.io annd Arduino (Arduino log-in required).
Python has Overtaken JavaScript on GitHub
Python has overtaken JavaScript as the most popular language on GitHub, while the use of Jupyter Notebooks also has skyrocketed on the site. The rise of both underscore the surge in data science, artificial intelligence, and machine learning on the code-sharing platform, according to GitHub’s just-released Octoverse 2024 report - InfoWorld.
A Roundup of CircuitPython Website Upgrades
The main CircuitPython website, circuitpython.org, has undergone several fixes and enhancements - Adafruit Blog and CircuitPython.org.
- Fixes a language bug for prerelease download
- Made major features of each board more visible
- Added a castellated pad filter
- A scrollable manufacturers list
- UF2 files listed first in downloads
- A How to Install link
WebSerial TERMINAL: A Terminal Emulator For Web Browsers
WebSerial TERMINAL is a webserial browser based terminal program. The author states how this would be useful for CircuitPython (and MicroPython). MIT License, written in JavaScript, HTML and CSS - GitHub and Terminal. Via X.
Python 3.14.0 alpha 1 is Now Available
Python 3.14.0 alpha 1 is now available. It’a an early developer preview of Python 3.14 - Python Insider Blog.
Many new features for Python 3.14 are still being planned and written. Among the new major new features and changes so far:
This Week’s 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
Last Friday, Tim streamed work on a Unix port for unit tests.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist - YouTube.
CircuitPython Parsec
John Park’s CircuitPython Parsec is off this week due to Lars eating too much Halloween candy. Catch all the episodes in the YouTube playlist.
CircuitPython Weekly Meeting
CircuitPython Weekly Meeting for October 28, 2024 (notes) on YouTube.
Projects of the Week: Halloween Builds
Here’s another batch of Halloween builds using Python.
Haunted houses are popular and serious money-makers during the Halloween season. They’re also a lot of fun, using various sensors and triggers to activate scary events like sounds, lights, or even animatronic props like moving and talking skeletons. Thanks to Raspberry Pi, YouTube creator NetworkChuck created even more advanced scares to scare his trick-or-treaters (and poor, innocent children.) Then he documented it all on YouTube to help others do likewise - XDA and YouTube.
A spooky DIY bring your pumpkin to life with moving eyes & movement sensors using RaspberryPi Pico - YouTube via X.
“Helped with a friend’s kid’s Halloween costume (sorry in advance for the audio, but the costume’s gonna be good). All from the spare parts bin! TIL safety pins are super easy to solder” - X.
A witch’s staff with a NeoPixel lit crystal ball. Uses an Adafruit ESP32 Feather V2 and CircuitPython - Adafruit Blog and GitHub. Via Hackaday.
A webcam which displays random ghosts in the field of view with Python - YouTube. Via X.
CircuitPython eyes on a multi display build running on a Raspberry Pi Pico - Mastodon and code - GitHub.
Popular Last Week
What was the most popular, most clicked link, in last week’s newsletter? Best Raspberry Pi Projects: October 2024.
Did you know you can read past issues of this newsletter in the Adafruit Daily Archive? Check it out.
New Notes from 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.
Zapper Lights/Sound mod - Adafruit Playground.
News From Around the Web
YouTuber neosarchizo has created a whole series of tutorial videos on various ways to use CircuitPython - YouTube and descriptions - GitHub.io.
Step-by-step coding of a synthesizer patch (sound) using CircuitPython’s synthio library on a Pimoroni PGA2350 with external circuitry (or Cytron Maker Pi Pico) - Instructables.
micropython-cratedb - a CrateDB driver for MicroPython - GitHub via X.
How to install and use the new Raspberry Pi boot menu - Tom’s Hardware.
NeoPixel window lights in different colors with Raspberry Pi Pico and CircuitPython - X.
Raspberry Pi and Python drive a daily Calvin and Hobbes comic display via an E-ink display - Tom’s Hardware.
DrinkTimer: A Smart LED Timer for Your Party. A DIY project with NeoPixels, Raspberry Pi Pico, and MicroPython - Instructables.
Making a mini fidget keyboard actually work using CircuitPython on a Raspberry Pi Pico - X.
Clone Raspbian OS - Raspberry Pi 5 Backup - YouTube.
STM32F412G-Discovery: Using CircuitPython with an SSD1306 OLED display - YouTube. Via X.
A talking thermometer with a RP2040 Raspberry Pi Pico, software in MicroPython - Luc’s Tech Blog via X.
How to use pulse-width modulation (PWM) on an ESP32 with MicroPython - YouTube.
An Adafruit Matrix Portal M4 customizable gesture LED sign - Instructables.
Bus Pirate 5 SAO: a functional 70% scale replica of the Bus Pirate 5 - hackaday.io.
A GitHub contribution tracking desk light with Raspberry Pi Pico W, NeoPixels and CircuitPython - Instructables.
6 Ways the Raspberry Pi revolutionized computing - XDA.
New
Pineboards’ PoE+ HAT brings power and NVMe for an SSD to your Raspberry Pi 5 - Tom’s Hardware.
K230 is an SBC 6 TOPS AI development board from 01Studio Lab running Python and MicroPython - X and AliExpress.
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.
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
The Adafruit Learning System has over 3,000 free guides for learning skills and building projects including using Python.
Motion Sensor Bat from Ruiz Brothers
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 504!
New Libraries
Here’s this week’s new CircuitPython libraries:
Library PyPI Weekly Download Stats
Total Library Stats
- 1,498,369 PyPI downloads over 340 libraries
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 32,074
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 24,392
- Adafruit CircuitPython ConnectionManager (adafruit-circuitpython-connectionmanager): 18,874
- Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 16,926
- Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 15,925
- Adafruit CircuitPython ESP32SPI (adafruit-circuitpython-esp32spi): 14,886
- Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 14,219
- Adafruit CircuitPython HTTPServer (adafruit-circuitpython-httpserver): 10,830
- Adafruit CircuitPython PortalBase (adafruit-circuitpython-portalbase): 10,318
- Adafruit CircuitPython Seesaw (adafruit-circuitpython-seesaw): 10,075
What’s the CircuitPython team up to this week?
What is the team up to this week? Let’s check in:
Dan
I released CircuitPython 9.2.0 final a week ago. It’s looking good: no serious bugs have been reported yet.
I’m now starting to work on CircuitMatter, while Scott is off for paternity leave.
Tim
This week I implemented a handful of new features and fixes to the circuitpython.org website that were found in the GitHub issues, there is a blogpost detailing them. I also worked with Liz on the driver for the VCNL4200 device. Lastly I’ve been working on a new learn guide covering how to create custom Animations for use with the adafruit_led_animation
library, I’ve created a handful of new animations to use as examples to explain different concepts.
Jeff
I’ve been working on a requested enhancement to synthio
: biquad filters whose properties (central frequency & sharpness) can be adjusted at runtime or by LFOs. As I write this, the PR is pending review.
Liz
This week I’ve been working with Tim on the VCNL4200 CircuitPython driver. This driver has a lot of registers to port compared to what our sensors normally have so it has been nice to have someone to bounce ideas off of and double check that the hardware is working as expected. A guide for this sensor will be published soon with example code in CircuitPython and Arduino.
I also setup a Raspberry Pi 5 for the first time. While working on this, I referenced Carter’s excellent guide on setting up and using a virtual environment with Python. If you’ve been confused on the venv Python chatter in regard to the Pi, or in general, definitely check it out as an excellent reference.
Upcoming Events
PyCon AU will be held from the 22nd to the 26th of November at the Melbourne Convention and Exhibition Centre (MCEC) in Narrm/Melbourne. Matt Trentini and Damien George will both be presenting on MicroPython - PyCon AU.
The next MicroPython Meetup in Melbourne will be on November 27th – Meetup. You can see recordings of previous meetings on YouTube. September’s meeting notes are here.
PyLadies Conference (PyLadiesCon) is a transformative event designed to promote diversity, learning, and empowerment within the Python community. December 6-8, 2024 online - PyLadies.
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.0. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20241031 is the latest Adafruit CircuitPython library bundle.
20241005 is the latest CircuitPython Community library bundle.
v1.24.0 is the latest MicroPython release. Documentation for it is here.
3.13.0 is the latest Python release. The latest pre-release version is 3.14.0a1.
4,098 Stars Like CircuitPython? Star it on GitHub!
Call for Help – Translating CircuitPython is now easier than ever
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,402 Thanks
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 38,402 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, 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.