View this email in your browser. Warning: Flashing Imagery
Welcome to the latest Python on Microcontrollers newsletter! Fall is morphing into the Winter holiday season, but the pace of Python on Hardware is still going strong. A double release for CircuitPython: a quality fix for CircuitPython 8 and an alpha CircuitPython 9 release (which has brought a dozen new boards). A large number of Adafruit Playground posts using CircuitPython also dropped this week. And plethora of Adafruit Playground guides with Python and other projects. Happy Thanksgiving on Thursday to those in the US and stationed abroad. - Anne Barela, 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:
CircuitPython 9.0.0 Alpha 5 Released
CircuitPython 9.0.0-alpha.5 is an alpha release for CircuitPython 9.0.0. It has significant known bugs, and will have further additions and fixes before the final release of 9.0.0 - Adafruit Blog and Release Notes.
Notable changes to 9.0.0
- New split-heap internal dynamic storage mechanism.
- Merge updates from MicroPython v1.19.1, v1.20.0, and v1.21.0.
- Espressif: update to ESP-IDF v5.1.
- Reorganize and split
displayio
. 8.x.x naming structure is available in 9.x.x, but will be removed in 10.0.0.
- CIRCUITPY drives now mount on Android.
- Increased file capacity on CIRCUITPY drives <= 128kB.
- Further USB host support, on i.MX and RP2040.
- Remove 8.x.x deprecations:
displayio.*.show()
, I2CPeripheral
renamed to I2CTarget
.
- Add
repl.py
, which runs just before the REPL starts up.
- Add
OrderedDict.move_to_end()
.
- Add
synthio.Synthesizer.note_state
.
- Add warnings module, similar to what is in CPython.
- Add
locale.getlocale()
.
- Add I2S MCLK support on Espressif.
- Add mDNS TXT record support.
CircuitPython 8.2.8 Released
CircuitPython 8.2.8, the latest bugfix revision of CircuitPython and is a new stable release - Adafruit Blog and Release Notes.
Notable changes to 8.2.8 since 8.2.7
- Add alternative flash chips for many boards. Fixes issue with new-production Adafruit Metro M4 AirLift boards.
- Add
wifi.stop_ap()
for Pico W.
- Fix ESP32
AnalogIn
on pin IO32.
- Fix race condition in RP2040
PulseIn
.
- New boards.
27 Malicious PyPI Packages with Thousands of Downloads Found
An unknown threat actor has been observed publishing typosquat packages to the Python Package Index (PyPI) repository for nearly six months with an aim to deliver malware capable of gaining persistence, stealing sensitive data, and accessing cryptocurrency wallets for financial gain. The 27 packages, which masqueraded as popular legitimate Python libraries, attracted thousands of downloads, Checkmarx said in a new report - Hacker News.
GitHub Awards Adafruit’s Limor Fried the Hardware Hacker Award
At the GitHub Awards 2023, Limor “Ladyada” Fried, owner and Engineering Lead at Adafruit, was recognized for contributing to making hardware accessible through open specs/software. Adafruit designs and sells open source hardware and software, and is the sponsor of CircuitPython - GitHub Blog.
Harvard CS50’s Artificial Intelligence with Python, a Free University Course Online
This course from Harvard University explores the concepts and algorithms at the foundation of modern artificial intelligence, diving into the ideas that give rise to technologies like large language models, game-playing engines, handwriting recognition, and machine translation. Through hands-on projects, students gain exposure to the theory behind graph search algorithms, classification, optimization, reinforcement learning, and other topics in artificial intelligence and machine learning as they incorporate them into their own Python programs. The course was updated for 2023 to include an in-depth section on large language models - YouTube.
Getting a PCIe Coral AI Accelerator Working on Raspberry Pi 5
Coral.ai TPUs are AI accelerators used for tasks like machine vision and audio processing. Raspberry Pis are often integrated into small robotics and IoT products—or used to analyze live video feeds with Frigate. Until now, no one has been able to get a PCI Express Coral TPU working on the Raspberry Pi. Pi 5 whisperer Jeff Geerling has the PCIe Coral interfaced with some tweaks to Raspberry Pi OS on an unannounced PCIe card interface - Jeff Geerling via X.
Python Software Foundation News
The annual year-end PSF fundraiser and membership drive.
The Python Sofware Foundation receives the Wonderfully Welcoming Award from GitHub.
Programming Raspberry Pi Pico W with MicroPython (Japanese)
Programming Raspberry Pi Pico W with MicroPython! “The beginning” provides an introduction to programming the Pico with MicroPython written in Japanese - Karakuri Musha.
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, Scott streamed work on Refactoring Inside Circup for WebWorkflow.
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 this week is on Non-Volatile Memory - Adafruit Blog and YouTube.
Catch all the episodes in the YouTube playlist.
The CircuitPython Show
The CircuitPython Show is an independent podcast hosted by Paul Cutler, focusing on the people doing awesome things with CircuitPython. Each episode features Paul in conversation with a guest for a short interview – CircuitPython Show.
The latest episode is November 20th and features Tod Kurt. Paul and Tod discuss Tod’s synthio
hardware and his recent visit to Hackaday’s Supercon.
CircuitPython Weekly Meeting
CircuitPython Weekly Meeting for November 13, 2023 (notes) on YouTube.
Popular Last Week
What was the most popular, most clicked link, in last week’s newsletter? PDF book on GPIO Zero (free).
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.
CircuitPython Animated GIFs on a Matrix Portal - Adafruit Playground.
Using Android with CircuitPython - Adafruit Playground.
Extending the Talking HAL-9000 - Adafruit Playground.
Graphic Symbols for CircuitPython synthio
Objects - Adafruit Playground.
IoT Weather Chimes using synthio
- Adafruit Playground.
News from around the web
The CircuitPython TouchWheel library - X annd GitLab.
Sunrise Alarm Clock with PocketBeagle and Python - hackster.io.
Remote-control GPIOs in MicroPython. A simple example showing how to set up a WiFi access point on a MicroPython board, run a webserver and use it to remote-control GPIOs - hackster.io.
An air quality monitor project using a Raspberry Pico and a PMS7003 sensor programmed in MicroPython - hackaday.io.
Smart home security with a double protection system using MicroPython - hackster.io.
Raspberry Pi Pico and TLV493D Magnetic Sensor CircuitPython example - RP2040 Learning.
python-bluetooth-mesh is a Bluetooth mesh SDK for Python which allows for developing applications communicating with a Bluetooth mesh network using BlueZ’s bluetooth-meshd - GitHub.
PC scripting and monitoring with microcontrollers and custom components - RkBlog.
The world’s smallest Dance Dance Revolution arcade machine - Raspberry Pi News.
svdregview is a small Gtk+ utility written in Python3 to access peripheral registers of ARM MCUs. It seeks to provide functionality similar to the KEIL™ System Viewer - GitHub.
A GPT-4-vision + Python script to have David Attenborough narrating ones life - X and GitHub.
New
Banana Pi BPI-M7 with Rockchip RK3588 design, 8/16/32G RAM 64/128G eMMC - Banana Pi via X.
Coming Soon
Introducing HatDrive by Pineberry Pi, the first Raspberry Pi 5 board with NVMe GEN3 support. Shipping starts early December 2023 - X and CNX Software.
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 13 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
Scroll an SMS Text Message on your RGB Matrix from Erin St Blaine
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 461!
Updated Libraries
Here’s this week’s updated CircuitPython libraries:
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 9384
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 8962
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 3576
- Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 1977
- Adafruit CircuitPython LIS3DH (adafruit-circuitpython-lis3dh): 1396
- Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 1289
- Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1066
- Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1029
- Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 996
- Adafruit CircuitPython Pixelbuf (adafruit-circuitpython-pixelbuf): 941
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.0.0-alpha.5 and 8.2.8 last week. [PROBABLY - CHECK DURING EDIT] The alpha release fixes some significant issues that prevented running larger programs. The 8.2.8 has small fixes, and also handles wider variety of flash chips on various boards, so we can substitute equivalent chips during manufacturing.
I’m continuing to fix more 8.2.x and 9.0.0 bugs as we move toward a 9.0.0 release.
Melissa
This past week, I helped Erin St. Blaine out with an upcoming Learn Guide project, which is based on my Animated Message Board Guide. In the process, we found a few bugs that I fixed in the Message Board code and update the GitHub Repository.
Tim
I updated instances of displayio
API usage to support the changes in 9.x within learn guide pages. I finished up the code in the Learn repository last week, and then the non-embedded sections of guide pages this week. The other main thing I’ve been working on is web workflow support within circup so that it can be used to install libraries on devices that don’t present as USB storage drives.
Jeff
It’s nice to be back from vacation. I’ve started digging into items on our issue tracker as I work with the rest of the team on stabilizing the development branch after all the changes that have recently been incorporated.
Scott
This week I’ve been mostly out to spend time with family. I did do two major fixes after the split heap changes that were in 9.0.0 alpha 4. One fixed “pystack exhausted” and one fixed memory allocation errors on ESP. Dan is releasing 9.0.0 alpha 5 shortly that should work much better.
Liz
This week I worked on the guide and CircuitPython library for the ADS7830 breakout. It is an eight-channel, eight-bit ADC, which means you can use it to add 8 ADC inputs over I2C. I’m currently working on a project with JP that uses two of these breakouts to add 16 slide potentiometers to a project.
Upcoming Events
The next MicroPython Meetup in Melbourne will be on November 22nd – Meetup.
The inaugural PyLadies Conference will take place December 1-3, 2023 - pretalx.
The Pyjamas Conference, the 24-hour online Python conference, will be returning for a fifth year on December 9-10.
PyOhio will be streaming online Saturday December 16th. There will be one CircuitPython talk and 3 PyScript talks in addition to all the other activities - PyOhio.
PyCon US 2024 Launches - May 15-23, 2024 in Pittsburgh, Pennsylvania US - PyCon US.
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.2.8 and its unstable release is 9.0.0a5. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20231117 is the latest Adafruit CircuitPython library bundle.
20231105 is the latest CircuitPython Community library bundle.
v1.21.0 is the latest MicroPython release. Documentation for it is here.
3.12.0 is the latest Python release. The latest pre-release version is 3.13.0a1.
3,713 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,072 Thanks
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 38,072 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 Reels), 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 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.