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,568 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! A comfortable welcome to Autumn (in the North). Hacktoberfest is nearly here where everyone can contribute to open source projects. Eben Upton gives a new interview post chip shortage and PyScript gets a complete rewrite among the news this week. Don’t forget to get started on your Halloween projects, one of the most project prolific times of the year – 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:
Hacktoberfest 10 Starts October 1st
This year marks the 10th anniversary of Hacktoberfest! Hacktoberfest has grown from 676 participants in 2014 to nearly 147,000 participants last year – Hacktoberfest.
What is Hacktoberfest?
“Join forces in virtual and in-person events to get your project’s pull/merge requests done as a team, learn new skills, and meet lifelong friends. This year we’re partnering with Major League Hacking to help the community connect. Open source projects, maintained by community-minded coders, make the modern internet function. Supporting that essential work, and the folks behind it, is what Hacktoberfest is all about.”
As in previous years, CircuitPython will be participating in Hacktoberfest, marking some Pull Requests as Hacktober eligible. Keep an eye on the Adafruit Blog for details as October approaches – Adafruit Blog.
Note the reward system is shifting from T-shirts to virtual rewards – Hacktoberfest Rewards.
New Interview With Eben Upton, Raspberry Pi Founder
At the 2023 Raspberry Pi Partner event in Cambridge, UK, Elektor’s Brian Tristam Williams caught up with Raspberry Pi Trading CEO Eben Upton to talk origins, vision, and mission – YouTube.
CircuitPython Getting Pieces Ready for Version 9
The CircuitPython team has been getting key features into CircuitPython ahead of a new Version 9 – GitHub.
These include:
- Updating to the Espressif ESP-IDF 5.0 (goal is to get to 5.1)
- Merging changes from MicroPython v1.20 (goal is to get to the latest version)
EuroPython 2023 Talk Videos Now Available
EuroPython 2023 talk videos have been released on YouTube as a playlist – YouTube.
Some interesting talks below including from the Python on Hardware community:
- The Future of Microprocessors — Sophie Wilson
- Python on Arm Architecture – Diego Russo
- Async Robots – Radomir Dopieralski
- PyScript and the magic of Python in the browser – Nicholas Tollervey, Fabio Pliger
pico-ice: An RP2040 plus Lattice iCE40UP5K FPGA Development Board
pico-ice is a small, low cost board with the Raspberry Pi Pico RP2040 microcontroller along with a Lattice Semiconductor iCE40UP5K FPGA. The board features independent flash for the FPGA and RP2040, low power SSRAM, two pushbuttons and a 3 color LED with all FPGA and RP2040 pins brought out to easy to use 0.1” header pins (arranged as PMODs) for prototyping – Elecrow.
Making a Single-Button Keyboard With CircuitPython
MagiClick S3 is a single-button keyboard with a color display and is based on an Espressif ESP32-S3 microcontroller. The display features a 0.85-inch color screen, 128×128 resolution. The main control board is currently designed with the ESP32-S3 which supports WiFi, flash, and RAM large enough to hold functional scripts in CircuitPython – hackster.io, GitHub and the Adafruit Blog.
PyScript “Next” Rewrites Browser-based Python Scripting
After a huge amount of effort, the PyScript team announces the release of the first technical preview of the next version of PyScript.
This is a big change. In summary, the team writes:
- We have re-architected PyScript on top of a new core: Polyscript.
- This has significantly reduced the size of PyScript and improved its performance.
- PyScript supports multiple Python interpreters (Pyodide and MicroPython).
- PyScript now supports parallel execution of code via web workers.
- There is a new plugin system.
- We’ve started a complete re-write of the documentation.
Changelog: We re-wrote everything – GitHub.
Python 3.12.0 Release Candidate 3 Now Available
Python 3.12 is at release candidate 3, now out for community review (it will be the last release preview for 3.12) – Python Insider Blog.
New features
- More flexible f-string parsing, allowing many things previously disallowed (PEP 701).
- Support for the buffer protocol in Python code (PEP 688).
- A new debugging/profiling API (PEP 669).
- Support for isolated subinterpreters with separate Global Interpreter Locks (PEP 684).
- Even more improved error messages. More exceptions potentially caused by typos now make suggestions to the user.
- Support for the Linux perf profiler to report Python function names in traces.
- Many large and small performance improvements (like PEP 709 and support for the BOLT binary optimizer), delivering an estimated 5% overall performance improvement.
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 having CircuitPython use the Espressif ESP IDF 5.1.
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 Circuit Playground Play Files – Adafruit Blog and YouTube.
Catch all the episodes in the YouTube playlist.
Project of the Week: Steering a Robot Via QR Codes
Roland Schulz demonstrates an innovative Pimoroni Inventor 2040 W mars-rover. It uses a Raspberry Pi and a Tiny Useful Sensors Reader and CircuitPython/MicroPython. The sensor will help to navigate the robot by reading QR codes – X (formerly Twitter) and Adafruit Blog.
News from around the web!
An articulated hexapod running CircuitPython with inverse 3DOF kinematics – X.
A multi-use clock made with an Adafruit Prop-Maker Feather, RGB LED matrix and CircuitPython – Instagram.
A CircuitPython program that shows the capacitance of a pin as a color on the ROYGBIV color scale – Mastodon.
Use AI to generate clues for a fun, interactive puzzle hunt and learn how to program with LLMs! Uses an Adafruit MagTag and the OpenAI Python API – hackster.io.
A carbon intensity display with a Raspberry Pi Pico, a Pimoroni GFX Pack and MicroPython – SimonPrickett.dev via X.
REINETTE II PLUS DOT PY is an easy to use, yet efficient, Apple II plus emulator in Python – GitHub.
We previously highlighted Bhavesh Kakwan’s MicroPython tutorial “How to configure your MicroPython project with JSON files” and now there is an accompanying YouTube video – YouTube and Adafruit Blog.
Using a button, microcontroller and CircuitPython to trigger a phone camera – X and Adafruit Blog.
A follow-up on the addition of Python to Excel – LinkedIn.
Using an Adafruit PyGamer as a basic GPS receiver – X.
Using Micropython to connect Wiznet W5500 Pico Pis over Ethernet – Stephanj’s Writings.
Sharing data between multiple Raspberry Pi Pico W boards using Thonny, MicroPython and sockets – Electromaker.
Paul Cutler is making a music identification program with display of a song on an RGB matrix display – Mastodon.
Keyboard Builders’ Digest latest issue – Keyboard Builders’ Digest.
How to Write a Python Subclass – pybytes.
PyDev of the Week: Timothée Mazzucotelli on Mouse vs Python.
CircuitPython Weekly Meeting for September 18th (notes) on YouTube.
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Embedded Systems Engineering Roadmap.
New
Murasan on X posts a series of reviews for the SUNFOUNDER Pironman case for Raspberry Pi (Japanese) – X, Amazon.co.jp and Amazon.com.
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 no new boards added but several are in development.
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!
Adafruit Metro M7 with microSD from Kattni
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 449!
Updated Libraries!
Here’s this week’s updated CircuitPython libraries:
- adafruit/Adafruit_CircuitPython_HID
- adafruit/Adafruit_CircuitPython_AHTx0
- adafruit/Adafruit_CircuitPython_Wiznet5k
- furbrain/CircuitPython_CaveBLE
- CedarGroveStudios/CircuitPython_MIDI_Tools
Library PyPI Weekly Download Stats
Total Library Stats
- 70124 PyPI downloads over 313 libraries
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 8369
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 7512
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 2495
- Adafruit CircuitPython PCA9685 (adafruit-circuitpython-pca9685): 1275
- Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1228
- Adafruit CircuitPython ServoKit (adafruit-circuitpython-servokit): 1211
- Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1097
- Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 871
- Adafruit CircuitPython Pixelbuf (adafruit-circuitpython-pixelbuf): 679
- Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 620
What’s the CircuitPython team up to this week?
What is the team up to this week? Let’s check in!
Dan
After several hours of “pair merging” with Jeff, we resolved all the pending merge conflicts in the MicroPython v1.20.0 merge to CircuitPython. I was then able to make the first commit to my merge branch. Jeff then got the mpy-cross executable to build after numerous small changes, and I made some further touch-ups. I’ll be continuing on the merge in the coming days.
We would all like to thank Kattni for her years of work on CircuitPython, its community, libraries, and guides. We are looking forward to seeing what she’ll be doing next.
Kattni
My last day working with Adafruit was Friday, September 22, 2023. I want to say thank you to everyone in this community. This community is a huge part of what started this chapter in my life, and my involvement with it has been one of the most fulfilling and amazing things I’ve done over the last five years. I would not be where I am today without the support and encouragement I received from so many folks along the way. You have read my guides, helped me with code and bugs, taught me new things, and so much more.
One of the best things has been you telling me when something I suggested, created or helped create had a positive impact on you or folks you know. Keep sharing those stories. Thank you for being amazing, thank you for being a part of the welcoming, positive, supportive place that we’ve created together, and finally, thank you for welcoming me as a community leader and giving me the opportunity to gain the experience of building an open source community.
Melissa
This week I continued working on going through issues in the various GitHub repos starting with Blinka. I also went through and updated the configuration and documentation settings so that everything was building properly. Eventually I moved over to working on the Blinka Displayio
issues by updating the code to better align it with the CircuitPython displayio
code layout and making it more readable.
Tim
This week I ran the RTD Theme fix patch with the Adabot Utility that applies the patch to all Libraries. It was my first time using this functionality of Adabot, I was shown how prior but had no “hands on” experience. There were a handful that it failed to push, so I also created PRs on those ones with the same fix. I also tested some changes to the Ethernet Wiznet5k
Library, and I’ve been continuing work on a templating engine with a community member.
Jeff
I added code to the core to initialize dot clock LCD displays that require use of an I2C bus expander. This sounds pretty esoteric, but is needed in order to support the built in LCD screen on the Espressif ESP32-S3 LCD Evaluation Kit.
I’m also helping out Dan with the MicroPython 1.20 merge. We’re making progress but there are a large number of errors to fix, first in the build process and then the problems that turn up during automated and manual testing. This merge is one of the things that we want to get done before the first alpha release of CircuitPython 9.
It had been months since I had time to do a keyboard conversion guide. That changed this past week when I took a couple of hours to write up a conversion of the Unicomp “Mini M” tenkeyless keyboard to use CircuitPython. You can find it on the learn playground. This buckling spring keyboard was recently updated with a Raspberry Pi Pico as the controller, which makes putting CircuitPython easy, if you don’t mind potentially voiding your warranty by opening up the enclosure.
Scott
Last week I finished up the Espressif IDF 5.0 update for CircuitPython and made a PR. I also started the 5.1 merge during my stream. More changes were needed this week to enable ESP32-C6 support but it is working now. Code size is still an issue unfortunately. The 5.1 update should come pretty quickly after 5.0.
Liz
This week I worked on the Adafruit Learning System guide for the LED Matrix Sports Scoreboard. This project uses four 64×32 RGB LED matrices with the Matrix Portal S3 to fetch data from the ESPN API for various sports and leagues. I took the hero shots while the New England Patriots were playing against the Miami Dolphins and, although they ultimately lost to the Dolphins, it was fun to see the data update alongside the live feed.
Upcoming Events!
The next MicroPython Meetup in Melbourne will be on September 27th – Meetup.
Maker Faire Bay Area will be October 13-15 & October 20-22, 2023 – Eventbright.
Hackaday has announced that the Hackaday Supercon is on for 2023, and will be taking place November 3 – 5 in Pasadena, California, USA – Adafruit Blog and Hackaday.
The inaugural PyLadies Conference will take place December 1-3, 2023 – pretalx.
The Pyjamas Conference, the 24-hour online Python conference, will be returning for a fifth year on December 9-10. The Call for Papers began on September 2nd and extends to September 30th – Twitter.
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 8.2.6. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20230920 is the latest Adafruit CircuitPython library bundle.
20230917 is the latest CircuitPython Community library bundle.
v1.20.0 is the latest MicroPython release. Documentation for it is here.
3.11.5 is the latest Python release. The latest pre-release version is 3.12.0rc3.
3,666 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.
37,712 Thanks!
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 37,712 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 Reels), 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 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.