View this email in your browser. Warning: Flashing Imagery
Welcome to the latest Python on Microcontrollers newsletter! A busy week for those in the Python community with PyCon US 2022 in Salt Lake City, Utah, US and online. There is a new Python for micro:bit to try out. Lots of new things and projects to browse and much more.
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:
PyCon US 2022 This Week
PyCon US 2022 is this week. The event is in-person with an online component from 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 – PyCon Blog.
Kattni, Melissa and Jeff from Adafruit will be attending April 28th through May 3rd. Kattni and Melissa will be attending the Education Summit on April 28th. Kattni will be giving a talk at the Summit called Simplicity and Fun: Learning with CircuitPython. The team will also be hosting a Welcome to CircuitPython mini-sprint.
They will be hosting Open Spaces every day (time TBD), which will be an introduction to CircuitPython using the Circuit Playground Bluefruit (CPB). The Bluefruit boards will be provided, along with a few other accessories, to enable folks to explore CircuitPython. A quick-start will be available, as well as a series of other examples to delve into. All three team members will be available to help.
Kattni and Melissa will be hosting development Sprints May 2nd and 3rd – Adafruit Blog and the Open Spaces GitHub.
Going to PyCon? Get the Most Out of PyCon US – Real Python.
Try out the micro:bit Python Editor (Beta)
The Micro:bit Educational Foundation is excited to announce that their new Python Editor has entered its Beta phase, meaning that they’re getting ready to to release it to the community – microbit.org mailing and micro:bit support.
The new editor has been built from the ground-up with classroom use in mind. It aims to make text-based coding more accessible to students who may find it hard to engage with the subject by removing known barriers to learning. It’s also designed to make computer science appeal to more diverse cohorts and hence expand their horizons.
Tom’s Hardware Pimoroni Servo 2040 Review
Tom’s Hardware reviews the new Pimoroni Servo 2040 board – Tom’s Hardware.
We tested the Pimoroni Servo 2040 using MicroPython and CircuitPython. Pimoroni has created a new version of its MicroPython release which provides support for Servo 2040, and it seems that roboticist and developer Chris Parrott has poured a lot of love into the software that supports this project. The MicroPython modules for Servo 2040 are well documented and robust. We are seeing great hardware and software backed by great documentation.
For our MicroPython test, we elected to use the Pimoroni’s version which also supports CircuitPython libraries. We wanted to test a few Stemma QT devices with MicroPython and this seemed like a great fit. We ran through Pimoroni’s examples, testing single and multiple servos. Everything went extremely smoothly.
CircuitPython Online IDE for Classes
The new CircuitPython Online IDE for Classes project provides nearly the same online IDE as the CircuitPython Online IDE. However, in this project, teaching functions are provided:
- Students sign in the IDE by a unique ‘nicknames’
- Instructors can monitor the students’ editor code and console outputs according to their ‘nicknames’
- Instructors can monitor multiple students
With these additional functions, instructors can provide timely feedback to the students – GitHub.
A paper on this was accepted to the ASEE (American Society for Engineering Education) 2022 conference! – Twitter.
The MicroPython and CircuitPython Twitter Communities are Growing
The new Twitter Communities are taking off and so are is the membership in the MicroPython and CircuitPython communities. Check them out:
The Memray Memory Profiler for Python Open Sourced
Bloomberg has open sourced Memray, a memory profiler for Python. It can track Linux memory allocations in Python code, in native extension modules, and in the Python interpreter itself.
It can generate several different types of reports to help analyze the captured memory usage data. While commonly used as a CLI tool, it can also be used as a library to perform more fine-grained profiling tasks – Adafruit Blog and 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 a displayio SpriteButton 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, 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 CircuitPython Show is moving to a bi-weekly schedule and will return Monday, May 2nd with guest Melissa LeBlanc-Williams.
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.
New Video Series: Chip Shortage
Chip Shortage is the latest video series from Adafruit. Ladyada discusses the current chip shortage in the electronics industry with focus on a specific product each week – Adafruit Blog, this week’s video YouTube and YouTube Playlist.
Project of the Week: A Multi MIDI Router
A multi-MIDI router (DIN and USB), using a Raspberry Pi Pico, Adafruit Trinket M0, and a Seeedstudio Xiao.
One of the easiest ways right now to get USB MIDI device support on a Pico is to use CircuitPython, but I’ve not had much success so far with PIO in CircuitPython. So I have the requirement that I want to use MicroPython for PIO support, but need CircuitPython for USB MIDI device support. Neither will support USB MIDI host functionality. This project is one enhancement that adds both by adding two “USB MIDI co-processors” to the Pico.
The Trinket M0 uses Arduino, the Pico side of things uses MicroPython and the Xiao uses CircuitPython – Simple DIY Electronic Music Projects.
News from around the web!
Adafruit visited the Vintage Computer Festival East + InfoAge Science & History Museum this past weekend – Twitter 270+ images, Threadreader, YouTube, Event, and Museum.
My Seeedstudio Xiao RP2040 insect bot is now happily crawling along my kitchen floor. I’m working on improving the 3D printed body to work as a platform to mount other accessories too. Running CircuitPython – Twitter.
A JoyPad (powered by Raspberry Pi Pico and CircuitPython) is performing as the USB mouse and keypad for a pick-and-place machine – Twitter.
LumosRing, an Addressable LED 4x Ring and dual 5×7 block running CircuitPython, was released. It has 240 LEDs forming a 4-deep ring with 70 LEDs forming a dual 5×7 block in the middle – Tindie via Twitter.
A fixed version of Joey Castillo’s LCD wing and a driver based on Adafruit’s HT16K33 segment LED library. This should make it feel familiar, and gives it this cool marquee feature out of the box – Twitter.
Nintendo Switch + Game Builder Garage + Wii uDraw GameTablet + Feather RP2040 + Custom simple mouse HID descriptor + CircuitPython code already written to support uDraw and I can draw a texture – Twitter.
Foamyguy published a video demonstrating the process of making a PR to contribute to CircuitPython Libraries – YouTube.
A patched MicroPython SH1106 Library (by robert-hh) to add partial updates. It’s way speedier for simple operations – Twitter.
A Python Lunar Landing game using the turtle module – The Python Coding Book.
Amazing-QR is a Python QR Code Generator to generate common qr-codes, artistic qr-codes (black & white or colorized), and animated qr-codes (black & white or colorized) – GitHub.
Building on a project from 2019, this new scanner for 8mm and Super 8 film offers HQ Camera Module support and an easier build process, programmed in Python – hackster.io and hackaday.io.
A Python translation of the classic 1971 Star Trek game in the style of the BASIC version on the Commodore PET. May be possible to port to CircuitPython or MicroPython, maybe on a PyGamer – Twitter and GitHub.
Mini Raspberry Pi Zero-powered desktop weather display – Raspberry Pi News and Google Docs.
Code Club World is a free online platform where kids can learn to code and have fun. They will earn a badge for each completed project, building up their collection and proving their coding skills. As well as learning block-based programming, they can start learning text-based coding with Python. With these skills, kids can learn to build games, create inspirational art, make animations, and much more – Code Club World.
Python 3.11 Preview: Task and Exception Groups – Real Python.
edge-ml: an embedded-first machine learning framework that helps developers build models faster and more robustly with an open-source toolchain for embedded machine learning – Adafruit Blog, website and GitHub.
PyDev of the Week: Julien Palard on Mouse vs Python.
CircuitPython Weekly Meeting for April 25, 2022 (notes) on YouTube.
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Learn Git: Git Gud.
Coming Soon
The iRobot Create® 3 Programmable Robot development platform for learning ROS 2. A canvas for your creativity, the Create 3 arrives ready to go with a suite of smart technology. Begin by programming the Create 3 to perform simple behaviors, sounds, and movements. Or advance to autonomous localization, navigation, and telepresence applications – Adafruit.
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 was one new board 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:
New Learn Guides!
Little Desktop Connection Machine from Noe and Pedro
Glider Paper Airplane Controller from Liz Clark
Adafruit ESP32-S3 Feather from Kattni
CircuitPython Libraries!
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 351!
Updated 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!
Dan
I am continuing to work on an ESP32-S2 I2C issue, and am working with an Espressif engineer on a possible solution.
I’m tuning up the NeoPixel timings on various ports to be able to support all the different kinds of NeoPixels we sell.
I’ve been shepherding several pull requests from some new contributors to CircuitPython through the review process.
Jeff
I noticed “Servo 2040”, a new board from Pimoroni appeared in the Adafruit shop. This prompted the question of what it would take to support 18 servo motors at the same time in CircuitPython on the RP2040. It turns out that it should be possible with a small addition to the StateMachine class, and I have a work in progress Pull Request. This may also unlock sending data to a PIO peripheral “in the background” from CircuitPython code, which is cool and will no doubt find uses.
In this image, 4 staggered “servo-like” signals are shown. The code adapts to any number of contiguous pins using just one StateMachine.
On Friday, Saturday and Sunday look for me at PyCon US 2022 in Salt Lake City. I’d be happy to talk with folks from the community, especially at the CircuitPython open spaces. I made myself a custom badge from a PyGamer just for the occasion, so you can pick me out in a crowd.
Kattni
This week I published the Adafruit ESP32-S3 Feather guide. Much of it is tied to the ESP32-S2 Feather guide, as the boards are very similar. If you picked up one of the ESP32-S3 Feathers, and you’re wondering where to start, check out this guide.
I am also working on testing PyLeap. PyLeap is an iOS app that allows you to connect to your Circuit Playground Bluefruit or CLUE board (in the unreleased beta version) from your iOS device, and download and transfer code from a number of Learn guides wirelessly to your board. I’ll be working with our developer to get into a bug-fix cycle and get through what I found. Keep an eye out for the next PyLeap update!
Melissa
This past week I worked on a script that would install the MIPI driver for the Raspberry Pi including figuring out all the offsets and rotations to match the existing FrameBuffer-based drivers. I started working on trying to separate the touchscreen functionality from the old driver and while it does show up, I am still unable to receive touch events.
This next week I’ll be at PyCon US – at the conference, open spaces, and at the sprints. If you are also attending, be sure to look for me there.
Tim
This week I tested a few network based PRs, to support multiple cookie headers, and try multiple SSID’s if supplied in secrets.py for projects that utilize PortalBase. I addressed some feedback received on my core PR to allow TileGrids to have their bitmap changed after initialization as well as re-tested all of the behavior and argument validity checking. In preparation for that to be merged, I started working on a SpriteButton class that will allow us to easily make fully custom bitmap buttons that can have separate sprites for pressed and un-pressed states. I did the final round of editing and on the typing information guide page and submitted it for moderation. It’s been published and I’ll be blogging it soon.
Liz
I’m starting to work on a Laser Harp project. I’ll be using 8 time of flight sensors to “play” the harp. The harp will output MIDI and I’ll be using a combination of detecting when my hands are over a ToF sensor and using the distance to affect CC values. I’m leaning towards including a Music Maker FeatherWing so that it can be a standalone synth.
This is going to be a larger project so I will also be working on documenting a quick USB to serial MIDI converter with a QT Py and CircuitPython. This was a project done by Sandy Macdonald on Twitter and we thought it would be great to document for the community.
Upcoming events!
The next MicroPython Meetup in Melbourne will be on April 27th – Meetup. See the slides of the March 23rd meeting.
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.
Latest releases
CircuitPython’s stable release is 7.2.5 and its unstable release is 7.3.0-beta.1. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20220424 is the latest CircuitPython library bundle.
v1.18 is the latest MicroPython release. Documentation for it is here.
3.10.4 is the latest Python release. The latest pre-release version is 3.11.0a7.
2,945 Stars Like CircuitPython? Star it on GitHub!
Translating CircuitPython is now easier than ever and we need your help!
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
Lead Hacker @ Hack Club – Adafruit Jobs Board.
34,061 thanks!
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 34,061 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.
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.