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! This week is one of those “everything is happening at once” weeks! Lots of MicroPython news, PyCon US 2022 events, and so much more. I hope you all have the time to browse this issue in-depth to catch all the gems within.
MicroPython Turns 9 Years Old
The 29th of April marked the date on which the first line of MicroPython code was written, and MicroPython is now 9 years old! Via the MicroPython Newsletter, Issue 12, here are some highlights at this point:
In the past 12 months, the main MicroPython code has seen:
- 1210 commits, up from 817 in the previous year (there are now 13,393 total commits)
- 147 contributors, up from 93 in the previous year
- And versions v1.16, v1.17 and v1.18 were released.
MicroPython also gained the following new features:
- mpremote, a new command-line tool for interacting with a MicroPython device; find it at PyPI, and read the documentation
- f-strings (PEP-498)
- additions to the mimxrt port: VFS with internal flash storage, Pin, ADC, UART, Timer, RTC, I2C, SPI, SDRAM, SD card and LAN support
- additions to the rp2 port: RTC, networking and Bluetooth support, more boards
- additions to the samd port: filesystem using internal flash; Pin, LED classes
- machine.I2S on stm32, esp32, rp2 and mimxrt ports
- boosted performance of the VM and runtime by the addition of an optional cache to speed up general hash table lookups
- board.json metadata for each supported board, and corresponding automated building of firmware for the download page.
- simplification of configuration of features via a feature level setting, which aims to make the ports more consistent in what Python features they offer
- And many other things!
GitHub Sponsors has been growing well over the past year, and MicroPython is now receiving USD $4150/month, up from USD $1250/month this time last year. This funding is greatly appreciated and goes towards maintaining the open source code. You can find the sponsorship page here.
It has been a very busy 12 months and things are not slowing down! The project plans to release v1.19 very soon, which includes a completely reworked .mpy file format to facilitate freezing Python code without rebuilding firmware. And there are many other items in the works.
New MicroPython Version 1.19 Coming Very Soon
News on the next release of MicroPython was posted on Twitter – Twitter.
CircuitPython 7.3.0 Beta 2 Released
CircuitPython 7.3.0-beta.2, the third published beta release for CircuitPython 7.3.0, is now out on circuitpython.org. It is relatively stable, but there will be further additions and fixes before final release – Adafruit Blog and GitHub.
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.
All future ESP32 SoCs will be based on RISC-V
CEO and President of Espressif, Swee-Ann Teo, confirmed that all future ESP32 microcontrollers will be based on RISC-V instead of Xtensa “unless we have some special needs for something else, that I don’t see now” – Twitter.
And an article confirming it’s on all product lines and not just the ESP32-Cx line – Robert Lipe.
PyCon US 2022 Coverage
PyCon US 2022 was held this past week in Salt Lake City, Utah, US. With all the Python happenings, there were plenty of Python on Hardware moments. Above are Jeff, Kattni, and Melissa from the Adafruit CircuitPython Team along with CircuitPythonista and library author Rose.
Kattni gave a talk “Simplicity and Fun Learning with CircuitPython.” You can see the slides – GitHub (PDF).
Adafruit hosted CircuitPython Open Spaces. Circuit Playground Bluefruit boards were available to code during the events. The code, etc. is available – GitHub.
Jennifer Kramer posts about her project built during the CircuitPython Open Space – GitHub.
Adafruit donated a special Adafruit box curated by Kattni! It was auctioned at the PyLadies event to benefit PyLadies and it was autographed by Kattni afterwards.
PyScript Announced at PyCon US 2022
PyScript is a framework that allows users to create rich Python applications in the browser using HTML’s interface. PyScript aims to give users a first-class programming language that has consistent styling rules, is more expressive, and is easier to learn.
- Python in the browser: Enable drop-in content, external file hosting (made possible by the Pyodide project, thank you!), and application hosting without the reliance on server-side configuration
- Python ecosystem: Run many popular packages of Python and the scientific stack (such as numpy, pandas, scikit-learn, and more)
- Environment management: Allow users to define what packages and files to include for the page code to run
- Visual application development: Use readily available curated UI components, such as buttons, containers, text boxes, and more
- Flexible framework: A flexible framework that can be leveraged to create and share new pluggable and extensible components directly in Python
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 the TabLayout displayio Widget.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
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, Blog Post and Twitter.
Episode 8 was released Monday, May 2nd and features Melissa LeBlanc-Williams. Paul and Melissa discuss Blinka, retro tech, and more – 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: Boston College Physical Computing Presentations
Boston College Physical Computing students demonstrated their class assistive technologies projects, with the projects coded in CircuitPython.
Assistive technology (AT) projects presented to the Boston College Campus School by BCPhysComp students: a wheelchair mountable pinball machine, a color cube game for preschoolers, a haptic communication tool for a student who is deaf-blind – Twitter.
Eric has a “lay down to snooze” elephant alarm clock. With a Raspberry Pi and coded in CircuitPython – Twitter.
Jill has a Raspberry Pi and CircuitPython based water quality tester that sends notifications to a mobile phone – Twitter.
Flavio uses a Matrix Portal with David Longley’s Adafruit 64×32 RGB LED Matrix modular case to know the availability of the EV charging stations at his office – GitHub.
Adafruit’s Dan Halbert (creator of the Linux/Unix “more” command) checks out the students’ projects – Twitter.
News from around the web!
The new Nano base Board B is is ‘big sister’ to the Nano Base Board A, offering even more functionality and connectivity for a Raspberry Pi Compute Module 4 in a tiny CM4-sized package – The Pi Hut via Twitter.
Paul from The CircuitPython Show says he uses CircuitPython on an Adafruit MacroPad to produce the show – Twitter.
TikTok Text-to-speech API: a simple Python program that accesses the TikTok API and gives you an .mp3 file with what it says in the specified voice – GitHub.
The LumosRing LED board gets animated eyes, curtesy of CircuitPython – Twitter.
I can’t get my laptop out (on my flight). No room. But that hasn’t stop me from working on an Adafruit PyBadge on the plane. USB Type-C to Micro, CircuitPython Editor, and the ability to unzip files on Android – Twitter.
A sound mixer with large conductive paint pads which activate sounds in CircuitPython – Twitter.
Slice36: a Xiao RP2040 powered 36 key split keyboard using KMK firmware, based on CircuitPython – Keyboard Builder’s Digest.
Using an Adafruit PyBadge as a nametag for PyCon – Twitter.
An inexpensive expansion board design for using CircuitPython on a Seeedstudio Xiao – Twitter.
In March, 2020, Abseil published a book titled “Software Engineering at Google.” The Software Engineering at Google book (“SWE Book”) is not about programming, per se, but about the engineering practices utilized at Google to make their codebase sustainable and healthy. They have announced that they are providing a PDF digital copy of this book free of charge. Of course, they encourage you to get yourself a hard copy from O’Reilly, if you wish – abseil.io.
Humble Bundle has teamed up with No Starch Press for their newest book bundle! Get eBooks like Python Playground, Invent Your Own Computer Games with Python, 4th Edition, Make Python Talk, and Python Crash Course, 2nd Edition. Plus, your purchase will support The Python Software Foundation and Hacker Initiative – Humble Bundle.
User experience – Twitter.
8 months ago if you told me I could build and program this thing and use it to offer proximity readings, check the temperature, create light shows, and flash random messages plus tell the time I’d have called you crazy. #circuitpython ftw – Twitter thread.
Run MicroPython in Docker containers – Bhavesh Kakwani.
A visual indicator on a display in MicroPython – Twitter.
Reloadium: advanced hot reloading (also called “edit and continue” functionality) for Python – GitHub.
Packaging Your Code – Hitchhiker’s Guide to Python.
How to work with ZIP files in Python – Python Engineer.
PyDev of the Week: Jyotika Singh 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 were four 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:
- 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!
Updated 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 332!
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 released CircuitPython 7.3.0-beta.2, which includes about three weeks of fixes and improvements. Included are the revised NeoPixel timings I worked on this week.
I’m continuing to debug an ESP32-S2 I2C, together with an Espressif engineer.
This coming week, I’ll be testing the CircuitPython on the ESP32-S3, to see what is currently working and what needs to be fixed.
Before heading to PyCon, some of my work got merged into the CircuitPython core, including the low-level “floppyio” module. This means you can read raw flux as well as MFM floppy data on SAMD51 and RP2040 microcontrollers in Python! While the accompanying library–which does things like control the drive’s motors–hasn’t been released yet, at least the core code is done and merged.
This week involved preparing for and attending PyCon 2022. Everything worked out well. We hosted Open Spaces and Sprints. Open Spaces introduced new folks to CircuitPython on the Circuit Playground Bluefruit. It was amazing to see friends I haven’t seen in three years. I’ll be back to work this coming week.
Before heading to PyCon, I was able to get the touch screen drivers working alongside the MIPI drivers on the Raspberry Pi. I prepared a PR and it’s now merged. There are still a couple of small issues to work out. I had fun hanging out with Kattni and Jeff at PyCon and was able to meet a lot of nice folks.
My core PR to allow TileGrids to have their Bitmap changed was merged this week as well as a PR to add a tilegrid inflator helper to the imageload library. With these features now in place we now have everything needed for the SpriteButton and TabLayout displayio widgets that I’ve been working on. I had my first experience setting up a Sharp Memory Display in order to test out a few PRs for the driver library as well as testing out an asyncio library PR with the examples from the learn guide. Over the weekend I’ll be watching some of the PyCon talks through their online portal.
This past week, I published a guide on how to solder up some MIDI friends for the QT Py RP2040. Speaking as someone who ventured into electronics and coding specifically for music tech and MIDI projects, I’m not sure I’ll ever get over how straight forward using CircuitPython for MIDI is.
This coming week I’ll be continuing on the laser harp project, some Twitter listener CircuitPython code and some new product Learn Guides. I did a guide using the Twitter API back in August 2020 and it’s been fun to revisit.
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.
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.
20220430 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
AV Content Coordinator – The New York Historical Society – Adafruit Jobs Board.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 34,194 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.