If you missed Tuesday’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). Over 9,490 subscribers worldwide!
The next newsletter goes out in a week and being subscribed 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! CircuitPython is on the verge of a new release with a release candidate. A couple of interesting learning resources from Raspberry Pi and the PSF. And a great crop of projects from this past week, plus so much more. Let’s get into it.
CircuitPython 7.3.0 Release Candidate 0 Released
CircuitPython 7.3.0 Release Candidate 0 has been released. It is considered stable and is available as a release candidate for testing before the final release of 7.3.0 – Adafruit Blog, GitHub, and Hackster.io.
Notable changes to 7.3.0 since 7.2.5:
- Experimental mDNS support.
- USB to to Serial/JTAG support for REPL on appropriate boards.
- Initial experimental USB host support.
- Merge MicroPython 1.18 changes.
gzipmodule will be added later.
- RP2040 PIO: Background write to a PIO state machine. Looping is possible.
- RP2040 PIO:
keypad: scan keystates immediately on creation.
- Improve NeoPixel timings on many ports, to handle a wider range of devices.
floppyio, used in conjunction with a library.
TileGridbitmap to be changed.
- Module support matrix includes frozen modules for each board.
The Raspberry Pi Pico Learning Path
Now, thanks to our brand-new and free Introduction to Raspberry Pi Pico learning path, young coders can easily join in and make their own cool Pico projects! This free learning path has six guided projects to help kids to independently develop their coding skills, and their skills in physical computing and electronics.
PyCon US 2022 Highlights
PyCon US 2022 Highlights: Eric Matthes provides personal highlights from this year’s event – ehmatthes.
News from the Python Software Foundation
The 2022 Python Language Summit: There are reports from each of the nine sessions, including “Python without the GIL”, “The ‘Faster CPython’ project: 3.12 and beyond”, “F-Strings in the grammar”, lightning talks, and more – PSF.
Running Python in the Browser
At PyCon 2022, developers revisited the idea of running Python code in the browser. CPython developer Christian Heimes and fellow contributor Ethan Smith detailed how they enabled the CPython main branch to compile to WebAssembly.
- PSF: The 2022 Python Language Summit: Python in the browser
- Anaconda: PyScript – Python in the Browser
Provide the Micro:bit Educational Foundation Your Feedback
The Micro:bit Educational Foundation recently released a beta version of the new micro:bit Python Editor and they would like to hear about experience using it – Micro:bit Educational Foundation email.
We would like teachers to help us test and improve the new micro:bit Python editor by using it with your students and help shape the future of learning text-based coding with the creativity of physical computing. If you are a teacher and are interested in teaching Python with the BBC micro:bit, we would welcome your feedback. Fill out our short form to apply to join the user study.
Keyboard Layouter Plugin for KiCad
Keyboard Layouter is a plugin for KiCad(pcbnew). This plugin places switch footprints in the location specified by JSON of a Keyboard Layout Editor – GitHub.
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 Advanced DisplayIO Interfaces with TabLayout.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
Catch all the episodes in the YouTube playlist.
The CircuitPython Show
The CircuitPython Show is an independent podcast hosted by Paul Cutler, talking with people doing awesome things with CircuitPython. Each episode features Paul in conversation with a guest for a short interview – CircuitPythonShow and Twitter.
Liz Clark from Adafruit joins Paul in the latest episode, released May 16. Liz shares her maker journey and talks about MIDI for beginners – Show List.
TammyMakesThings is Streaming CircuitPython
Community member and CircuitPython contributor Tammy Cravit is streaming on Twitch. Her stream focuses on electronics, coding and making, with a focus on CircuitPython. The first few streams have been working on a MacroPad-based MIDI controller, and she’s got lots of other project ideas in the works. An exact schedule for her streams is still being worked out, but she’s targeting 2-3 streams per week. Check it out and follow now to be notified of future streams – Twitch.
Project of the Week: A 3D Printed Stellated Dodecahedron Lit by CircuitPython
A stellated dodecahedron 3D printed and lit with NeoPixels and CircuitPython by GeekMomProjects – Twitter.
I printed a stellated dodecahedron with the folding 3D print technique I got from @SignalSkew. Each face prints flat and edges fold to the dihedral angle to form the polyhedron. Sides (and obligatory addressable LED string) are held in place with small zip ties. It’s printed in clear PETG at 0.2 mm layer height. Wall thickness 1.5mm. Joined edges are 0.4mm thick.
News from around the web!
A realistic, real-time, train departure board with Raspberry Pi and Python – Twitter Thread.
Two GC9A01 round TFT LCDs being driven by CircuitPython on a Raspberry Pi Pico, battery powered with an Adafruit QT Py BFF – Twitter.
Using a 74HC595 and a Raspberry Pi Pico with CircuitPython for buttons & LEDs – Reddit r/CircuitPython.
Assign chip functions to ANY pin. Both nRF52840 & ESP32-based chips let you do this for many peripherals. A demonstration with CircuitPython – Twitter.
Entering Morse code into a tablet with an Adafruit Feather RP2040 and CircuitPython – Twitter.
A recent Google Protobuf implementation for MicroPython 1.17+ – GitHub.
Running your home on a Raspberry Pi podcast – The Changelog Podcast.
Linux commands you should know – a cheat sheet – Twitter.
The Linux Foundation Initiates “World of Open Source” Research Series – PR Newswire.
Free training course – Ethics for Open Source Development – Linux Foundation.
PyDev of the Week: Raza (Rython) Zaidi on Mouse vs Python
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 is one new board:
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!
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!
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 356!
Here’s this week’s new CircuitPython libraries:
Here’s this week’s updated CircuitPython libraries:
What’s the team up to this week?
What is the team up to this week? Let’s check in!
I’m continuing to work on ESP32-nn I2C issues. I worked with an Espressif engineer, who gave me a fix for one bug, which we’ve incorporated into our builds. There is another bug appearing only on ESP32-S3, and I’ve reproduced that in a simple test program outside of CircuitPython and passed on the information.
We should be able to publish the first release candidate for CircuitPython 7.3.0 soon. The final pull requests are being finished.
Check out the updated guide on using the RP2040’s PIO peripheral with CircuitPython.
I started out adding support for an arbitrary number of servo motors with PWM, to work with Pimoroni’s Servo 2040 board. But this work opened up my inner eye and let me grasp other ways to use PIO to control LEDs and NeoPixels in the background while CircuitPython code keeps on chugging.
I won’t be doing weekly updates for a bit, as I’m taking a much needed break. See you in July!
I’m still settling in from PyCon 2022. Tim put together the numbers from the outcome of the sprints; we had 14 PRs from 8 authors. As I said before, it was an amazing experience, and it was great to see so many new contributors join us for the sprints!
I spent this week getting caught up on guide feedback (down to 0!), and testing PyLeap features with CircuitPython updates. I also taught Liz how to create Fritzing objects. She learned quickly, as usual, and even though she encountered issues (as is expected with Fritzing object creation), she has already done a few on her own!
I also started on a new guide page in the Welcome to CircuitPython guide that explains the three different ways CircuitPython libraries can be placed on or accessed from a microcontroller. We get questions about this regularly, so folks are definitely interested in the content. This page will be a detailed explanation of .mpy files, .py files, and frozen modules in CircuitPython. If you want more information on this, keep an eye out for this new page!
This past week, after arriving back safely from PyCon, I worked on a bunch of small GitHub issues and reviewed some outstanding Pull Requests. After that, I wrote up a guide on using Runestone to edit CircuitPython code on iOS devices. One of the things that came out of that guide was realizing we needed the bootloaders of devices to advertise they only used 100ma so that the device wouldn’t stop working. Once that was finished, I started working on the final eInk guide for the 2.7” ePaper displays.
I tested out a PR for RFM9x Radios, and in doing so uncovered a potential issue when using them along with SD Cards on the same SPI bus. Another one of the larger PRs that I tested this week was for the EMC2101 fan controller breakout. I’ve used both of these devices before but only briefly so it was a fun to get them set back up and try out the examples and other code on them. My TabLayout displayio widget was merged into the DisplayIO_Layout library this week and I’ve been helping community member PaulSK prepare some additional examples for it that they worked on. I’ll be continuing to build out more advanced examples that use it during Deep Dive this week and throughout the upcoming weekend.
This week I’m booting back up after six weeks of paternity leave. I’ve gotten through email and given up on past chats. So, I’m onto some bug fixes. First on my list is fixing CircuitPython’s reload interaction with transferring files over BLE. Next I’ll be updating the NTP library to actually use NTP to fetch the time. Currently it relies on ESP32SPI to get the time.
This week I wrapped up the Laser Harp guide. I’m really pleased with how it turned out. I was able to expand on it a bit and add some more features, such as multiple synth instruments depending on the height that you’re playing at, pitchbend and volume control. I’m going to be doing some testing to ensure that the project can also be built with a Feather RP2040 since I ran into some I2C mux issues with the board originally, but in the depths of project assembly it was hard to tell whether it was something on my end or something funkier. I also wrote some code for JP’s Raspberry Pi in stock alarm.
Kattni has shown me how to create Fritzing objects (thanks Kattni!) so I’ve been working on a few to become familiar with it. So far it’s going pretty well. This week I’ll be continuing with Fritzing things, writing up a guide for the CP2102N and working on a new project: wireless LED maracas.
PyCon Italia is the Italian conference on Python. Organized by Python Italia, it is one of the more important Python conferences in Europe. With over 700 attendees, the next edition will be June 2-5, 2022 – Ticket Registration.
SciPy 2022, the 21st annual Scientific Computing with Python conference, will be held in Austin, Texas, USA from July 11-17, 2022. The annual SciPy Conference brings together attendees from industry, academia, and government to showcase their latest projects, learn from skilled users and developers, and collaborate on code development. The full program will consist of 2 days tutorials (July 11-12), 3 days of talks (July 13-15) and 2 days of developer sprints (July 16-17) – SciPy 2022.
EuroPython 2022 will be held on 11th-17th July 2022 and it will be both in person and virtual. The in-person conference will be held at The Convention Centre Dublin (The CCD) in Dublin, Ireland – EuroPython 2022.
PyOhio is a non-profit annual Python community conference usually held in Columbus, OH. It is being held online starting Saturday, Jul 30, 2022. It is free to attend and welcomes anyone with an interest in Python. Content ranges from beginner to advanced and is intended to be relevant to all types of Python users: students, software professionals, scientists, hobbyists, and anyone looking to learn more.
This year’s event will consist of 5 and 10-minute talks and sprints – PyOhio2022
Send Your Events In
As for other events, with the COVID pandemic, most in-person events are postponed or cancelled. If you know of virtual events or events that may occur in the future, please let us know on Twitter with hashtag #CircuitPython or email to cpnews(at)adafruit(dot)com.
20220515 is the latest CircuitPython library bundle.
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.
jobs.adafruit.com – Find a dream job, find great candidates!
jobs.adafruit.com has returned and folks are posting their skills (including CircuitPython) and companies are looking for talented makers to join their companies – from Digi-Key, to Hackaday, Micro Center, Raspberry Pi and more.
Job of the Week
ADC (Analog to Digital Control) RP2040 CircuitPython Software Module – MeanStride Technology, Inc – Adafruit Jobs Board.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 34,360 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.