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 (before this post). Over 8,810 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, brought you by the community! We’re on Discord, Twitter, and for past newsletters – view them all here. If you’re reading this on the web, subscribe here. Let’s get started!
CircuitPython now available for 200 boards!
There are now 200 boards that support CircuitPython! The Slide Trinkey – SAMD21 is board number 200.
CircuitPython, available in 15 different languages, is the one of the easiest ways to program microcontrollers. We began with the Circuit Playground Express approximately three years ago, and reached 100 boards in January 2020 with the Open Hardware Summit badge. Now, over a year later, we’ve reached 200 boards. Chips supported include: Espressif, Microchip SAMDs, Nordic, NXP, RP2040s, ST, and more! Thank you to everyone in our community who has submitted boards to CircuitPython!
Check out the full list on CircuitPython.org!
Read more – Adafruit Blog.
Scott presents for Open Hardware Summit 2021
Scott presents Interface Design in Open Source Hardware and Software for Open Hardware Summit – YouTube.
Check out the entire Open Hardware Summit broadcast on YouTube.
MicroPython 1.15 Released!
MicroPython 1.15 has been released. It now has support for ESP32-S2 and new features for RP2040, as well as all kinds of bug fixes. Check it out on GitHub!
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott streams his work on Actions, bundles and boards.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
News from around the web!
The River Prairie Troll Project uses CircuitPython, among other things, to create an interactive art installation – YouTube.
A close-up view of the River Prairie troll eyes, running the CircuitPython LED Animation library sparkle animation – YouTube.
You can hook up 8 rotary encoders with switches to Raspberry Pi Pico without any extra hardware, supported by CircuitPython – GitHub.
Plan CO2: making a public display of CO2 levels – Makezine.
Enhancing the Pimoroni Enviro+ FeatherWing plotter to plot CO2 ppm from the Adafruit SCD-30 NDIR sensor – YouTube.
Getting Started with CircuitPython for Spresense – YouTube.
Python script to make connecting to the Circuit Python REPL quick and easy – Andy Warburton.
LED moon night-light with phases – Twitter.
Introducing KBPY the little open source hot swap mechanical key switch tester powered by Adafruit QT Py and CircuitPython – Twitter.
Adding a SAMD21 upgrade to a PCB to make it CircuitPython compatible – Twitter.
A collection of activities for 9th and 10th graders to learn CircuitPython with Pico – Twitter.
PoE ethernet FeatherWing test code works with CircuitPython out of the box with Feather RP2040 – Twitter.
Inspired by a project in last week’s newsletter, a spinning Earth simulation on PyPortal using CircuitPython – Twitter.
Playing an MP3 on Maker Pi Pico using CircuitPython – https://tutorial.cytron.io/2021/04/13/play-mp3-file-on-maker-pi-pico-using-circuitpython/.
Earth Day light-up jacket, running CircuitPython – Twitter.
Best Raspberry Pi Pico accessories and add-ons – Tom’s Hardware.
The latest board from solderparty: the RP2040 Stamp – Hackster.
Adafruit’s FunHouse makes DIY home automation less scary and more stylish – Hackster.
CircuitPython compatibility as a sales feature, on Seeed’s Amazon page – Amazon.
Open Source Hardware Association Open Source Hardware Community Survey – OSHWA.
Build Hadabot: set up the ESP32 to interface with ROS 2 – Hadabot.
How to add W5500 Ethernet to Raspberry Pi Pico using Python: Part 2 – Hackster.
MicroPython: Program ESP32/ESP8266 using VS Code and pymakr – Random Nerd Tutorials.
Getting started with MicroPython and Raspberry Pi Pico – Make Use Of.
Learning how to use Pi Pico, in MicroPython language, to control motors, steppers, and servo motors (Chinese) – Blogspot.
Basics of embedded and IoT development with Python – Kalebu Jordan.
Maker Cast Episode 27, including a debate on MicroPython vs CircuitPython – YouTube.
Getting CircuitPython running on a new board – Twitter.
CircuitPython running on SparkFun Pro Micro RP2040 – Twitter.
A workaround carrier board for Stamp RP2040, running CircuitPython – Twitter.
CircuitPython Parsec: firmware drag and drop demo – YouTube.
The Python Software Foundation is hiring a Python packaging project manager – pyfound.blogspot.com.
Global semiconductor chip shortage is becoming a problem – New York Times.
EduBlocks update including a brand new classroom tool that will allow teachers to add students to a class via a code, set assignments with a starter project and mark it – Twitter.
Nano RP2040 Connect will run CircuitPython as soon as they’re available to work with – Hackster.
Build a Python directory tree generator for the command line – Real Python.
Start managing multiple Python versions with pyenv – Real Python.
How to start contributing to open source through the Python project – Real Python.
Converting an IR remote to a Zigbee remote using MicroPython – Hubitat.
Tiny S2 board run CircuitPython, is designed for battery operation – CNX Software.
OrderedDict vs dict, and object oriented programming in Python vs Java – Real Python.
A faux BBS gets software onto your vintage machines using Python – Hackaday.
The tiniest RP2040 boards – the Tiny 2040 and Adafruit QT Py RP2040 – CNX Software.
Quantum Rotary Dial is a vintage rotary telephone that controls your computer via a Python script – Hackster.
Camera Zero looks cool, runs cool, using Python code – Hackaday.
Ultra-cheap arbitrary waveform generator packs a Raspberry Pi Pico to outperform lab gear – Hackster.
Hackaday podcast 113, including Python switching to match – Hackaday.
How you can control your Android device with Python – ITNEXT.
Work with GitHub Actions in your terminal with GitHub CLI – GitHub.
Introducing CUDA Python, with improved #Python code portability and compatibility – Twitter.
PyDev of the Week: Tristan Bunn 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 we had 4 new boards added!
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 Project Bundle
When you get to the CircuitPython code section of an Adafruit Learn Guide, sometimes things can get a bit complicated. You not only have the code you need to upload to your device, but you likely also need to add some libraries that the code requires to run. This involved downloading all the libraries, digging through to find the ones you need, and copying them to your device. That was only the beginning on some projects, as those that include images and/or sound files required further downloading and copying of files. But, not anymore!
Now, with Project Bundles, you can download all the necessary code, libraries and, if needed, asset files with one click! We automatically check which libraries are required for the project and bundle them up for you. No more digging through a huge list of libraries to find the ones you need, or fiddling with looking for other files or dependencies. Download the Project Bundle, copy the contents to your device, and your code will simply work. We wanted to make this the easiest way to get a project working, regardless of whether you’re a beginner or an expert. We’ll also be adding this feature to popular IDEs as an add-on. Try it out with any Circuit Python guide on the Adafruit Learning System. Just look for the ‘Download Project Bundle’ button on the code page.
To download and use a Project Bundle:
In the Learning System – above any embedded code in a guide in the Adafruit Learn System, you’ll find a Download Project Bundle button.
Click the button to download the Project Bundle zip.
Open the Project Bundle zip to find the example code, all necessary libraries, and, if available, any images, sounds, etc.
Simply copy all the files over to your CIRCUITPY drive, and you’re ready to go!
If you run into any problems or bugs, or would like to submit feedback, please file an issue on the Adafruit Learning System Guides GitHub repo.
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 channel 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 311!
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 working on dynamic USB descriptors, which you allow you to enable or disable CircuitPython’s USB mass storage, the REPL serial connection, another data-only serial connection, MIDI, and also select among HID devices. All of this you can do in boot.py, to customize which devices are available. In addition, for HID, you’ll be able to supply your own HID device descriptors, so you can make that custom game pad or joystick or other device that isn’t built-in to CircuitPython.
So far I have most of the Python API and documentation written. I’ve also modified the Python-based compile-time descriptor generator we already use to output additional information so the code can renumber interfaces and endpoints at run-time. I hope to have something for you to try relatively soon.
Based on a user request, I added RGBMatrix (protomatter) support for the Feather M4 CAN in our main development branch. This uses all the same code as SAM D51 microcontrollers, but because this board has a SAM E51 small modifications were needed to enable it.
The bulk of my time over the last week was spent trying to enable the I2S digital audio interface on the imxrt10xx, but something’s preventing it from working and I’ve decided to set it aside for now.
This week, I published the Neo Trinkey guide. It includes some fun examples using the capacitive touch pads and the built-in four NeoPixel LEDs. It also has everything you need to get started with your Neo Trinkey, including pinouts, CircuitPython basics, and resource downloads. If you snagged one of these cute little boards, and want a hand getting started with it, check out this guide.
This guide includes templates! I finally have a live example of what I’ve been working on. Here is an example of one of the templates: NeoPixel Blink. Most of the page is immutable in the editor, but there are spaces to include a tailored image and specific code. This page will be included in the guide for any board that has only built-in NeoPixel LEDs (and no little red LED). For example, a similar page would be included in the QT Py guide (and will be eventually!).
Next up is updating a couple of guides with the QT revision of the breakout, and then onto the FunHouse guide.
This past week I’ve been finalizing some changes to the internal structure of the Alarm system, which fix some important bugs but also make it easier to maintain the sleep functions across all the different ports. I’ve drafted the revisions for the ESP32-S2, since it still has the issue with mismatched objects that I’d previously fixed for STM32. If accepted, it’s still not going to make sleep completely uncomplicated – there’s a lot of funny exception stuff that has to go on – but at least it should make it easier for new and existing contributors to follow the responsibilities of the internal functions.
I’ve also been monitoring the existing power PRs to try and make sure they all stay up to date and can be merged in any order. Since the NRF, STM32, RP2040 and ESP32-S2 all have active Alarm-related development going on, it’s a lot to manage – hopefully everything can start getting merged in this week so development can go back to being a bit more linear.
This past week, I’ve been working on the FunHouse. First I wrote the FunHouse library, which is similar to the MagTag library, but with different peripherals and MQTT functionality. The library is available either in the Adafruit CircuitPython Bundle or from https://github.com/adafruit/Adafruit_CircuitPython_FunHouse.
Once the library was complete, I wrote a guide on using the FunHouse board with home assistant. In the guide, I go over setting up the FunHouse project as well as how to do some more advanced things such as mapping the buttons to toggle lights and emulating an RGB bulb with the DotStars so it can be controlled from Home Assistant like any other light. Keep an eye out for the upcoming guide.
Code-wise I added a larger read/write to the BLE file transfer test. It found some bugs in the implementation but also allowed me to measure transfer speed. I’ll continue this work the second half of this week. I’ll also incorporate some changes based on feedback from the protocol design PR.
I spent the first half of this week improving our GitHub actions tooling. Specifically, I setup a GitHub action to post a helpful comment to CircuitPython library PRs that fail. I also added an action to better find and highlight the errors. Pylint errors will now show on the related line in the files view.
The online GeoPython conference is focused on Python and Geo, its toolkits and applications. April 22-23, 2021 – https://2021.geopython.net/.
PyCon US, the annual official annual Python gathering, has been announced to be held online May 12-15, 2021. Sprints will be held May 16-18, 2021. More information and signups at https://us.pycon.org/2021/
EuroPython, the largest conference for the Python programming language in Europe, has been announced to be held online July 26 – August 1, 2021. More information at https://ep2021.europython.eu/
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 Discord or on Twitter with hashtag #CircuitPython.
20210417 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
Makerspace Specialist – Princeton University Library – Adafruit Jobs Board.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 28,673 humans, thank you! Adafruit believes Discord offers a unique way for CircuitPython folks to connect. Join today at https://adafru.it/discord.
ICYMI – In case you missed it
The wonderful world of Python on hardware! This is our Python video-newsletter-podcast! The news comes from the Python community, Discord, Adafruit communities and more and is reviewed on ASK an ENGINEER Wednesdays. The complete Python on Hardware weekly videocast playlist is here.
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.
And lastly, we are working up a one-spot destination for all things podcast-able here – podcasts.adafruit.com
Codecademy “Learn Hardware Programming with CircuitPython”
Codecademy, an online interactive learning platform used by more than 45 million people, has teamed up with the leading manufacturer in STEAM electronics, Adafruit Industries, to create a coding course, “Learn Hardware Programming with CircuitPython”. The course is now available in the Codecademy catalog.
Python is a highly versatile, easy to learn programming language that a wide range of people, from visual effects artists in Hollywood to mission control at NASA, use to quickly solve problems. But you don’t need to be a rocket scientist to accomplish amazing things with it. This new course introduces programmers to Python by way of a microcontroller — CircuitPython — which is a Python-based programming language optimized for use on hardware.
CircuitPython’s hardware-ready design makes it easier than ever to program a variety of single-board computers, and this course gets you from no experience to working prototype faster than ever before. Codecademy’s interactive learning environment, combined with Adafruit’s highly rated Circuit Playground Express, present aspiring hardware hackers with a never-before-seen opportunity to learn hardware programming seamlessly online.
Whether for those who are new to programming, or for those who want to expand their skill set to include physical computing, this course will have students getting familiar with Python and creating incredible projects along the way. By the end, students will have built their own bike lights, drum machine, and even a moisture detector that can tell when it’s time to water a plant.
Codecademy has helped more than 45 million people around the world upgrade their careers with technology skills. The company’s online interactive learning platform is widely recognized for providing an accessible, flexible, and engaging experience for beginners and experienced programmers alike. Codecademy has raised a total of $43 million from investors including Union Square Ventures, Kleiner Perkins, Index Ventures, Thrive Capital, Naspers, Yuri Milner and Richard Branson, most recently raising its $30 million Series C in July 2016.
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.