View this email in your browser. Warning: Flashing Imagery
Welcome to Issue 175: the latest Python on Microcontrollers newsletter! This week, there are more in-person events scheduled and a focus on interviewing the people working on embedded Python. Keep an eye on these trends. Now to today’s issue:
Note: 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:
Awesome Lists are curated lists of resources on a specific topic. For Python on Microcontrollers, there are two Awesome Lists you might wish to check out: Awesome CircuitPython and Awesome MicroPython.
Awesome CircuitPython is a a curated list of awesome CircuitPython guides, videos, libraries, frameworks, software and resources. It was updated last Friday – Awesome CircuitPython.
Awesome MicroPython is a curated list of awesome MicroPython libraries, frameworks, software and resources – Awesome MicroPython.
MIDI for Makers Guide
Liz Clark has a new guide with everything to get you started with your own MIDI projects. You can focus on building rather than searching everywhere on the internet – Adafruit Learning System.
Whether you’re a classically trained pianist or a hobbyist who thinks synths sound really cool, the allure of DIY MIDI projects are incredibly tempting. It can be hard to know how to get started though. What board should you use? How does the code work? What even is MIDI?
CircuitPython Deep Dive Stream and Guest Host
This week, Tim (@foamyguy) joins Scott for discussing PyUSB and CircuitPython. Tim is taking the reins starting next week for a number of weeks while Scott is on paternity leave.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
An All-in-One Python Humble Book Bundle
An All-in-One Python Humble eBook Bundle is currently being offered. $756 value, pay $18 or more – Humble Bundle.
We’ve teamed up with Packt for our newest bundle! Get ebooks like Python for Geeks, Machine Learning Engineering with Python, Clean Code in Python, Django 3 By Example, and 40 Algorithms Every Programmer Should Know. Plus, your purchase will support Direct Relief!
Dublin Linux Developer meetup with Adafruit March 5th
Dublin Linux Developers met online with Jeff Epler and Melissa LeBlanc-Williams from Adafruit on March 5th – Meetup and Adafruit Blog.
Jeff’s presentation was “From Zero to CircuitPython”. CircuitPython is an embedded implementation of the Python language, a friendly fork of MicroPython primarily developed by Adafruit and designed to simplify experimenting and learning to code on low-cost microcontroller boards. Jeff demonstrated the process from receiving a factory fresh Adafruit board to showing the Dublin weather forecast downloaded over WiFi on the board’s built-in TFT display. Some prior familiarity with Python and JSON is helpful, but not essential. GitHub gist of the code written during the session and other links will be provided.
Melissa’s presentation was “Getting to Blinky with Blinka” and included an overview of how easy it is to get up and running with Adafruit Blinka on a Raspberry Pi. She showed off a couple of her other projects including a scrolling message board that can easily be scripted using Python and TI calculator with a fully working Raspberry Pi Zero inside. Both projects are running Linux as the base OS.
Note: apologies this wasn’t in last week’s issue. Video forthcoming.
The Python Software Foundation
The Python Software Foundation are hiring to expand their Infrastructure staff. See the job listing here. Applicants from around the world are welcome for this remote position – The PSF Blog.
Python 3.11.0a6 is available
The Python core developers released Python version 3.11.0a6 on March 7th – Download.
There are major new features in the 3.11 series compared to 3.10. Among the new features and changes so far:
- PEP 657 – Include Fine-Grained Error Locations in Tracebacks
- PEP 654 – Exception Groups and except*
- PEP 673 – Self Type
- PEP 646 – Variadic Generics
- The Faster Cpython Project is already yielding some exciting results: this version of CPython 3.11 is ~19% faster on the geometric mean of the performance benchmarks, compared to 3.10.0.
The next pre-release of Python 3.11 will be 3.11.0a7, currently scheduled for Tuesday, 2022-04-05 – Python Blog.
John Park’s CircuitPython Parsec:
Catch all the episodes in the YouTube playlist.
The CircuitPython Show
The CircuitPython Show is a new 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 twenty to thirty minute interview – CircuitPythonShow, Blog Post and Twitter.
The first episode aired on March 1st featuring an interview with Kattni Rembor. The second episode airs today March 8th with maker Les Pounder – Show List.
Project of the Week
Armawatch is a wrist mount reimagination of the Armachat microcontroller board.
The board is powered by a Waveshare RP2040-LCD with a 0.96” IPS LCD display. It also has a full keyboard. The firmware is based on CircuitPython.
See more on YouTube and on Twitter.
News from around the web!
A guide on how to program a Raspberry Pi Zero 2 W (without needing an operating system) using CircuitPython – Cytron and YouTube, via Twitter.
CircuitPython MIDI Display on Adafruit PyBadge & PyGamer with a MIDI FeatherWing – YouTube and GitHub, via Twitter.
PiDeck turns a Pimoroni Pico RBG Keypad into a USB Shortcut Keypad Programmed in CircuitPython). It’s similar to a Streamdeck X-keys – Twitter, YouTube and GitHub.
I’m “modernizing” my IBM Model M13 w/ Trackpoint. I’m designing a drop-in PCB with USB and it will run CircuitPython – Twitter.
A ping pong set up between two Adafruit RP2040 Feathers using RFM95 radio FeatherWings and the GSG Labs hackRF visualizing what was happening – Twitter.
Educator Kelly Schuster-Paredes thanks Boston College professor Gallaugher for making learning CircuitPython easy for 7th graders on Circuit Playground Express boards by Adafruit – Twitter.
It started to get cheap stream camera tally lights working and became an HTTP server for the CircuitPython ESP32, a REST API for I/O on the ESP32-S2 and Raspberry Pi, a cross-platform Python and Lua script for OBS, 3D-printable enclosures for LED arrays – OBS via Twitter.
JoyPad is Yet Another Macro-Pad using CircuitPython. 19 keys, NeoPixels, game controller style joystick with press-action, buzzer, and OLED display – Twitter.
An LED bolo tie featuring an Adafruit Gemma and a NeoPixel Jewel programmed in CircuitPython – Twitter.
Yay! I managed to upload my custom picture on my Pimoroni Badger204! I was using MicroPython version 1.18.2 instead of 1.18.3! Ready for the next in-person Girls Into Coding event – Twitter.
A wireless “tripwire” that switch your desktop app when motion is detected using MicroPython – hackaday.io and YouTube.
Ada IO photo uploader is a simple Python script to upload photos from a Raspberry Pi to the Adafruit IO service. Images are base64 encoded before upload – Gitlab via Twitter.
Trevor Flowers at Transmutable has made a limited run of miniature Memex desks based on a Raspberry Pi 4 and Python. They use a custom adapter hat to drive the displays and to receive input from the lever and the many buttons – Twitter.
A gentle introduction to serialization for Python – Machine Learning Mastery.
Charlyn has printed stickers for SD cards to make them look like floppy disks – rather creative – Twitter.
PyDev of the Week: Anna Makarudze on Mouse vs Python
CircuitPython Weekly Meeting for March 7, 2022 (notes) on YouTube
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? The Mu Python Editor version 1.1.1 Stable released.
The new Pellicanus MicroPython-compatible board will be available on Crowd Supply soon! – Crowd Supply and 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 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:
New Learn Guides!
Sketch Drawing Toy with CircuitPython from Noe and Pedro, and Carter Nelson
MIDI for Makers 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 346!
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.2.0 final about ten days before this issue of the newsletter. We have more bugs to fix soon for 7.2.1 or 7.3.0. I’m working on several of these bugs.
I finished some shuffling of Python annotation types from the CircuitPython source tree to the
circuitpython_typing library. The types are used for generating stubs, and are also part of the documentation for core CircuitPython. Now we have a central place for adding new annotation types.
For testing purposes, I’ve interfaced a Feather RP2040 to an Apple 2 floppy drive. Using CircuitPython, it’s possible to position the read/write head, and obtain flux information from the floppy using the PIO peripheral. This just for experimental purposes, you can find the code in a github gist.
I’ve also tried reading and writing Apple II floppy images with a PC drive, contributing some pull requests to FluxEngine in the process (1, 2). However, a real Apple //e still can’t reliably read the disk images I create.
This week I did a bit of template work in both Arduino and CircuitPython. There are new templates for reading the LC709203 battery monitor on boards that have it, graphics test on board that have a built-in TFT, and using Adafruit IO to send and receive data.
I stumbled into a bug with
microcontroller.cpu.temperature being called when WiFi is initiated, and went through a series of steps thinking I had fixed it, and it turns out, it’s not something we can resolve. There’s an issue filed on the ESP-IDF about the exact issue I was having, so it’s at a lower level than CircuitPython. I filed an issue on the CircuitPython core so we have somewhere to link it to the IDF issue, and to track it.
This past week I was out for part of the week due to health issues, but I did manage to get a little work done with updating Blinka to work with the Beaglebone Black on newer versions of the firmware. I also worked on preparing for a talk I gave this past weekend to the Dublin Linux Developers group.
I updated the PyPortal Winamp project to work with and fit nicely on the PyPortal Titano device. It also will now automatically generate a playlist by searching for mp3 files on the SD card if the user didn’t set up their playlist themselves. I submitted a PR to CircuitPython core and nina-fw repositories to update the root certificates that are used when fetching data from the internet with CircuitPython. These allow us to fetch Webb Telescope data directly from a NASA provided server, so I updated that project to use the new data source and changed it to show the current data returned.
I made a small update to some documentation of the WiFi built-in module in the core. I also did some testing around and attempted to implement a solution to an issue occurring when sending USB HID events and updating large OnDiskBitmaps showing on the display.
This week I’ve been heads down on USB Host work. A week ago I decided that CircuitPython should provide a subset of the PyUSB API. This is the most commonly used CPython API used for interacting with USB devices. The benefit of copying the API is that we can port over existing code to CircuitPython as well. Making this decision got my brain unblocked.
The first platform I’m adding support for is the iMX RT (most popularly on the Teensy 4.x). The higher end versions of the iMX RT have two USB peripherals. One we can use for CIRCUITPY and one we can use for USB host. I’ve been getting code going there and revamping the serial debug setup a bit along the way.
The 4th annual Python Web Conf is the most in-depth Python conference for web developers. It will be hosted virtually on LoudSwarm by Six Feet Up, coming March 21-25th, 2022 – Python Web Conf 2022.
The next MicroPython Meetup in Melbourne will be on March 23rd – Meetup. See the slides of the February 23rd meeting.
PyConDE and PyData 2022 will be held in Berlin, Germany from April 11 – 13, 2022 at the Berlin Conference Center – PyCon DE.
PyCon US 2022 planning is underway. The event is in-person with an online component. April 27, 2022 – May 5, 2022 in Salt Lake City, Utah USA. Head over to the PyCon US 2022 website for details about the conference and the schedule (new) – PyCon Blog.
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.
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.
CircuitPython’s stable release is 7.2.0 and its next unstable release will be 7.3.0-alpha.1 (not yet available). New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20220304 is the latest CircuitPython library bundle.
v1.18 is the latest MicroPython release. Documentation for it is here.
3.10.2 is the latest Python release. The latest pre-release version is 3.11.0a6.
2871 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.
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
Consultancy on Power Monitoring Project – Six Paths Solutions – Adafruit Jobs Board.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 33,466 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.