View this email in your browser. Warning: Flashing Imagery
Welcome to the latest Python on Microcontrollers newsletter! We’re almost to a new year! Lots of content this week. Plus see my editorial note below. Thank you for your subscription! – Ed.
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:
CircuitPython 8.0.0 Beta 6 Released
CircuitPython 8.0.0-beta.6 has been released. It is relatively stable, but there will be further additions, fixes, and changes before final release.
NOTE: The file for specifying startup values for WiFi, etc. is now called settings.toml instead of .env, and uses slightly different syntax. Use double quotes instead of single quotes. Further documentation is here – Adafruit Blog and GitHub.
TinyUSB Adds BitBang USB Host Support for Raspberry Pi RP2040
Many microcontrollers have USB device support but few have USB host support. This week, Adafruit and TinyUSB announced that USB host support has been added to the Raspberry Pi RP2040 microcontroller. Host support uses the RP2040 PIO (programmable input/output) peripheral to implement a host USB peripheral on a set of GPIO pins. The regular USB peripheral connection still works as before. Currently host CDC (serial) and MSC (mass storage) are supported. RP2040 USB host support is limited to Arduino at the moment but hopefully Python support will be forthcoming – Adafruit Blog, YouTube and GitHub.
Coming Up: CircuitPython 2023
The annual wrap-up and wish list for CircuitPython is coming soon. Follow the Adafruit Blog for a post from CircuitPython lead developer Scott Shawcroft.
Raspberry Pi 5 Not Launching Until After 2023
Raspberry Pi CEO Eben Upton has stated the supply chain shortage has impacted the normal cadence of Raspberry Pi releases. According to Upton in an interview with Christopher Barnatt from Explaining Computers, it means we sadly won’t be seeing a Raspberry Pi 5 in 2023 – Tom’s Hardware.
Eben Upton interview: Raspberry Pi availability and more
Eben Upton was interviewed by Chris Barnatt this week. Thee Raspberry Pi CEO discussed Raspberry Pi availability and more – Adafruit Blog and YouTube.
ESP32 GitHub Updates Over the Air with MicroPython and uGit
ugit allows one to keep your remote ESP32 devices in sync with a GitHub repository. Clone an entire MicroPython repository to an internet enabled MicroPython microcontroller. You can use it to periodically update the entire ESP32 MicroPython file structure to match an open GitHub repository – Adafruit Blog, GitHub, YouTube and Hackaday.
Another file sync program for MicroPython is MPBridge, a command line tool for Windows, macOS, Linux and FreeBSD – GitHub.
Thank You, Readers
Thank you to all our readers for a wonderful year! I set the goal of over 10,000 subscribers a week, a number we surpassed a few weeks ago. I look to find some of the best information on using Python on microcontrollers and single board computers (SBC) each week. The industry is thriving, so filling a weekly newsletter is easier than ever. 2023 looks especially bright with advances in RISC-V, the chip shortages appear to be easing and the proliferation of open source software. I look forward to seeing what’s next – Anne Barela, Editor
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 is off for the holidays.
You can see past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
John Park’s CircuitPython Parsec this week is off so John and Lars can enjoy the holidays.
Catch all the episodes in the YouTube playlist.
Project of the Week: Remote Articulated Hand
Using a sensing glove to control a robotic hand over Bluetooth. Uses Adafruit flexible sensors to detect the finger movement. Programmed in MicroPython – Twitter.
Hand robot ESP32 to BLE Central and Dataglove ESP32 to BLE Peripheral. It connects with Bluetooth and sends finger data from the data glove to move the robot’s servo. Once you understand it, you can communicate with BLE more easily than WiFi.
News from around the web!
Top ten RISC-V articles in 2022 – eeNews.
Having a Happy Hannukah with a CircuitPython Menorah – Adafruit Blog and YouTube.
Another 100 or so NeoPixels around my window and tiny tree. All running CircuitPython on RP2040 controllers – Twitter.
Pioneers in Open Source: Kevin Gates, creator of Arduboy – Adafruit Blog and YouTube.
A 3D printed balloon with wireless lighting. The animations are written in CircuitPython running on a Xiao ESP32-C3. It uses the Adafruit web-workflow IDE to program it remotely, playing with different patterns and effects without reconnecting it – Mastodon.
A review of CircuitPython on the Xiao ESP32-C3 board and how to setup CircuitPython step by step – YouTube (Spanish) via Twitter.
Learn how to connect and read a button to control an LED on a Raspberry Pi using various programming languages and libraries – Woolsey Workshop.
A Raspberry Pi Pico pinout function – Twitter.
First blinks with CircuitPython, thanks to @todbot and @Anneb for inspiration! This is super great for teaching! – Mastodon.
Building the Ultimate Robot against rebellious cats, with Raspberry Pi Zero W and Python – YouTube.
Low-cost smart gas metering with firmware in MicroPython – Twitter.
I’ve been sick (not Covid) but now my partner has Covid for the 1st time ever! We are isolating in separate rooms. To connect us, I made wireless messaging mood lamps with NeoPixels, a Raspberry Pi Pico W, and MicroPython. We can subtly say hi to one another using WiFi and MQTT – Twitter.
Merlot, an open-source hardware tri-color wireless E-paper display programmable with Arduino, MicroPython, or the ESP-IDF framework – CNX Software.
GitHub has a web-based VSCode editor built-in. Just change the URL from http://github.com to http://github.dev (or http://github1.com) and the repo you’re in opens right up in the VS Code editor in your browser – GitHub via Twitter.
Teletext Recovery with Python – Andrew Nile.
Upgrading the Chumby 8 Linux kernel – Adafruit Blog, Hackaday, and Doug Brown.
Programming as play – Austin Henley.
How to Automatically Send Whatsapp Messages using Python – morioh.com.
Converting Video To Audio Without Internet Using Python – morioh.com.
Boring Python: code quality – James Bennett.
PyDev of the Week: Robert Smallshire on Mouse vs Python
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Raspberry Pi Handbook 2023.
Pimoroni Inky Frame 4.0” – a neat, petite Raspberry Pi Pico W-powered E-Ink display with WiFi – Pimoroni.
Banana BPI-Bit-S2 BBC micro:bit compatible board supports WiFi. The BPI-Bit-S2 board supports Webduino (Blocky) to develop programs in a web browser using a visual editor, as well as MicroPython, CircuitPython, and the Arduino IDE – CNX Software.
MinCab v3 has been released. It is billed as the smallest carrier board for Raspberry Pi with Serial and SD-card ports on board. Access and configure a Raspberry Pi CM4 even from your phone, even if the board has no WiFi. It’s open source and on GitHub – 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 were thirteen new boards 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!
Scrolling Countdown Timer from Kattni Rembor
NeoPixel Sprite Weather Display from Liz Clark
Updated Learn Guides!
Pico W HTTP Server with CircuitPython from Liz Clark
NeXT Computer Keyboard to USB HID with CircuitPython from Jeff Epler
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 357!
Here’s this week’s updated CircuitPython libraries:
Updated Community Libraries
Library PyPI Weekly Download Stats
Total Library Stats
- 93431 PyPI downloads over 306 libraries
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 16668
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 14852
- Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 1260
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 1193
- Adafruit CircuitPython MCP230xx (adafruit-circuitpython-mcp230xx): 931
- Adafruit CircuitPython BMP280 (adafruit-circuitpython-bmp280): 835
- Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 657
- Adafruit CircuitPython PCA9685 (adafruit-circuitpython-pca9685): 654
- Adafruit CircuitPython ESP32SPI (adafruit-circuitpython-esp32spi): 605
- Adafruit CircuitPython framebuf (adafruit-circuitpython-framebuf): 558
What’s the team up to this week?
What is the team up to this week? Let’s check in!
I released CircuitPython 8.0.0-beta.6 on Wednesday 12/21. This release includes the change from .env to settings.toml, and a rework of the coprocessor API, more specialized for the Espressif ULP (ultra low power) RISC-V coprocessor.
I fixed several miscellaneous problems for this release, including a crash only when running debug builds on Cortex-M4. That turned out to be an obscure compiler-related issue: tracking it down involved looking at the generated assembly code. I discovered I had fixed more or less the same problem five years ago (!), but it reappeared.
We now have only five or six remaining issues to resolve for CircuitPython 8.0.0 final. I’m looking forward to seeing 8.0.0 in general release.
This week I published the Scrolling Countdown Timer guide. This was a collaboration with Liz and Noe. It walks you through building a scrolling event countdown timer using three quad alphanumeric backpacks with displays, a QT Py ESP32-S2, and a 3D printed stand. The guide focuses on the countdown to Christmas, but you can easily edit the code to countdown to anything! Check it out!
As 2022 comes to an end, I want to say thank you to everyone in our community, to the folks who read my guides, and to all who contribute to the CircuitPython project in all ways, big and small. Code + Community = CircuitPython. Without our community, CircuitPython wouldn’t be close to what it is. I greatly appreciate all of you. Have a wonderful holiday or time off, and a wonderful start to 2023!
This past week I worked on adding some finishing touches to code.circuitpython.org. Due to the holidays, the changes likely won’t be merged in until the beginning of next year because the person I would like to take a look is taking time off. In the mean time, I plan to turn my focus to the main circuitpython.org website.
This week I tested and reviewed various library PRs. Including some to add multi-handler functionality to Logger objects and a new example for outputting logs to Adafruit.io via MQTT connection. This can provide some helpful troubleshooting output for IoT devices that are inconvenient to plug in for serial debugging.
I’ve been on a lighter schedule for the holidays, but I did update the NeXT keyboard guide to add support for the NeXT mouse, which can be daisy chained through the keyboard. Check out the updated guide.
This week I worked on the NeoPixel Sprite Weather Display project. It uses a QT Py ESP32-S2 with a 5×5 NeoPixel Grid BFF to display weather sprites and scroll text to display the current temperature. It uses the Open-Meteo API to grab weather data. I wanted to do a project with this API since it is open-source and doesn’t require an API key.
I will be out for the next two weeks to recharge for the new year. I’m looking forward to working on and sharing more awesome projects in 2023!
The next MicroPython Meetup in Melbourne will be on January 25th – Meetup. Slides from the October meeting are here.
FOSDEM is a free event for software developers to meet, share ideas and collaborate. Every year, thousands of developers of free and open source software from all over the world gather at the event in Brussels. February 4-5, 2023 in Brussels, Belgium – Fosdem.
PyCon US 2023 will be April 19-17, 2023, again in Salt Lake City, Utah USA – PyCon US 2023.
Send Your Events In
As for other events, with the COVID pandemic, most in-person events are postponed or held online. If you know of virtual events or upcoming events, please let us know on Twitter with hashtag #CircuitPython or email to cpnews(at)adafruit(dot)com.
CircuitPython’s stable release is 7.3.3 and its unstable release is 8.0.0 Beta 6. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20221227 is the latest CircuitPython library bundle.
v1.19.1 is the latest MicroPython release. Documentation for it is here.
3.11.1 is the latest Python release. The latest pre-release version is 3.12.0a3.
3,342 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.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 36,224 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.