View this email in your browser. Warning: Flashing Imagery
Welcome to the latest Python on Microcontrollers newsletter for February, 22, 2022 or 2-2-22 for those who like numbers.
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:
256 CircuitPython Boards and More
A milestone achieved and passed: 256 boards running CircuitPython. Why celebrate at 256? That’s one more than fits in an 8-bit value (0-255) so we’re celebrating 0b100000000 boards!
Did you know that not all CircuitPython boards are made by Adafruit? Not by a long stretch! SparkFun has fifteen boards, Pimoroni has nine, and so many more. CircuitPython is an open source language which any hardware designer may look to use.
CircuitPython 7.2.0 Release Candidate 0
CircuitPython 7.2.0-rc.0, the initial release candidate for CircuitPython 7.2.0, was posted late last week. It is considered stable, but the CircuitPython team wants to give time for further testing before the final release of 7.2.0 – GitHub.
Notable additions to 7.2.0 since 7.1.1
- 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.
binascii.crc32()
.
vectorio.contains()
.
- Turkish translation.
Make Your Own Standalone Winamp Skinned Music Player
Bring back the good ol’ days of Llama whippin’ fun.
This project will turn your PyPortal into an MP3 player to play your favorite tunes with the familiar Winamp look. Create and manage multiple JSON playlists and rock out to whichever one fits the mood, all done with CircuitPython.
Take it a step further by choosing a custom Winamp skin (from the Winamp Skin Museum) and convert it for use on your PyPortal – Adafruit Learning System.
Adafruit.io WipperSnapper support for the Adafruit Feather Huzzah ESP8266 is here. Over the past few weeks, Melissa worked on a web-based installation tool to upload firmware to an ESP8266 or ESP32. Additionally, this web tool also generates a LittleFS filesystem containing Adafruit IO and WiFi network credentials and uploads them to your ESP32/ESP8266 board – Adafruit Blog.
Universities Teaching RISC-V Poll
RISC-V, a free and open ISA, supports professors and students through events, trainings, lecture resources and mentorships. In order to make universities aware of new and existing resources, the RISC-V Organization would like to know what you teach and who to contact at your university with new resources – Google Poll.
Python Software Foundation News
The Python Software Foundation has funding available for designing, developing and deploying organization accounts in PyPI – PSF Blog.
PyPI is the official repository of Python packages. PyPI allows users to search for packages, publish and distribute packages. The aim of this project is to allow PyPI users to set up an organization account, invite other users to join, organize those users into teams, and manage ownership and permissions across multiple projects. We hope to provide organization accounts as a paid service to companies and complimentary access to community projects. The organization account feature will provide the structure based on which new features can be offered to paying customers.
They hope to hire two contractors who will code, test, review, document and deploy the organization account features. The two contractors include one backend developer and one frontend developer. The solicitation is now open and it closed March 4th.
What is PyPI (pip)?
Fortunately, Real Python just came out with a comprehensive page on pip and PyPI: Using Python’s pip to Manage Your Projects’ Dependencies – Real Python.
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott streams his work on a CircuitPython USB Host API.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
Programming Note: Scott is planning to livestream on February 25th and March 4th before going on paternity leave. Tim (@foamyguy) will be doing deep dives in the same time slot while Scott spends time with his family.
CircuitPython Parsec
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
Zabbix is an open-source monitoring software tool to monitor IT infrastructure such as networks, servers, virtual machines (VMs) and cloud services. Zabbix collects and displays monitoring metrics such as CPU, memory, and network load.
Sterling Anderson has developed a stand alone (no computer required) display for Zabbix data. It uses an Adafruit PyPortal programmed in CircuitPython to fetch data via WiFi and display it on a color LCD display. It is housed in a 3D printed case – GitHub.
News from around the web!
A comment on how embedded Python has made programming easier – Twitter.
PAR Buddy is a DIY PPFD sensor for home growers to use as a guide for adjusting the height of indoor LEDs during a grow season – Reddit and GitHub.
Calculating vector using numpy (ulab module) in CircuitPython to bounce balls at the round edge of the screen – Twitter.
An air quality station with temperature, humidity, and CO₂. Runs on a FeatherS2 Neo with CircuitPython. Metrics are displayed on two 128×128 OLED screens and sent to a Google Cloud Function, saved in BigQuery, and graphed with Data Studio – Twitter.
A little LoRa on my lunch break with the RFM95, RP2040, CircuitPython, and HackRF – Twitter.
A quick little MIDI in demo. An Adafruit QT Py RP2040 is receiving MIDI from the keyboard over a Raspberry Pi host. MIDI message and note number is displayed on the screen – Twitter.
Just a couple lines of code and you have your own CircuitPython-based hardware random number generator (HRNG) with a “poor man serial streaming interface” – Twitter.
A CircuitPython DJ board with audiomixer on a Circuit Playground Bluefruit and MPR121 touch sensor – YouTube and GitHub, via Twitter.
Servo blinking disco ball eyes using RP2040 boards and a PIR sensor. Cute, creepy and simple via CircuitPython – Twitter.
Control DC motor using Maker Drive and CircuitPython on an RP2040 board – Cytron and YouTube, via Twitter.
Major 7th arpeggio but make it Euclidean 1v/oct with a Feather RP2040 and CircuitPython – Twitter and GitHub.
An animation created in MicroPython and Krita for Raspberry Pi Pico and a 128×64 pixel OLED display – Twitter.
An RP2040 multi timer with RGB keys with MicroPython – Adafruit Blog, YouTube, project page and GitHub.
An ESP32 walks into a bar – Jokes web API MicroPython tutorial to learn the network and urequests libraries – Bhavesh Kakwani.
A real life version of Among Us. Built using ESP32s with OLED displays and RFID readers. The software was written in Python and MicroPython, with a centralized server running over WiFi on a Raspberry Pi – hackaday.io via Twitter.
Mypy is a static type checker for Python 3 and Python 2.7. If you sprinkle your code with type annotations, mypy can type check your code and find common bugs – readthedocs and GitHub.
Understanding Linked Lists – Real Python.
PyDev of the Week: Leonardo Giordani on Mouse vs. Python
CircuitPython Weekly Meeting usually on Mondays will be held today (Tuesday) at 2 PM Eastern North American time due to a US holiday.
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Linux Path Cheat Sheet.
Coming Soon
Just launched: Inkplate 6COLOR by eradionica, a versatile, easy-to-use, low power, Wi-Fi-enabled 5.8” e-paper COLOR display. Plug in a USB cable, open MicroPython (or Arduino), and change the display with just a few lines of code – CrowdSupply via 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 are eight new boards:
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!
Party Parrot Zoetrope from Noe and Pedro and Liz Clark
Adafruit ADXL375 from Kattni
Exercise Buddy: Motion aware BLE media controller from Charlyn G
Updated Learn Guides!
Adafruit EyeLights LED Glasses and Driver from Mark Komus
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 345!
New Libraries!
Here’s this week’s new CircuitPython libraries:
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
Last week the CircuitPython team went over the open issues for 7.2.0 and 7.x.x, and did some triage. As of last Thursday, the team has fixed all the remaining 7.2.0 issues, and we are on track for a 7.2.0-rc.0 release.
I did some type annotation infrastructure work, moving circuitpython_typing
out of adafruit-blinka
and into its own library. A few type-annotated libraries then needed their dependencies updated. This was partly prelude for my continuing work on an asyncio-enabled HTTP requests library.
Jeff
I finally got to do some heads-down work on CircuitPython this past week. MicroPython 1.18 was released on January 16, and now there’s a Pull Request to merge it into CircuitPython. It doesn’t bring any big user-visible changes, but we’re always happy when we can keep up with the latest updates and bugfixes to the core. We owe a hearty thanks to the contributors to MicroPython. By my quick count, there were as many as 57 contributors to MicroPython between versions 1.17 and 1.18.
Kattni
This week I published the ADXL375 guide, and updated the VEML7700 guide with the STEMMA QT rev. I got to dip my toes into code a bit with writing the ADXL37x library, and then adding the offsets feature and an example using it to the ADXL34x library. I am working on getting TFT and WiFi examples into the Feather TFT guide, so if you picked one up and have been waiting on these demos, keep an eye out for that update.
I also recorded my episode of the CircuitPython Show Podcast, which will be released on 1 March 2022, if all goes as planned. I had a lot of fun recording it, and got to share my story which I always enjoy doing. If you’re interested in how I got into this whole thing in the first place, check it out!
Melissa
This past week I worked on catching up with issues and pull requests that had been waiting for me on GitHub while I finished up the LittleFS project. One of the issues I found particularly perplexing is that on the 2.7” E-Ink displays in Arduino, it would invert the colors when a reset pin was used. The issue turned out to be a missing init code.
Tim
This week I finished up the PyPortal Winamp Player Learn Guide and recorded a short video introducing it. This guide has some code for the PyPortal as well as some CPython code that runs on your PC. I updated our project files screenshot utility to be able to omit the files used on the PC from the screenshot shown on the Learn Guide Pages. I also created a few basic displayio examples for the Feather TFT ESP32-S2.
Thanks to some help from members of our community in the Discord (Neradoc and anecdata), we have narrowed down an issue with pulling data from a NASA API for the Webb Telescope to something resolved by a newer certificate. Next week, I’ll be looking into how to update the certificates that CircuitPython uses by default.
Scott
This week I’ve been wrapping up the BLE work that I did for ESP32-S3. I added a PacketBuffer test example and a new native CircuitPython BroadcastNet bridge that should be simpler to keep running. The last outstanding PR is to get GATT client support into CircuitPython main. This will allow you to use CP with other devices and their data.
For most of the week, I’ve been diving into using PIO for USB Host. I was perusing the USB 2.0 spec and learning about the various layers. This video is a great video from Ben Eater about the USB encoding. I also got the demo code from https://github.com/sekigon-gonnoc/Pico-PIO-USB working. Now I’m working to integrate it into TinyUSB. I’m starting with timing the start of frame packets and then will integrate the other packets into the frame loop.
Upcoming events!
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@adafruit.com.
Latest releases
CircuitPython’s stable release is 7.1.1 and its unstable release is 7.2.0-rc.0. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20220221 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,812 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
Firmware Engineer – Battery Management – Analog Devices – Adafruit Jobs Board.
33,295 thanks!
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 33,295 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.