View this email in your browser. Warning: Flashing Imagery
Welcome to the latest Python on Microcontrollers newsletter! More exciting news this week! Damien George discusses MicroPython R1.20 and more via video. CircuitPython releases versions 8.0.5 (a bug fix release) and 8.1.0-beta.1 (with animated GIF support and much more). PyBricks, MicroPython on Lego, is rising in popularity. Interesting times modding kids toys to actually function. And a plethora of creative projects coming from makers worldwide. I hope you enjoy the issue and if you haven’t subscribed yet, please do so to show your support – 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:
Two New Versions of CircuitPython Released
There were two releases of CircuitPython at the end of last week: one to the stable version (8.0.5) and one to the latest beta version (8.1.0-beta.1):
The stable version of the 8.0 branch was updated to fix known bugs – 8.0.5 and release notes.
The latest beta version fixes bugs for the proposed version 8.1.0 and adds some nice new capabilities – 8.1.0-beta.1 and release notes.
Notable changes to 8.1.0 since 8.0.0
- Add animated GIF support:
safemode.py, for programmatic handling of safe mode.
- Add 7-color e-ink display support.
- Allow setting pystack size in
- Add dither support to
- Add ESP-NOW support on Espressif.
Sneak Peek on MicroPython R1.20
Damien George, creator of MicroPython, gives an update on the pre-release of MicroPython version R1.20 and a demonstration of Bluetooth Low Energy (BLE) on the Raspberry Pi Pico W with MicroPython in this video from the March MicroPython monthly meeting in Melbourne, Australia – YouTube.
PyBricks: MicroPython on LEGO Controllers Gaining In Popularity
More projects are appearing using PyBricks, a version of MicroPython which runs on Lego Mindstorm Hubs.
Kevin McAleer presents Exploring Pybricks: LEGO Mindstorms Evolved – YouTube.
A simple two-wheeled, self-balancing robot controller with a Wii Nunchuk… all running MicroPython! “Hacked together – very quickly! – during the evening of the March Melbourne MicroPython Meetup” – YouTube via Twitter.
Using PyBricks to automate a LEGO train to automatically stop at stations via a color sensor – YouTube.
Another self balancing wheel robot using LEGO and PyBricks – Twitter.
A self-balancing robot using a ball and PyBricks – Twitter.
New ARM Assembly Book
Releasing May 9th worldwide, the ARM Assembly Book written by renowned ARM assembly programmer/hacker Maria “Azeria” Marksteder, who has written and spoken extensively on both coding and reverse engineering ARM code – Website.
Modding a Fisher-Price Toy Into a Functional Game Controller
The Fisher-Price Game & Learn is a sensory toy in the shape of a game controller. Like many folks (including those inside Adafruit), Robert Dale Smith has opened the toy to insert an Adafruit KB2040 controller and firmware to make it into a functional USB controller for PC and Consoles – Twitter Demo.
Using the Upcoming Adafruit Feather RP2040 with DVI to Visualize MIDI Music
Tod Kurt had been testing the upcoming Adafruit Feather RP2040 with DVI board. This project provides visualization of MIDI notes. The ability to output video using a microcontroller provides new opportunities.. At present it is in Arduino, use with CircuitPython is being planned – YouTube.
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
This week, Tim streamed work on PR Reviews and Testing.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
John Park is off but you can catch all the episodes in the YouTube playlist.
The CircuitPython Show
The CircuitPython Show podcast, hosted by Paul Cutler, will be returning on Monday April 10th. He’ll be talking to authors, board designers, developers, and more over the course of season three – CircuitPythonShow and Twitter.
The next episode features Danny Staple, author of the new book Robotics at Home with Raspberry Pi Pico – Show List.
Project of the Week: EuroPi Modules
Version 0.8.1 of the EuroPi Eurorack sound module has been released with 24 community based scripts available. EuroPi is flexible in what its controls may do, programmable in MicroPython – GitHub Project, YouTube, and Website.
News from around the web!
Umbrella bling with a Raspberry Pi Pico and Adafruit CircuitPython – Twitter.
A 14-Segment 8 character display project hooked into a Steam wishlist API. It uses an Adafruit Feather ESP32-S2 coded in CircuitPython – Mastodon.
An Atari game written in MicroPython on a Pimoroni Tufty2040 badge – Twitter.
A virtual candle that plays happy birthday and detects when you blow it out using an Adafruit Funhouse and CircuitPython – Twitter and GitHub.
A Watering monitor with Raspberry Pi Pico W, LiPo battery charging and MicroPython – Twitter.
Testing the Adafruit Feather DVI/HDMI and it’s very cool! An RP2040 with an Arduino library by PaintYourDragon – Mastodon.
Ben Everard looks to have the Google Bard AI write CircuitPython MIDI code with very mixed results – Twitter.
How to Build a Cheap Vibration Generator for Physics Experiments using a Raspberry Pi Pico W – YouTube, GitHub and Project.
Greening the Spark is a model of a system for electricity generation, distribution, storage, and consumption using Raspberry Pi 4 and Python – HackSpace Magazine via the Adafruit Blog.
A multi function display that has a clock, ISS tracker and game with the Pimoroni LCD GFX for Raspberry Pi Pico W. The backlight changes color the closer the ISS is. Programmed in MicroPython – Twitter and GitHub.
Programming with CircuitPython, Raspberry Pi Pico and a Wukong 2040 Breakout Board – Elecfreaks.
An analogue temperature gauge using digital hardware. It uses a BME280 sensor, a Raspberry Pi Pico W, a couple lines of MicroPython and a servo – Twitter.
Student CircuitPython projects from the Boston College Physical Computing course “Make Art” challenge getting featured by Instructables – Twitter.
Pico Web Server: Control Your Raspberry Pi Pico Projects from Any Device coded in MicroPython – YouTube and Article.
OpenRAM is an open-source Python framework to create the layout, netlists, timing and power models, placement and routing models, and other views necessary to use SRAMs in ASIC design – GitHub.
A list of AI tools for data scientists – Twitter.
PyDev of the Week: Eduardo Blancas on Mouse vs Python.
CircuitPython Weekly Meeting for 4/3/2022 (notes) on YouTube.
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Comparing hobby PCB vendors.
$70 RISC-V Computer from Pine64 Goes on Sale April 4 – OMG! Linux.
Open Things wants to replace your Raspberry Pi Compute Module 3 with an Openthing 1 ESP-CM3. Designed to drop in to existing Raspberry Pi CM3 carrier board designs, this ESP32-S3-powered module is a low-cost alternative which can run MicroPython – hackster.io.
The Challenger RP2040 UWB is an Arduino/CircuitPython compatible Adafruit Feather format microcontroller board based on the Raspberry Pico (RP2040) chip equipped with a DWM3000 module – Invector Labs via Twitter.
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 seven 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!
Hexpad from John Park
Generating Text with ChatGPT, Pico W & CircuitPython from Jeff Epler
Adafruit CAN Pal from Liz Clark
Adafruit CAN Bus FeatherWing from Liz Clark
CircuitPython support for hardware continues to grow. We are adding support for new sensors and breakouts all the time, as well as improving on the drivers we already have. As we add more libraries and update current ones, you can keep up with all the changes right here!
For the latest libraries, download the Adafruit CircuitPython Library Bundle. For the latest community contributed libraries, download the CircuitPython Community Bundle.
If you’d like to contribute, CircuitPython libraries are a great place to start. Have an idea for a new driver? File an issue on CircuitPython! Have you written a library you’d like to make available? Submit it to the CircuitPython Community Bundle. Interested in helping with current libraries? Check out the CircuitPython.org Contributing page. We’ve included open pull requests and issues from the libraries, and details about repo-level issues that need to be addressed. We have a guide on contributing to CircuitPython with Git and GitHub if you need help getting started. You can also find us in the #circuitpython 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 414!
Here’s this week’s updated CircuitPython libraries:
Library Weekly PyPI Download Statistics
Total Library Stats
- 49757 PyPI downloads over 309 libraries
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 6743
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 5614
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 1925
- Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1326
- Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 799
- Adafruit CircuitPython ServoKit (adafruit-circuitpython-servokit): 698
- Adafruit CircuitPython PCA9685 (adafruit-circuitpython-pca9685): 694
- Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 655
- Adafruit CircuitPython framebuf (adafruit-circuitpython-framebuf): 512
- Adafruit CircuitPython Pixelbuf (adafruit-circuitpython-pixelbuf): 493
What’s the CircuitPython team up to this week?
What is the team up to this week? Let’s check in!
I made releases of both CircuitPython 8.0.5 and 8.1.0-beta.1 on March 30. 8.0.5 contains one bug fix, courtesy of Jeff: editing settings.toml could have caused a restart loop. 8.1.0-beta.1 contains many enhancements and fixes. There are only 11 issues left for 8.1.0.
This week I added a fix, included in beta.1, that handles “raw HID” reports from the host properly. Raw HID is sometimes used for simple custom data transfer between a host and a USB device.
This week I finished up the Adafruit Feather RP2040 DVI guide, as well as the Adafruit Feather RP2040 RFM69 and RFM95 guides. All of these, if they are not already out, will definitely be out soon. Keep an eye out if you’re interested!
I added the Adafruit Feather RP2040 RFM board definition to CircuitPython which is necessary to use any microcontroller board with CircuitPython. It was nice to step into the core again, if only for a bit.
I will soon be documenting a few projects I’ve been working on including a grow light using Adafruit DotStars, and a time lapse photography project using the Raspberry Pi HQ Camera. There will be guides for both. I’ll keep everyone posted here on the progress.
This past week, I have been working on writing a guide for the ChatGPT Robotic Bear that I mentioned last week. It should be published soon, so look for it under New Guides on the Adafruit Learn System. This guide required a lot of photos because the modification steps were a bit more intricate than previous guides I have worked on.
This week I’ve been working on testing and capturing network traffic logs related to some proposed changes in the Ethernet library. I also looked into an issue with the docs pages that were resulting in some of the interactive capabilities not working properly when viewed on docs.circuitpython.org and submitted a fix that restored the functionality.
It was an eventful week!
I published a new guide, “Generating Text with ChatGPT, Pico W & CircuitPython”, that shows how to generate text using OpenAI’s API and stream the results to an OLED display, all using the Raspberry Pi Pico W.
I fixed some bugs in CircuitPython, including a vexing one that could leave your board in a hard-to-rescue state if you created a large settings.toml file.
And last but not least, I implemented PWMAudioOut for the Metro M7 (and presumably other mimxrt10xx based boards), and fixed a bug affecting both I2SOut and PWMAudioOut on the Metro M7 that caused the audio sample rate to not be honored in all cases, causing audio to be played out of tune and too fast.
This week I worked on two product guides for CAN Bus: the CAN Bus FeatherWing and the CAN Pal. The FeatherWing has an MCP2515 so you can use it with a Feather dev board that does not have a native CAN peripheral. The CAN Pal works with boards that have a native CAN peripheral. I had never worked with CAN Bus before, so it was fun to learn something new with both of these guides.
PyCon US 2023 will be April 19-27, 2023, again in Salt Lake City, Utah USA – PyCon US 2023.
The next MicroPython Meetup in Melbourne will be on April 26th – Meetup. From the March meeting: News video and slides.
EuroPython 2023 will be July 17-23, 2023, in Prague, Czech Republic and Remote – EuroPython 2023.
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.
CircuitPython’s stable release is 8.0.5 and its unstable release is 8.1.0-beta.1. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20230403 is the latest CircuitPython library bundle.
v1.19.1 is the latest MicroPython release. Documentation for it is here.
3.11.2 is the latest Python release. The latest pre-release version is 3.12.0a6.
3,472 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.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 37,066 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, IGTV (Instagram TV), 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.
Codecademy “Learn Hardware Programming with CircuitPython”
Codecademy, an online interactive learning platform used by more than 45 million people, has teamed up with Adafruit to create a coding course, “Learn Hardware Programming with CircuitPython”. The course is now available in the Codecademy catalog.
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.