View this email in your browser. Warning: Flashing Imagery
Welcome to the latest Python on Microcontrollers newsletter! I know the season has changed as students board buses to school and there is Pumpkin Spice everything at the restaurants. The Fall is also when Python ramps up, as folks put it to work on hardware, old and new alike. The Pi RP2350 is getting into more people’s hands which is spurring new designs. Part of the bootrom of the RP2350 chip has an Arm to RISC-V emulator! The ESP32-P4 is becoming more widespread and CircuitPython has already been ported over (in an alpha build). Mainline Python has many new versions available now. And the project list is packed full. I hope you find items of interest and have a good week ahead. – 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:
CircuitPython Comes to the ESP32-P4 Evaluation Board
Core CircuitPython developer Scott has been chugging away at adding ESP32-P4 support to CircuitPython. He has provided Ladyada a bin file that runs on the Eval board received last week from Espressif. Native USB is still in progress, but she could connect to the REPL and save files using the USB-Serial converter. “It’s so fast at 400 MHz, and with 16 or 32 MHz of PSRAM, it’s going to be an awesome board for embedded Python” – Adafruit Blog and YouTube.
Armulet allows Raspberry Pi to run Arm code on RISC-V
ARMULET is a C ARMv6M / ARMv8M-baseline emulator by Raspberry Pi. Raspberry Pi is using Armulet to run Arm code on RISC-V in the RP2350 bootrom. The effort could be augmented to run legacy Arm code on a RISC-V only architecture – Adafruit Blog and GitHub.
Per the RP2350 bootrom details:
“Because of limited space, we cannot duplicate a lot of code in RISC-V, so ARM code is emulated (varmulet) on RISC-V. We emulate (roughly) Arm8-M Baseline not Arm8-M Mainline as it has many fewer less complex instructions (Arm8-M Baseline adds a small number of, but very handy instructions over m0-plus).”
Python 3.13.0RC2, 3.12.6, 3.11.10, 3.10.15, 3.9.20, and 3.8.20 Are Now Available
A big joint release from the Python developers. Mostly security fixes but also the final release candidate of Python 3.13 – Python Insider Blog.
RP2350: the Brains of the Raspberry Pi Pico 2
Nick Francis, technical director at Raspberry Pi, writes about the features of the new RP2350 and how it was designed. An interesting note – it appears all Raspberry Pi microcontroller chips are made on the TSMC 40nm process – Raspberry Pi News.
Stretching the Possibilities of Soft Robots with Flexible Electronics
Prof. Rebecca Kramer-Bottiglio and a team of researchers have developed complex electronics that can stretch substantially beyond their original shape. Further, the system can be easily adapted to different uses. The results of their work are published in Science Robotics. As a demonstration, they developed stretchable versions of an Arduino — a widely used open-sourced electronics platform—and embedded them into soft robots – RechXplore.
What is an STM32 MPU? Understanding the New Realities of Microprocessors in Embedded Systems
What is an STM32 MPU? Understanding the new realities of microprocessors in embedded systems helps answer the difference between a microcontroller (MCU) and a microprocessor (MPU) – ST Blog.
Six Underrated Features and Upgrades of the Raspberry Pi 5
The Raspberry Pi 5 packs quite a powerful computational punch for its low price point and compact size. That’s far from the only thing about the Raspberry Pi that has been changed for the newest model, though. SlashGear takes a look at some of the low-key features, upgrades, and beneficiaries of those features and upgrades that help it stand out – SlashGear.
Raspberry Pi Imager 1.9 Released with Qt 6 Port, AppImage Support, and More
Raspberry Pi Imager, a user-friendly tool for creating bootable media for Raspberry Pi devices, has been updated today to version 1.9, a major release that brings a modern interface and new features – 9to5Linux.
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 CircuitMatter.
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 State Toggle – Adafruit Blog and YouTube.
Catch all the episodes in the YouTube playlist.
CircuitPython Weekly Meeting
CircuitPython Weekly Meeting for September 9, 2024 (notes) on YouTube.
Project of the Week: A Tactile AAC Board
The Tactile AAC board is a 160-phrase, snap-dome button symphony for nonverbal communication. Foldable, spill-resistant, and CircuitPython-powered. The portable version has a neck strap included. Speech tech meets absurdly practical design – hackaday.io via X.
Popular Last Week
What was the most popular, most clicked link, in last week’s newsletter? How to recover a “bricked” Raspberry Pi Pico 2 or other RP2350 board.
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.
Work in Progress: Feather TFT Clock – Adafruit Playground.
Orrery: Put a solar system in your pocket! – Adafruit Playground.
Wii Nunchuck BLE Adapter – Adafruit Playground.
News From Around the Web
This version of a slot machine is tiny! It uses an Adafruit SAMD21 QT Py and a 5×5 NeoPixel BFF board, coupled with a microswitch to activate a spin. Programmed in CircuitPython – Hackaday, YouTube and GitHub.
Designing a replacement PCB for the Microsoft Sculpt Ergonomic Keyboard with RP2040 and QMK (CircuitPython) – TechBeret via Hackaday.
An audio visual synthesiser which uses @CritterGuitari‘s Eyesy software and the Yoshimi synth running on a Raspberry Pi Zero 2W. The keyboard also has polyphonic aftertouch which works with Yoshimi. The visualizations are using pygame
in Python – X.
Generating time-based one-time passwords (TOTP) using MicroPython, Raspberry Pi Pico W and the Waveshare Pico-Oled-1.3 – GitHub.
Making a sports game display board with a Pimoroni Inky Footy Frame (eInk) and MicroPython – X Thread.
GitHub user bablokb is rewriting the ESP32 AT interface library with support for ESP32-C3 and C6 – GitHub.
A new CircuitPython SynthKeyboard helper library – pico-synth-sandbox and documentation, via X.
SuperCon 2023: Ben Combee and the hackers guide to audio/video formats – Hackaday.
How to talk between Raspberry Pis and Picos with Bluetooth – X Broadcast.
Videocast: “CALM #162 – CircuitPython my love” discusses CircuitPython – YouTube (French).
A new CircuitPython library for a WM8960 stereo audio codec – GitHub via X.
Alberto Quesada from UEx teaches the course “Programming with Python and CircuitPython” with SmartOpenLab – X.
MicroPython – adjusting for Daylight Savings and updating the RTC of an SBC – Spindlecrank.
SunChaser is a MicroPython-powered solar tracker – hackster.io.
A CircuitPython library to drive a Raspberry Pi Build HAT – YouTube and GitHub.
A differential wheeled robot with IR sensing using MicroPython and ESP32-C3 – Instructables.
An updated guide on how to use the official Raspberry Pi Touch Display – Raspberry Pi News.
Don’t make this mistake when you start your Python project (use virtual environments) – How-To Geek and Towards Data Science.
The Python QuickStart for people learning AI – Medium and YouTube.
All 71 built-in Python functions – YouTube.
New
The Cytron IRIV IO Controller is a Raspberry Pi RP2350-based industrial I/O controller with CircuitPython and MicroPython support – CNX Software.
Banana Pi Targets Compact, Energy-Efficient Edge AI with the RISC-V-Powered BPI-K230D Zero. With only 128MB RAM, the company plans to promote the board for MicroPython use rather than as a Linux system – hackster.io.
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.
There were no new boards added this week, but several are in process.
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
Blinka Says Tabletop Arcade Game from Tim C
ESP32-S3 BLE RS-232 Controller from Liz Clark
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 496!
New Libraries
Here’s this week’s new CircuitPython libraries:
Updated Libraries
Here’s this week’s updated CircuitPython libraries:
Library PyPI Weekly Download Stats
Total Library Stats
- 177,098 PyPI downloads over 333 libraries
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 12,457
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 12,283
- Adafruit CircuitPython ConnectionManager (adafruit-circuitpython-connectionmanager): 10,927
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 2,423
- Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1,946
- Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 1,608
- Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 1,604
- Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 1,496
- Adafruit CircuitPython Pixelbuf (adafruit-circuitpython-pixelbuf): 1,477
- Adafruit CircuitPython ESP32SPI (adafruit-circuitpython-esp32spi): 1,453
What’s the CircuitPython team up to this week?
What is the team up to this week? Let’s check in:
Tim
This week I wrapped up the implementation of serial plotter inside the CircuitPython Online Code Editor. It’s now available in the beta version of the IDE page. I also wrote up the guide for my latest project: a cardboard arcade game inspired by Simon.
Jeff
I’m continuing to work on support for the new PIO peripheral features in the RP2350. Right at the moment I’m adding support for the “txput” and “txget” modes, which allow access to 4 32-bit numbers in random access fashion, instead of in FIFO fashion. There aren’t yet any PIO programs I’ve found that use these features, but I want to add it for completeness.
Scott
This week I’ve been debugging I2C on Espressif chips. I updated the ESP IDF to 5.3.1 in hopes it fixes the bug. I’m not sure it did. It is a bit hard to reproduce reliably. The IDF 5.3 also adds initial support for the ESP32-P4. I received a P4 development board and polished up changes by @bwhitman to get CircuitPython running on it. USB support isn’t upstreamed to TinyUSB yet so it works over serial for now.
Liz
I had Covid for the first time, so I was out for a bit. I’m back this week though with two new guides. The first is a project that uses BLE on an ESP32-S3 with one of the new RS232 breakouts. I’m using the Bluefruit Connect app to send RS232 messages. The RS232 device that I used is an HDMI switcher, but you can update the CircuitPython code to send any RS232 messages that you want.
I also wrapped up the guide on the QT Py CH32V203. This is a tiny but mighty board that has a lot of power at a low price. Huge thanks to Thach for putting in a lot of work to TinyUSB and the WCH Arduino board support package to make using the board a lot easier. He also assisted me with troubleshooting my own toolchain setup which I really appreciated.
Upcoming Events
The next MicroPython Meetup in Melbourne will be on September 25th – Meetup. You can see recordings of previous meetings on YouTube. The August 2024 Roundup.
Maker Faire Bay Area returns to Mare Island Naval Shipyard on October 18-20, 2024 – Maker Faire.
Hackaday Superconference is an epic gathering of hardware hackers, makers, and tech enthusiasts happening November 1-3 in Pasadena, California – Hackaday and Eventbrite.
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 presennting on MicroPython – PyCon AU.
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.1.3 and its unstable release is CircuitPython 9.2.0-alpha.2351. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20240910 is the latest Adafruit CircuitPython library bundle.
20240913 is the latest CircuitPython Community library bundle.
v1.23.0 is the latest MicroPython release. Documentation for it is here.
3.12.6 is the latest Python release. The latest pre-release version is 3.13.0rc2.
4,035 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,319 Thanks
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 38,319 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.