If you missed this week’s Python on Microcontrollers Newsletter, here is the ICYMI (in case you missed it) version.
To never miss another issue, subscribe now! – You’ll get one terrific newsletter each Tuesday (which is out before this post). 10,503 subscribers worldwide.
The next newsletter goes out in a week and subscribing is the best way to keep up with all things Python for hardware. No spam, no selling lists, leave any time.
Welcome to the latest Python on Microcontrollers newsletter! Raspberry Pi has released a major update to Raspberry Pi OS. If you’ve been looking for software to match their peripheral releases, check it out. KiCad is holding a conference in September in Spain, pack your bags. A very full issue this week with something for everyone. Enjoy – 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:
A New Raspberry Pi OS Update Arrives with Linux Kernel 6.1 LTS
A new Raspberry Pi OS update has arrived with the release of Linux Kernel 6.1. This is the first update to the official operating system for Raspberry Pi devices in 3 months and is notable for being the first version powered by the Linux 6.1 LTS kernel (previous versions use Linux 5.15 LTS). The newer kernel offers improved hardware support, new drivers, performance boosts, and better security. Gamers will appreciate the addition of new gamepad drivers.
The Raspberry Pi OS 2023-05-03 update also features updated software, including Chromium 113, Mathematica 13.2.1, MATLAB 23.1.0, and Raspberry Pi Imager 1.7.4, with big updates to libcamera, libcamera-apps (including improved thumbnail rendering), and picamera2 (including EXIF date and time tags) – omgLinux and RaspberryPi.com Downloads.
European KiCad Conference will be held September 9-10th, 2023
The KiCad Conference (KiCon) is the largest gathering of hardware users and developers using KiCad. Following the success of the first KiCon in 2019 in Chicago, this is the second annual KiCon, and the first one in Europe. If you are interested in KiCad as a user, developer, or contributor, this is the place to be. It will be held at the Palexco Conference Center, in A Coruña, Spain, from Sept 9th through the 10th, 2023 – KiCon 2023.
CircuitPython and Version Control
The Moving Electrons blog discusses CircuitPython and version control in projects. Just like coding on a ZPC, CircuitPython would benefit from some form of version control. A simple Linux bash script is demonstrated to manage the git workflow and copying files – Moving Electrons.
EduBlocks acquired by Anaconda
Anaconda Inc., provider of the world’s most popular data science platform, has announced the acquisition of EduBlocks, a free, web-based, drag-and-drop Python coding platform built to help K-12 students learn fundamental skills. With EduBlocks, Anaconda expands its reach and offerings for K-12 schools as well as for beginner-level professionals – Anaconda via Twitter.
What’s the Best Language for Microcontrollers: MicroPython, CircuitPython, Arduino, or C?
What’s the Best Language for Microcontrollers: MicroPython, CircuitPython, Arduino, or C? MakeUseOf takes a look at four popular methods and finds that it can truly depend on what type of user is looking to program which type of project – MakeUseOf.
Mojo is a new programming language for AI developers. Mojo combines the usability of Python with the performance of C, unlocking programmability of AI hardware and extensibility of AI models – Modular.
Eugene Yan ran a simple benchmark (Mandelbrot sets) between Mojo and Python. The speedup is impressive, and it benefits from Python’s libraries – Twitter and GitHub.
- Python: 1,184ms
- Mojo: 27ms
- Python (vectorized): 240ms
- Mojo (vectorized): 2ms
A Universal CircuitPython Computer
bobricius has expanded the capabilities of his microcomputer-based full keyboard projects to include the PICOmputer 28 Universal CircuitPython Computer. It accommodates a Raspberry Pi Pico, Pico W, or ESP32-S3 as the processor and supports either a 2.8”, 2” or 1.3” display. It also supports a LoRa module, Grove modules and a speaker. There is an optional battery add-on board – Twitter and YouTube.
New Python Book Humble Bundle
Humble Bundle is offering sets of Python programming eBooks at special prices. The full set is a $555 value for a pay as you want price, with a share of the proceeds going to the Python Software Foundation – Humble Bundle.
Advanced Text with MicroPython on Raspberry Pi Pico Connected to Waveshare LCD Displays
Using advanced text with MicroPython on Raspberry Pi Pico with Waveshare LCD displays – The Pi Hut via Twitter.
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 HTTP Server controlling multiple peripherals.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
John Park’s CircuitPython Parsec will be broadcast on JP’s stream on Thursday. For past shows visit the Adafruit Blog and YouTube.
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 – CircuitPythonShow.
The latest episode was released May 8th and features Ben Shockley. Ben shares how he created the Mini Fig boards, how CircuitPython has helped with development, and advice for new PCB designers – Show List.
Project of the Week: Forecasting the Weather with Picasso Paintings
Alan has created a project to display weather information in the form of Picasso-like images. Through web crawling, the Python code asks GPT to make a simple story about the weather, sends the story to DALL-E 2 to obtain a Picasso-like image of the current weather, then transmits the image to a Raspberry Pi Pico through Ethernet and outputs it to an LCD via CircuitPython – hackster.io project, article, YouTube and GitHub.
News from around the web!
The Clipboard is a small macropad which runs CircuitPython/KMK. Despite the tiny form factor, it’s capable of doing quite a bit – Twitter and GitHub.
Lasertheremin lets you play more than one note at the same time using three VL53L0X time of flight sensors and two PCM5102 DACs. “I am always trying to find out how far Micropython can be pushed” – Hackaday.
How to use a break beam sensor and make your own light gate on the cheap using a Raspberry Pi Pico and MicroPython – GurgleApps, GitHub and YouTube.
A power recliner chair controller with MicroPython and Raspberry Pi Pico W – Hackaday.io and GitHub
Estudio Roble drives 500 NeoPixels with an Adafruit ItsyBitsy M4 and CircuitPython – Twitter.
An in-wall CircuitPython weather station – Twitter.
Polling the the YouTube API for data using a Raspberry Pi Pico and CircuitPython – Twitter.
Using the Wokwi Arduino/ESP simulator programmable in MicroPython – Twitter.
Getting the weather forecast with Raspberry Pi, MicroPython and Open Meteo – Project and Twitter.
Making the game Sichuan for MicroPython-x68k – GitHub.
A single-axis solar tracker that uses two light detectors (LDRs) and two resistors in series to create a light potentiometer, done in MicroPython – Twitter.
The top 13 Raspberry Pi HATs one needs to try in 2023 – RaspberryTips.
How to Create an Image of a Raspberry Pi SD Card (Win/Linux/Mac) – RaspberryTips.
A good thread explaining Python list comprehension – Twitter.
PyDev of the Week: James Bednar on Mouse vs Python
CircuitPython Weekly Meeting for May 8th, 2023 (notes) on YouTube
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? The 10 Year Evolution of MicroPython.
The Adafruit RP2040 CAN Bus Feather with MCP2515 CAN Controller and STEMMA QT I2C port – Adafruit.
ArmaCard – SPI micro SD card to LoRa RFM95 adapter which works with CircuitPython – Tindie vcia 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 eleven new boards added!
- Feather RP2040 Prop-Maker
- Core2 ESP32 IoT
- YD-ESP32-S3 N16R8
- YD-ESP32-S3 N8R8
- TTGO T-Display ESP32 16M
- T-Watch 2020 V3
- Feather RP2040 CAN Bus
- Feather RP2040 ThinkInk
- Feather RP2040 with USB Type A Host
- BeagleBone Blue
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:
- How to Add a New Board to CircuitPython
- How to add a New Board to the circuitpython.org website
- Adding a Single Board Computer to PlatformDetect for Blinka
- Adding a Single Board Computer to Blinka
New Learn Guides!
Star Trek LCARS Display from John Park
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 432!
Here’s this week’s new CircuitPython libraries:
Here’s this week’s updated CircuitPython libraries:
Library PyPI Weekly Download Statistics
Total Library Stats
- 100188 PyPI downloads over 310 libraries
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 6758
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 6188
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 1969
- Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1455
- Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1134
- Adafruit CircuitPython RGB Display (adafruit-circuitpython-rgb-display): 1097
- Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 1065
- Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 1052
- Adafruit CircuitPython ServoKit (adafruit-circuitpython-servokit): 895
- Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 828
What’s the CircuitPython team up to this week?
What is the team up to this week? Let’s check in!
I returned this week from 10 days at PyCon US and had a weekend to recover. PyCon was amazing; it was so wonderful to reconnect with friends, and to make new friends. We hosted three sets of events: a workshop, Open Spaces and Sprints. The workshop was held during the Education Summit before the conference. Open Spaces happen during the three-day conference. Sprints are held in the days following the conference; there are four days total, however, we hosted for three days only. The workshop was an excellent Welcome to CircuitPython event – a bunch of folks chose to join in, and definitely enjoyed themselves. Open Spaces are self-guided meetups around a topic of the hosts choice, and in our case, it was an introduction to CircuitPython using the Circuit Playground Express.
All three days were well attended, though Friday and Sunday outdid Saturday by quite a bit. We had new folks every day, but engaged the same folks all three days in many cases as well. Everyone enjoyed it, and 65+ attendees left with a CPX to take home. The Sprints are designed around providing a space for folks to contribute to your open source project. We had many attendees, all three days, who were excited to contribute code and documentation to the CircuitPython project. Based on PR numbers alone, it was the most successful sprint we’ve ever hosted. The best part for me, though, is that folks are still engaging after the conference and Sprints have ended. This is great to see!
This week, I published the Adafruit Feather RP2040 RFM95 guide. It has everything you need to get started with your new RP2040 LoRa Feather. From Pinouts, to tips and tricks, to CircuitPython and Arduino demos, this guide is the place to go after getting your new Feather. Check it out!
Next up is a 3D printed canary nightlight collaboration with Noe, as well as catching up on a list of guide updates and miscellaneous whatnot that need to be taken care of.
This week I’ve been reviewing the influx of PRs from the PyCon sprinters. Many type annotations and other improvements have been submitted, it’s been great to see. The other thing I’ve been working on this week is making a non-blocking text marquee for the 14×4 segment displays so you can scroll messages while doing other things.
I’m back from PyCon US (which was a blast) and I have continued working on
I’ve got a new open pull request to really increase the amount of control the Python program has over the synthesizer. It adds a new Note class, which has a number of properties that can all be varied dynamically while the note is playing — the note frequency itself in Hz, but also the note’s individual envelope, waveform, tremolo & vibrato.
I’ve also adapted the standard Python
wave library into CircuitPython. This was super handy because it enables easy use of waveforms from AKWF with
synthio. By the time you read this, it may already be available in the bundle as
The AKWF files are free to download under the CC0 license but the author requests a donation if you find them useful.
This week I wrapped up the DVI API changes and my i.MX RT work. I should be working on a porting guide for the CircuitPython APIs but Ladyada distracted me with implementing the Bus Pirate command line interface on top of CircuitPython.
I published two new guides. The first is a video synth using the Feather RP2040 DVI. It was written with the PicoDVI Fork for Arduino. It was the most project code I’ve ever written with Arduino and it was really fun.
The next guide is the product guide for the Feather RP2040 USB Host. This board has USB Host functionality in Arduino and I’m looking forward to possibly doing a project with it.
The next MicroPython Meetup in Melbourne will be on May 24th – Meetup. From the April 26th meeting – Notes and Video.
EuroPython 2023 will be July 17-23, 2023, in Prague, Czech Republic and Remote – EuroPython 2023.
PyCon UK will be returning to Cardiff City Hall from Friday 22nd September to Monday 25th September 2023 – PyCon UK.
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.2. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20230508 is the latest CircuitPython library bundle.
v1.20.0 is the latest MicroPython release. Documentation for it is here.
3.11.3 is the latest Python release. The latest pre-release version is 3.12.0a7.
3,521 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,291 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.
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.