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). 9,062 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!
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 31,000 humans, thank you! Adafruit believes Discord offers a unique way for CircuitPython folks to connect. Join today at https://adafru.it/discord.
Wippersnapper Official Beta Released
WipperSnapper is an interface for Adafruit IO, the incredibly easy-to-use IoT platform, designed to turn any WiFi-capable board into an IoT device without programming a single line of code.
A new guide walks through the process of installing WipperSnapper on a development board, a brief overview of the WipperSnapper platform, and instructions for adding (and interacting with) physical components from the web – Adafruit Blog.
Sound Reactive Glasses
Emulate a vintage ROM or EPROM with a Raspberry Pi Pico
The Apple IIe uses a custom microcontroller and ROM chip to put ASCII values from the keyboard into the computer’s memory. How can this function be emulated? The Bald Engineer tries an Arduino Mega 2560 and Teensy 4.0 before finding the inexpensive Raspberry Pi Pico up to the task. Programmed PIO handled the tight timing, while CircuitPython controls the data flow and allows for quick programming and debug – Element14, YouTube and Adafruit Blog.
Join Hackaday, Digi-Key, and Adafruit for a Halloween-themed contest! They want to see your crazy, creepy, ghostly, spooky, and awesome projects.
If costumes are your favorite part of Halloween, then why not dress up your outfit with some hacked upgrades? You could even design a ghoulish prop to add to your home’s Halloween décor or light up a Jack-o-lantern with LEDs. Whether it’s technical, artistic, or just plain terrifying, Hackaday wants to see your projects!
Check out the Halloween Show & Tell with Hackaday, Friday, October 29th at 1pm PT, to show off your awesome projects entered in the contest. Don’t forget to also share your projects on social media and use the #HalloweenHackfest!
Python 3.10.0rc2 is Available with Helpful Error Text
Python 3.10 is scheduled to be released October 4th – Python Insider.
Luciano R on Twitter summarizes a great new feature:
I love Python’s new user-friendly error messages!!! In Python 3.10rc2:
NameError: name 'results_count' is not defined. Did you mean: 'result_count'?
Thank you so much Pablo Galindo and everyone else who is contributing to make Python more and more friendly!
Apparently the user friendly messages were inspired by Rust which was inspired by Elm.
Hacktoberfest Begins October 1st
Hosted by DigitalOcean for the 8th year in a row, Hacktoberfest encourages participation in giving back to the open source community by completing pull requests, participating in events, and donating to open source projects.
Anyone around the globe who desires to help drive the growth of open source and make positive contributions to an ever-growing community. All backgrounds and skill levels are encouraged to participate. The first 55,000 participants can earn a T-shirt. Learn more – DigitalOcean.
For CircuitPython, issues will soon be tagged for Hacktoberfest. Good First Issues and open issues will both be featured. It is anticipated that the number of CircuitPython issues to work on will be higher this year.
Building battery-free electronic devices with CircuitPython
Computer engineers from Northwestern University and Delft University of Technology (TU Delft) introduces a new platform, BFree, that enables building battery-free electronic devices that run with intermittent, harvested energy.
BFree includes energy-harvesting hardware (the BFree Shield) and a power-failure-resistant version of CircuitPython, one of the most accessible and most used programming languages – Adafruit Blog, GitHub, and article.
October is also Open Hardware Month
October is Open Hardware Month! The Open Source Hardware Association (OSHWA) is providing resources and asking the community to host small, local events in the name of open source hardware. See more – OSHWA.
EuroPython Talks – Edited Videos Coming Online
EuroPython has released the first batch of edited videos of EuroPython 2021, currently all videos of the first day, Wednesday, July 28. More videos will follow in the coming weeks – EuroPython 2021 and YouTube Playlist.
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott streams his work on ARMv8A MMU programming.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
John Park’s CircuitPython Parsec:
Catch all the episodes in the YouTube playlist.
News from around the web!
Playing with the layout of components for the portable CO2+particulate air quality monitor. The phone-sized Pelican Go case is very spacious. Implemented with Adafruit CircuitPython v7.0.0. – Twitter.
I found my GC9A01 (round display) test board already wired up with a QT Py M0 Haxpress and I was able to quickly swap to a QT Py RP2040 and it works great! Also I updated my demos repo for it and CircuitPython 7 – Twitter.
BlueMicro’s PyKey60 Is a 60% Mechanical Keyboard Powered by an RP2040 and CircuitPython. Designed for beginners, this custom programmable keyboard includes per-key RGB LED lighting and hackable firmware – hackster.io.
Build a Mobile Robot using Maker Pi RP2040 and CircuitPython by Idris Zainal Abidin at PyCon Malaysia 2021 – Twitter.
Parallel LCD displays on ESP32-S2 with CircuitPython – Adafruit Blog.
CircuitPython exercises and solution demos for classes. Full solutions will be posted in slides next week. Keynote slides are in the Physical Computing Course Google drive linked at gallaugher.com – Twitter.
Working on Python code and labs that controls the multi-LED lights and fan in a Grow Beyond Earth chamber. The device is based on a Raspberry Pi Pico micro running MicroPython. This will allow kids in the GBE program to hack the controls and add any accessories to the chambers – Twitter.
Decoding 240×240 jpeg files on a ST7789 display with Raspberry Pi Pico and MicroPython – Twitter.
Maker Melissa reviews the book “A Day in Code: Python” aimed at beginners – YouTube.
I work a lot in the Adafruit Feather ecosystem and because of that I always need 12- and 16- pin headers. I designed a snap fixture to make it easy to divide a 40-pin header into 12+16+12. Works great! – Twitter.
3 years ago at Maker Faire New York 2018: Folks gathered for a CircuitPython / Adafruit meet-up. Some fabulous Makers from the community – Twitter.
PyDev of the Week: Tony Roberts – Mouse vs. Python.
Analog Devices has quite a few accelerometers in LGA format, so having a Stemma QT breakout for them will be handy, states Adafruit – Twitter.
If you like Adafruit’s CircuitPython, Alex Lynd and Kody Kinzie are testing adding S2Mini boards based on the ESP32-S2 to the WifiNugget! Easy installation through a web interface, plus it mounts as a USB drive to easily drag & drop your code onto – 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 was one new board 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!
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 335!
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 released CircuitPython 7.0.0 final on Monday, September 20. Thanks to everyone who contributed to and tested the alpha, beta, and RC releases leading up to this final release.
I’m now working on a backlog of HID-related tasks for 7.1.0 or later. I hope to add boot-protocol keyboards. I’m also working on an example of an HID radial controller. The Microsoft Surface Dial is the most well-known such controller.
I added a timestamping feature to key Event objects, so that CircuitPython code can tell when a keypress was registered, even if it’s not reacted to immediately.
I also worked on improving parallel LCD support in the ESP32-S2. My original goal was to get the display of the Espressif HMI Devkit working, but I wasn’t able to reach it. However, there’s a coming enhancement for 8-bit displays that will make them faster than now using the I2S peripheral of the ESP32-S2.
This week CircuitPython 7.0.0 stable was released, which means
rainbowio is now available in a stable release! So, it meant it was time to go through all of the Learn examples and remove any references to
pypixelbuf, as well as all instances of the
wheel() function, and replace them with
rainbowio! There were 72 files modified in the Learn repo, and a further 5 libraries required example updates. It’s exciting for me because
rainbowio was my first core code contribution, so I’m really stoked to see it being used.
This past week, I was out sick for a couple of days, so I didn’t end up getting as much done as usual. I also ended up having to delay the 2.9” eInk guide for a bit that I had worked on because the newer eInk flexible display needed a new driver written for it in CircuitPython and Python. So I ended up writing that and updated the guide. The guide is now live here.
This week I’ve been sucked into Cortex-A land on the Raspberry Pi. My goal is to bring TinyUSB and then CircuitPython to the Raspberry Pi 4s. I’ve got debugging over JTAG working and designed a PCB to make it easy to connect to. I’ll test it when I receive it. I’ve also figured out how to catch crashes and determine the reason. This is huge for debugging and fixing things. I used QEMU running the code too but found it doesn’t mimic alignment checks like the real one does. So, my next step is getting the memory mapping unit (MMU) configured correctly so that strlen will work. At that point, I hope I’ll have debug printing working. If you’ve done Cortex-A programming, then please ping me on Discord. I’d love some more eyes on the code.
PyConZA is the annual gathering of the South African community using and developing the open-source Python programming language. PyConZA is organized by the Python community for the community. PyConZA 2021 will be happening on 7 & 8 October 2021, as an online event – more.
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.
20210925 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.
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
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.