View this email in your browser. Warning: Flashing Imagery
Welcome to the latest Python on Microcontrollers newsletter! Big news which broke on Ask an Engineer: Espressif (ESP maker) is taking a stake in M5Stack. Arm and Sony already have invested in Raspberry Pi. New versions of the Raspberry Pi Compute Module 4S are now out. And an uptick in Python on Pi projects this issue. I hope you enjoy this week’s coverage - 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:
Espressif Acquires Majority Stake in M5Stack
Espressif Systems has announced its acquisition of a majority stake in M5Stack. M5Stack is renowned for its innovative approach to hardware development and offers a modular, open-source platform that simplifies the creation of IoT and embedded system solutions - Espressif.
Raspberry Pi Debuts the Compute Module 4S 2GB, 4GB, and 8GB Options
The new Compute Module 4S 2GB, 4GB, and 8GB options are based on the Raspberry Pi 4 architecture. They are designed for industrial customers who are migrating from Compute Module 3 or Compute Module 3+ - Raspberry Pi and hackster.io.
Identify Different Bird Species Using Raspberry Pi and Python
Noah and Luca McGill bagged the “Coding with Commitment” Award at last month’s SARSEF (Southern Arizona Regional Science and Engineering Fair) with a Raspberry Pi-powered application of the BirdNET-Pi acoustic bird classification system: A-BiRD written in Python - Project Brief (PDF) and Raspberry Pi News.
The Raspberry Pi microcomputer is finding its way into more and more synthesizers. The biggest synthesizer manufacturer to make use of the Raspberry Pi is Korg. The Japanese synth company’s Wavestate, Modwave and Opsix digital synths all make use of the Raspberry Pi Compute Module - GearNews.
The CircuitPython Online IDE 2.0.0 beta is available
River Wang has released an alpha revision to the independently developed CircuitPython Online IDE (integrated development environment) which runs in a modern web browser. Issues from 2.0 alpha have been addressed. They’re looking for additional feedback - Adafruit Blog and Editor.
I Turned My Raspberry Pi Into a Portable Computer — and you can too
The Raspberry Pi boards are some of the best SBCs for DIY projects, but there’s no reason to confine them within the bounds of your house. Thanks to their small size, it’s entirely possible to slip these devices into your pocket and use them on the move - XDA.
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 ESP USB Host and Renode.
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 shows circup code examples - Adafruit Blog and YouTube.
Catch all the episodes in the YouTube playlist.
CircuitPython Weekly Meeting
CircuitPython Weekly Meeting for Monday, April 22, 2024 (notes) on YouTube.
Project of the Week: A Pimoroni Inky Impression eInk Weather Station
The weather station runs on a Raspberry Pi Zero and displays weather forecast and sensor data. It retrieves the weather data from openweathermap.org and stores and retrieves data from io.adafruit.com - GitHub.
Popular Last Week
What was the most popular, most clicked link, in last week’s newsletter? Meet the NiceGUI: Your Soon-to-be Favorite Python UI Library.
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.
The Necrochasm: Pushing the Prop-Maker RP2040 to its limit - Adafruit Playground.
An update to the Firewalker Sneakers with RP2040 - Adafruit Playground.
News From Around the Web
Transmitting rickrolls over LoRa with CircuitPython and a custom backpack for the Nugget - X.
Simple-MicroPython-Webserver is a MicroPython module to aid in setting up a simple webserver. Testing was done on a Raspberry Pi Pico W. This module allows the use of separate HTML, JavaScript and CSS files - GitHub.
micropython-touch is a lightweight, portable, MicroPython GUI library for displays having a touch interface and with drivers subclassed from framebuf - GitHub.
Xbox pad control for Raspberry Pi projects and Python - hackster.io.
Sign language translator spectacles with Raspberry Pi and Python - Instructables.
Pi approximation with a Raspberry Pi using a Monte Carlo method coded in Python - Instructables.
CircuitPython exercise to draw line and rect - YouTube.
Microquine: self-replicating microcontroller code with MicroPython - GitHub.
A personal, wireless ESP32 Arduino/Raspberry Pi database using Python - Instructables.
Raspberry Pi Pico W: Create Your Own Libraries in Micropython - YouTube.
Exploring LCD Sensors with MicroPython on Bharat PiExploring - hackster.io.
A Lego Rubik’s cube solver programmed in Micropython - YouTube.
Ouija Robot: a disembodied arm that spells out messages with an Adafruit Cricket - hackaday.io.
Fake job interviews target developers with new Python backdoor - BleepingComputer.
BBC Micro:bit – Power usage and Mu (an offline MicroPython editor) - Instructables.
RP2040-ETH-DVI-ZERO: Making an Adafruit IO dashboard monitor - hackster.io.
Invent - an app framework for beginners - GitHub.
Hopper Chat, a Raspberry Pi based Chatbot (LLM) based voice assistance and smart speaker - GitHub.
Using raise
for effective exceptions - Real Python.
New
Pixelblaze is a Wi-Fi Addressable LED Controller and Custom Pattern Editor, powered by an ESP32 module with 240Mhz dual-core processor for ‘blazingly fast’ pixel rendering capabilities. Pixelblaze V3 Pico which is the smallest and most powerful LED controller - Adafruit.
ESP32-POE2 Open Source Hardware PoE IoT board provides up to 25W power supply to external circuits - olimex.
Femto is a ultra compact RP2040 module - hackaday.io.
- small footprint 12x12mm,
- all 30 GPIO pins connected,
- stamp form factor
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 two 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:
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 482!
Updated Libraries
Here’s this week’s updated CircuitPython libraries:
Library PyPI Weekly Download Stats
Total Library Stats
- 153810 PyPI downloads over 326 libraries
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 9868
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 9429
- Adafruit CircuitPython ConnectionManager (adafruit-circuitpython-connectionmanager): 8108
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 2554
- Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 2421
- Adafruit CircuitPython framebuf (adafruit-circuitpython-framebuf): 1578
- Adafruit CircuitPython RGB Display (adafruit-circuitpython-rgb-display): 1415
- Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1330
- Adafruit CircuitPython SharpMemoryDisplay (adafruit-circuitpython-sharpmemorydisplay): 1185
- Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 1123
What’s the CircuitPython team up to this week?
What is the team up to this week? Let’s check in:
Dan
When a UART device was initialized on ESP32-S3 or ESP32-C3, it could receive a junk byte as the first byte. I fixed this by clearing the input buffer after waiting a short time, based on the baud rate.
I’m now working on adding a user-settable timeout for the socket connect()
operation on WiFi-capable boards, to match what is available in CPython. The lwip
library we use does not support this natively, but it’s not too hard to do this “manually”.
Melissa
This past week I continued working on updating guides. I finished updating the Turning your Raspberry Pi Zero into a USB Gadget guide and addressed feedback in a couple of other guides with only minor changes.
Tim
I’ve been testing many networking PRs in the Wiznet and Requests libraries. This week a new version of Circup was released with the new circup example command that loads examples from CircuitPython libraries in the bundle. I’m hoping to make changes in the build-tools or the bundle actions to generate and cache a copy of the examples listing. That could then be fetched from the bundle release page to populate example loading utilities like this one in circup and perhaps some other more visual ones.
Scott
Last week I went to the Zephyr Dev Summit and met a bunch of embedded folks. One group of folks were from Antmicro who make Renode, a microcontroller emulator. I’ve made a CircuitPython port to Renode so that we can test CircuitPython in the emulator. It makes it much easier to monitor execution and memory access than real hardware.
Now that I’m back from ZDS, I’m getting my teeth into BLE support on ESP chips that support it. Specifically, we don’t currently support GATT Server which allows the device to present functionality to another device. We can only do GATT Client now which reads from the other device. I hope to finish support for BLE in ESP so it matches the support on the nRF52840..
Upcoming Events
The 2024 Open Hardware Summit will be taking place May 3 & 4, 2024 at Concordia University and lespacemaker in Montreal, Canada - oshwa.org.
PyCon US 2024 launches May 15-23, 2024 in Pittsburgh, Pennsylvania US - PyCon US.
The next MicroPython Meetup in Melbourne will be on May 22nd – Meetup. You can see recordings of previous meetings on YouTube.
Open Sauce, the Maker extravaganza, is returning to San Francisco, California June 15-16 - Open Sauce.
EuroPython is the oldest and longest running volunteer-led Python programming conference on the planet. This year it will be held July 8-14 in Prague - EuroPython 2024.
PyOhio is being held July 27-28, 2024 in Cleveland, Ohio - PyOhio.
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.0.4 and its unstable release is 9.1.0-beta.1. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20240426 is the latest Adafruit CircuitPython library bundle.
20240412 is the latest CircuitPython Community library bundle.
v1.22.2 is the latest MicroPython release. Documentation for it is here.
3.12.3 is the latest Python release. The latest pre-release version is 3.13.0a6.
3,893 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.
39,133 Thanks
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 39,133 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.