View this email in your browser.
Welcome to the latest Python on Microcontrollers newsletter! There is more news about Raspberry Pi while CircuitPython and MicroPython continue to do heavy lifting in making microcontroller projects easier to implement.
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:
500 Adafruit Projects Have Been Certified as Open Source by OSHWA
Adafruit is an Open Source Hardware and Software company. To that end, Adafruit has been working to submit many of their boards for certification by the Open Source Hardware Association. According to OSHWA:
The certification program exists to make it easy for creators and users to identify hardware that follows the community definition of open source hardware maintained by OSHWA. Hardware projects that display the certification logo are licensed and documented in a way that makes it easy for users to use and build upon them.
On February 7th, Adafruit hit the milestone of 500 certified projects and was the first to reach this number. By registering their boards with OSHWA, Adafruit aims to ensure users that the products they sell are open-source, and easy to learn about.
Adafruit extends a special thank you to everyone who made this possible, but especially the wonderful folks over at OSHWA who set all this up and were incredibly helpful throughout this process. Additionally, Adafruit thanks the community that keeps this all going and encourages them to publish, share, and more! – Adafruit Blog.
CircuitPython 7.2.0 Alpha 2 Released
CircuitPython 7.2.0-alpha.2 was released this week. It is the second published alpha release for CircuitPython 7.2.0. It is relatively stable, but there will be further additions and fixes before final release – GitHub.
Notable additions to 7.2.0 since 7.1.0
- Continuing work on Raspberry Pi Broadcom board support.
- Espressif ESP32-S3 and ESP32-C3 support, including BLE.
- RP2040 PIO sideset support.
board.STEMMA_I2C() available on all boards with STEMMA connectors.
Raspberry Pi Beta Tests Network Install of Raspberry Pi OS
Until recently, another computer has been needed to run Raspberry Pi Imager, or to run something similar, to flash an operating system onto an SD card when you get a new Raspberry Pi. But how do you get the operating system onto an SD card if you don’t have another computer in the first place?
There is now a beta version of the Raspberry Pi bootloader that implements network installation. The new Network Install feature can be used to start the Raspberry Pi Imager application directly on a Raspberry Pi 4, or a Raspberry Pi 400, by downloading it from the internet using an Ethernet cable. The Raspberry Pi Imager application, which runs in memory on a Raspberry Pi, can then be used to flash the operating system onto a blank SD Card or USB disk – Raspberry Pi.
Raspberry Pi OS 32-bit vs. 64-bit Benchmarks
Raspberry Pi OS 32-bit vs. 64-bit Benchmarks have been compiled. Most operations benefit from 64-bit software use. The best speedup is performing the Sysbench CPU test, a 1,380% speedup. Overall using the 64-bit operating system gave a 48% faster response overall – OpenBenchmarking.org.
The Pi Cast Celebrates 10 Years of Raspberry Pi: New Episodes With Ladyada, Eben Upton, and More
The Pi Cast Celebrates 10 Years of Raspberry Pi: New Episodes With Ladyada, Eben Upton, and others. Adafruit’s Limor Fried will be on a livecast today February 15, 2022 2:30 PM US Eastern, 7:30 pm UTC – more on Tom’s Hardware and YouTube.
Sensor Watch on Crowd Supply is CircuitPython Compatible
Sensor Watch is a Microchip SAM L22 based board driving a watch LCD. It’s designed to fit into a vintage Casio watch body. It has connections for sensors to make it versatile. And a design goal is ultra-long battery life – months at a time between charges – Crowdsupply.
A thread where developer Joey Castillo discusses getting CircuitPython working – Twitter.
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott streams his work on ESP32-S3 Bluetooth BLE and USB Host.
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.
The CircuitPython Show
The CircuitPython Show is a new independent podcast, hosted by Paul Cutler, focused 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.
Listen to the Season 1 Trailer now – CircuitPython Show
The first episode is scheduled to air on March 1st and will feature an interview with Kattni
Rembor as the first guest.
Project of the Week
Playing multiple wav file sound samples with CircuitPython on a Raspberry Pi Pico – Twitter.
Every measure, the code randomly chooses a new WAV (a slice of the famous “amen break”). The WAVs are different lengths and can loop, thus can overlap. But that’s ok, since CircuitPython has an “AudioMixer” object you can feed multiple WAV players into.
Description – Twitter and code – GitHub.
News from around the web!
A Subaru backup alarm custom sound hack with Seeed Xiao and CircuitPython – Hackaday.io via Twitter.
Creating sprite sheets for simulated 7-segment-esque display graphics in CircuitPython on an Adafruit Titano – Twitter.
makeflop.py: simple file operations for a FAT12 floppy disk image in Python. This fork of makeflop.py is modified to favor filling up side-1 of a disk image before side-2, allowing the creation of Atari ST disk images where the files can be separated for use by single and double sided drives – GitHub.
I repaired this busted DIY Edges module and now I have four lovely chiptune voices to play. Extra gate and mod triggers coming from Todbot Trinket Trigger module running CircuitPython on an Adafruit Trinket M0 – Twitter.
A refactored motor controller/power monitor PCB is working nicely in the brushed DC motor tester apparatus – one for the test motor and one for the dynamic brake motor. Watching power dissipation with the thermal cam. The tester also measures torque and RPM. Coded in CircuitPython – Twitter.
dcelectr was inspired and put together a simple (single copper layer) PCB design for anyone who wants to make a MIDI over UART adapter for use with the Oskitone Scout Synth (see the Blitz City DIY video), Arduino ProMini, Pro328, etc. The design allows you to install DIN-5 or 3.5mm jack – Twitter.
A CircuitPython-based Macropad featured on Adafruit’s Show and Tell – Andrew Ferguson, YouTube at 22:24, and Adafruit Blog.
Testing movement of an Adafruit ICM-20948 accelerometer with a round color display and CircuitPython – Twitter.
I decided to add a way to tell what the battery voltage is, so I cut into my UBEC and soldered a wire to grab the battery V+, created a quick voltage divider, and connected to an analog pin (measured with CircuitPython) and now I can tell the voltage. Also needed to upgrade to an ItsyBitsy for more pins – Twitter.
Connecting M5Stack sensors with a board that runs CircuitPython via I2C – Twitter.
Driving plant grow lighting strips with a Raspberry Pi Pico and MicroPython – Twitter Thread.
Designing a DAC for MicroPython – YouTube.
Secrets of MicroPython: How to read a keypad passcode – Bhavesh Kakwani.
A Raspberry Pi Pico microcontroller sending data to ThingSpeak using a GSM module with MicroPython – Twitter.
Defining Python Functions With Optional Arguments [Video] – Real Python via Twitter.
ASCIIFlow – draw ASCII diagrams in your browser – asciiflow.com and Adafruit Blog.
A Linux Path Cheatsheet – Twitter.
PyDev of the Week: Roman Right from Mouse vs Python
CircuitPython Weekly Meeting for February 14th, 2022 on YouTube and notes
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Tom’s Hardware Best RP2040 Boards 2022.
Bradán Lane is making a round LED clock, routed in KiCad. PCB is only 125mm square with 240 LEDs making up the circle and another 70 making up the two 5×7 arrays. The arrays could be for a clock date or game player score, or even letters. It uses CircuitPython on a QtPy ESP32-S2 and a Lolin S2 mini – Twitter.
See details on the coding of the NeoPixels in CircuitPython – Twitter Thread.
Ladyada churned through a big pile of testers and new designs this last week: two IPS TFT displays with EYESPI connectors, the VL53L4CD time-of-flight sensor, the ESP32 QT Py, an OV2640/OV5640 camera breakout, and the ESP32-C3 QT Py – YouTube.
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 nearly ready.
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!
Rotary Phone Dial Keypad from John Park
Three Button Foot Switch from Noe and Pedro
PB Gherkin 30% keyboard with KMK, CircuitPython, & KB2040 from Eva Herrada
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 344!
Here’s this week’s new CircuitPython libraries:
This week’s updated libraries are too many to list!
What’s the team up to this week?
What is the team up to this week? Let’s check in!
I am continuing to look at asyncio support for HTTP clients (and potentially servers). I have looked at several async HTTP client libraries. Most have quite similar API’s. I am leaning toward writing a simple one that does not mimic one of these exactly, but is still very similar.
For another small project, mentioned last week, I wrote a simple HTTP server library that runs on CircuitPython and also on CPython.
I released CircuitPython 7.2.0-alpha.2, which has nearly two months of changes.
I continued work on floppy disks, but now I’m truly getting close to wrapping things up. I’ll take a little breather before bringing the latest changes into CircuitPython. What I spent the last week working on was using the RP2040’s PIO peripheral to accurately capture & generate the flux waveforms that define how data is stored on floppies. Using CircuitPython, it was very easy to test & refine the portion of the software that runs on the PIO mini-CPUs inside the RP2040; much harder, by contrast, was making it all work within the Arduino environment.
This week I updated the 0.56” LED backpack guide with the new STEMMA QT rev, as well as the MCP4725 guide for the same. I’m now working on the guide for the ADXL375, a new accelerometer we added to the shop recently. It needed a CircuitPython library which I wrote up and will use in the guide. Keep an eye out for that!
This past week, I finally worked the last of the bugs out of the LittleFS port. This was packaged up as part of the WipperSnapper Firmware Uploader, which will generate a LittleFS image with a
secrets.json file on it and flash the image right onto either an ESP32 or ESP8266. Currently WipperSnapper isn’t live for the ESP8266, so other than flashing everything onto it, you can’t currently do anything with it, but soon many Feather Huzzah ESP8266 boards will be able to easily be flashed with and configured without needing to write a single line of code.
I have been working on going through all of the open library PRs to review and test them or ping authors as needed. A cool one from this week was a new motion sensing feature for the VC0706 camera device. I had not ever used cameras with CircuitPython before so it was neat to get it set up and learn how to snap photos from it. The motion sensing could be useful as a primitive security camera type setup, only saving photos when motion is sensed in order to maximize the available storage space.
This week I also wrapped up the code for the PyPortal Winamp player project and have started writing the guide pages for it. Part of that process was generalizing a ScrollingLabel widget that I initially coded for this project and getting it prepared to share in the Display Text library. The new version was recently published with this new displayio ScrollingLabel widget. The Winamp player project will use it, but it can now also be used by anyone else for other projects as well.
This week I’ve been working to wrap up BLE GATT client support on the ESP32-S3. As I said last week, I’ve been somewhat stuck on this, so I’m going to wrap up my pending work and then dig into USB Host support in CircuitPython on the RP2040. sekigon-gonnoc on GitHub has figured out how to use PIO for USB Host which could make the RP2040 a neat USB bridge device.
I’ve wanted to start learning USB host to add support to the Broadcom port at some point too. This will be a chance to learn it in a simpler system.
The next MicroPython Meetup in Melbourne will be on February 23rd – Meetup. See info and the slides of the February 2nd meeting.
PyCon US 2022 planning is underway. The team is planning to host the event in person with an online component. April 27, 2022 – May 5, 2022. Head over to the PyCon US 2022 website for details about the conference and more information about the sponsorship program – PyCon Blog.
PyCon Italia is the Italian conference on Python. Organised 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.1.1 and its unstable release is 7.2.0-alpha.2. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20220214 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.0a5.
2,806 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
Manufacturing Assistant, multiple openings – Evil Mad Scientist Labs – Adafruit Jobs Board.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 33,186 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.