View this email in your browser. Warning: Flashing Imagery
Welcome to the latest Python on Microcontrollers newsletter! What happened to “quiet Summer”? So much has been happening! CircuitPython 9.1.0 final is out now and packed with features, including floppy support and Bluetooth on ESP32. A big week in Arduino’s life: they embrace the industry I2C standard (great) but the embedded OS they use, Mbed, will go end-of-life (um). There is so much more, please feel free to browse through for topics of interest, and I hope you have a great week - 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 9.1.0 Released!
CircuitPython 9.1.0 is now the latest revision of CircuitPython, and is the new stable release. The added features feel like a major release (see below) - Adafruit Blog and Release Notes.
Notable changes since 9.0.0
INCOMPATIBILITY WARNINGS
- API changes to
floppyio
.
- String values in
settings.toml
must be quoted.
AUDIO
- RP2040
I2SOut
supports BLCK
and LRCLK
in either order.
- ESP32-S3 supports
audiomp3
.
audiomp3
supports streaming from HTTP servers.
BLUETOOTH
- BLE GATT server support on Espressif.
- Pairing and bonding support on Espressif.
BUILT-IN MODULES
- Enhance
collections.deque
functionality.
- Add
keypad_demux.DemuxKeyMatrix
: use multiplexer for one side of a keypad matrix.
- Add integration-based debouncing to
keypad
.
supervisor.Runtime.serial_bytes_available
now returns a count instead of a bool.
- Incompatible change:
floppyio
improvements, including API changes.
- Espressif:
microcontroller.cpu.frequency
is settable.
GRAPHICS
fourwire.FourWire
: chip_select
pin is now optional.
picodvi
now supports 640×240 and 800×240 resolutions.
- Enable
_eve
on Espressif boards with more than 4MB flash.
INTERNAL
- Espressif: update to ESP-IDF v5.2.2.
- Espressif: Change task-switching quantum to 1 millisecond from 10 milliseconds.
NETWORKING
- Implement
ssl
module for anything that provides socket
.
- Add stream protocol support to
SSLSocket
.
PORTS
- New port for
renode
hardware simulator.
POWER
- Enable deep sleep on all supported Espressif chips.
SUPERVISOR
- String values in
settings.toml
must be quoted.
USB
max3421e
USB host support.
- Allow user-specified names for
usb_midi
interfaces and jacks.
Arduino Embraces Maker I2C Bus Standard Connections
Arduino has joined with SparkFun, Adafruit, and others in embracing a standard connector for I2C bus connections. Called Qwiic by SparkFun and Stemma QT by Adafruit, this allows for solderless connections to dozens of compatible boards including sensors, indicators and controls. Dubbed Modulino® by Arduino, there are a number of I2C boards coming out - Arduino Blog.
Arm Mbed has announced the following on the mBed OS Blog:
- The Mbed platform and OS will reach end of life in July 2026, when the Mbed website will be archived and it will no longer be possible to build projects in our online tools
- The device software - Mbed OS - is open source and will remain publicly available, but is no longer actively maintained by Arm
- The Mbed TLS project is unaffected by this announcement and continues to be supported as part of the TrustedFirmware community project.
Also: End of the Line for Arm’s Mbed OS, noting that Arduino was a heavy adopter of Mbed OS for its products including Nano 33 BLE - Hackster.io.
Kevin’s Intermediate MicroPython course builds on the foundations laid in the Learn MicroPython - the basics course. The course delves into more advanced topics, with the knowledge and skills to tackle complex projects with confidence - Kev’s Robots.
Understanding the Raspberry Pi Pico’s Memory Layout
In updating TensorFlow Lite Micro for the Raspberry Pi Pico, Pete Warden documented the processor’s memory map after finding the understanding of it limited - Pete Warden’s Blog.
Embedded MicroPython: MicroPython is Amazing
Arya Voronova provides an overview of MicroPython, it’s capabilities, and how its usefulness can be addictive - Hackaday.
New ViperIDE Features Added
ViperIDE is a new third-party development environment for MicroPython and CircuitPython.
ViperIDE now runs the full MicroPython compiler right in the browser, thanks to WebAssembly - X.
In addition to direct and remote device connectivity, ViperIDE can now run an emulated device directly in a browser. This feature is experimental, but you can try it here - X.
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 starting 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 Feather Bootloaders - Adafruit Blog and YouTube.
Catch all the episodes in the YouTube playlist.
CircuitPython Weekly Meeting
CircuitPython Weekly Meeting for July 8, 2024 (notes) on YouTube.
Project of the Week: Boris Puts Two Raspberry Pis to Work in an Industrial Home Assistant Control Panel
A high-tech panel for a Home Assistant installation is on tap this week. It uses two Raspberry Pi 3 B+ and some Adafruit I2C IO expanders to accomodate all the external inputs and outputs. It’s tied together on the panel with Python running on the Pis - hackster.io and YouTube.
“I modeled this after modern commercial jetliner cockpits, and also a little on nuclear power plant control rooms,” Boris explains of the control panel’s aesthetics.
Popular Last Week
What was the most popular, most clicked link, in last week’s newsletter? New Edition: Get started with MicroPython on Raspberry Pi Pico.
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.
Virtual Display Over Web Serial - Adafruit Playground.
CamTest: PiCowbell Camera Breakout Demo - Adafruit Playground.
Tricorders, using Circuit Playground Express and CircuitPython - Adafruit Playground.
News From Around the Web
Espressif has a free book in PDF format - ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT - Espressif (PDF) via X.
An animated business card that recipients may actually keep, using CircuitPython - hackster.io via X.
How to make a connected badge that shows the latest news headlines — and looks like a floppy disk. Coded in MicroPython - Tom’s Hardware.
Better Buttons with Debouncing from CircuitPython School - YouTube.
Twirly Shirley: the Pico-powered precision turntable using MicroPython - Raspberry Pi News.
Computer vision (and more) for the Arduino Alvik robot with MicroPython - hackster.io.
Yuki-board is a business card-sized capacitive touch keyboard that uses touch and swipe gestures to type. It runs CircuitPython. It is heavily inspired by the Plum Blossom Chinese IME on PPC and the Japanese Flick keyboard on Android - YouTube via X.
How To run your Raspberry Pi using solar power - SlashGear.
Tulip, a musical computer based on MicroPython. Conceived with a clear focus on music, it comes with an internal sequencer and software synthesizer (-framework), MIDI and audio interfaces - YouTube.
Programming a MatrixPortal M4 and two 32x16 RGB LED panels in CircuitPython - Mastodon.
Torvalds Speaks: The Impact of Artificial Intelligence on Programming - YouTube.
PySkyWiFi: completely free, unbelievably stupid WiFi on long-haul flights, coded in Python - Adafruit Blog.
Python meets JavaScript, Wasm with the magic of PythonMonkey. PythonMonkey is a JavaScript runtime living inside of Python, built on top of Mozilla‘s SpiderMonkey engine. Developers can use it as a Python library for running JavaScript code in Python - TheNewStack.
What’s in a name? Looking at PyPi - Josh Cannon.
“81% of packages have a single prefix, which when normalized directly correlates to the package name.”
Wanna build a Raspberry Pi 5 cluster? - Raspberry Pi News.
Pyxel is a retro game engine for Python. Thanks to its simple specifications inspired by retro gaming consoles, such as only 16 colors can be displayed and only 4 sounds can be played back at the same time, you can feel free to enjoy making pixel art style games - GitHub.
“mnist” in 60 lines of Python code, no dependencies, for educational purposes - GitHub.
How to create a Python executable file with PyInstaller - TheNewStack.
LPython 0.22 released for ahead-of-time compiling in Python - Phoronix.
Making Python Less Random - Andrew Healey.
New
The n-fuse PoE HAT Provides Power and Range of mPCIe and M.2 Storage Options to the Raspberry Pi 5. New HAT comes in mPCIe and M.2 B-key, M-key, and E-key flavors — but USB connectivity will cost one the warranty - hackster.io.
Will Whang’s FourThirdsEye puts a Sony IMX294 sensor on a Raspberry Pi 5 or Compute Module 4 - 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 was one new board added this week:
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
MP3 Playback with CircuitPython from Jeff Epler
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 488!
Updated Libraries
Here’s this week’s updated CircuitPython libraries:
Library PyPI Weekly Download Stats
Total Library Stats
- 138249 PyPI downloads over 330 libraries
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 11836
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 10717
- Adafruit CircuitPython ConnectionManager (adafruit-circuitpython-connectionmanager): 9736
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 2704
- Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 1809
- Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1475
- Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 1464
- Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 1250
- Adafruit CircuitPython Pixelbuf (adafruit-circuitpython-pixelbuf): 1236
- Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1087
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.1.0 last Wednesday. Thanks to everyone who worked on this release for the past several months.
Next I’m going to work on catching us up to the latest MicroPython changes. We last merged MicroPython v1.21. MicroPython most recently released v1.23. We merge the versions one at a time to understand the merges more easily and make them smaller.
Melissa
This past week, I updated the CircuitPython Code Editor and fixed the USB Workflow to get it into a working state. In the process, I found that the REPL JS library will need to be updated to use Raw mode rather than Raw Paste mode, which will fix some of the weird issues that I’ve been seeing. I will also need to make some structural changes and will continue to working on it over the next week or so.
Tim
text.
Jeff
I published a guide on the Adafruit Learning System: MP3 Playback with CircuitPython. This details MP3 streaming, recently added in the latest development version of CircuitPython, as well as bringing together other information about using the audiomp3 module that was previously spread across multiple guides.
Scott
This week I’m digging into the Matter IoT specification and planning to implement a portion of it in CircuitPython. There is an open SDK written in C++ but it is quite large and complex. So, I’m going to attempt to re-implement the core bits in Python instead. It is built on top of IPv6 TCP and UDP so it shouldn’t require many changes internal to CircuitPython.
Liz
This week I worked on a product guide for the IR Remote Transceiver. This breakout lets you send and receive IR remote signals. It has examples for both Arduino and CircuitPython.
I also worked on testing the Vindie S2 board. I have a spreadsheet where I can keep track of the tests I’ve tried and what’s working vs. not working in CircuitPython and Arduino. One thing that we’ll need to change on the next hardware revision is the USB port. The one we chose is mechanically strong but has slightly too much overhang on the edge, so it conflicts with the case. I found a port that has data pins without any extra mounting hardware. This seems to be rare for vertical USB C ports. I designed up a quick breakout for this new port. That should be arriving in the next few days.
Upcoming Events
The next MicroPython Meetup in Melbourne will be on July 24 – Meetup. You can see recordings of previous meetings on YouTube. The June 2024 Meeting Notes and Video.
PyOhio is being held July 27-28, 2024 in Cleveland, Ohio - PyOhio.
Espressif DevCon24 will be held Sep 3-5, 13:00-18:00 CEST. Call for presentations now - Espressif.
Maker Faire Bay Area returns to Mare Island Naval Shipyard on October 18-20, 2024 - Maker Faire.
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.0. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20240709 is the latest Adafruit CircuitPython library bundle.
20240625 is the latest CircuitPython Community library bundle.
v1.23.0 is the latest MicroPython release. Documentation for it is here.
3.12.4 is the latest Python release. The latest pre-release version is 3.13.0b3.
3,966 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,124 Thanks
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 38,124 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.