View this email in your browser. Warning: Flashing Imagery
Welcome to the latest Python on Microcontrollers newsletter! October ushers in Hacktoberfest, #ElectronicHalloween, and Open Hardware Month with a flurry of activity. A new beta for CircuitPython is out on the way to a final release. There are new software arrivals and older software retirement. And some very clever projects, events and more. Enjoy this issue.
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.1 Released
Adafruit has released CircuitPython 8.0.0-beta.1, a beta release for 8.0.0. It is relatively stable, but there will be further additions and fixes before the final release – Adafruit Blog.
Notable changes to 8.0.0 since 7.3.0:
- Added WiFi workflow with browser-based device discovery, filesystem browsing, upload, download, file editing, serial/REPL connection.
- Added a one-line status bar, which displays connection status, last exception, and version on a terminal window title or on the top line of an attached display. Support for status bar display is also being added to the Mu and Thonny editors.
.env
file in CIRCUITPY specifies WiFI connection parameters, BLE name, and other startup values.
dotenv
support: os.getenv()
values can be set in the .env
file.
- Preliminary implementation of WiFi on the Pi Pico W.
- Revised Espressif camera support, now available on ESP32, ESP32-S2, and ESP32-S3.
- Bulk analog input:
analogbufio
(available only on RP2040 for now).
- Pin state can be preserved during deep sleep (available only on Espressif for now).
- Allow setting USB VID, PID, manufacturer, and product ids at runtime.
AnalogIn
values are full range from 0 to 65535, instead of having zeros on low-order bits.
OneWire
is only in onewireio
, and is no longer in busio
or bitbangio
.
gamepadshift
has been removed: use keypad.ShiftRegisterKeys
instead.
MP3Decoder
and WaveFile
can now take a filename instead of an open file.
PulseOut
no longer accepts a PWMOut
. Use a Pin
instead.
- Added
TileGrid.contains()
.
i2ctarget.I2CTarget
is the new name for i2cperipheral.I2CPeripheral
. Accept both for now. I2CPeripheral
will be removed in 9.0.0.
- Auto-brightness support in
displayio
and framebufferio
has been removed. It was never implemented completely.
- Restored
rainbowio
and onewireio
to a number of boards.
- Print out whole-number floats exactly and correctly.
- Enabled
collections.deque
on most builds.
Full Release Notes – GitHub.
Hacktoberfest 2022
Hacktoberfest 2022 is here! Whether it’s your first time or not, it’s time to hack out four (or more) pristine open source pull/merge requests. All of October, DigitalOcean sponsors Hacktoberfest – Hacktoberfest.
“The first 40,000 participants (maintainers and contributors) who complete Hacktoberfest can elect to receive one of two prizes: a tree planted in their name or the Hacktoberfest 2022 t-shirt” – Hacktoberfest Participation.
CircuitPython wants your Hacktoberfest contributions! We’ve labeled a number of issues as “hacktoberfest” and the the full list is on circuitpython.org.
USB Simplifies Branding
Every time the USB Implementers Forum posted a new set of logos describing ever more USB speeds, electrical power possibilities, and display parameters, it resulted in an outpouring of confusion, ridicule, and anger — yes, anger. But at long last, the USB-IF has finally made things better, with a simplified set of USB logos!
Instead of forcing consumers to use versioning terminology such as USB 3.2 Gen 2×2 or messing around with marketing terms like “SuperSpeed+,” the USB-IF has simplified things so you can now just write something like “USB 20Gbps.” The version details still exist and have meaning for developers and engineers, but most of the consumer-level branding now boils down to just the following four packaging labels, indicating the maximum supported data rate.
A similar set of logos will appear on cable plugs. As USB data rates and standards’ names became more complicated, the options for charging wattage have been distilled down to just two: 60 watts and 240 watts, with future USB chargers using the new logos – Adafruit Blog and TidBITS.
KiCad Version 6.0.8 Released
The KiCad 6.0.8 stable version contains critical bug fixes and other minor improvements since the previous release. This release contains several critical bug fixes so please consider upgrading as soon as possible – KiCad.org.
It’s Hard to Buy a Raspberry Pi — Why?
A new video by Jeff Geerling on why it’s so hard to buy a Raspberry Pi. “It’s easier to spot the Loch Ness Monster than to get your hands on a Raspberry Pi right now. Is the situation getting any better? Are there any other options?” – YouTube.
Sunsetting the Atom Editor
The Atom editor development team has decided to retire Atom in order to further their commitment to bringing fast and reliable software development to the cloud via Microsoft Visual Studio Code and GitHub Codespaces.
They have announced they are sunsetting Atom and will archive all projects under the organization on December 15, 2022 – GitHub Blog and Repository.
October Can Only Mean One Thing: #ElectronicHalloween
It is time to kick off another spooktacular Electronic Halloween!
We want to see your creepy costumes, deathly decorations and preternatural props. Tag them in social media with #ElectronicHalloween – Adafruit Blog.
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 streamed work on a CircuitPython Library example screenshotter issue.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
CircuitPython Parsec
John Park’s CircuitPython Parsec this week is on USB Brightness Control – Adafruit Blog and YouTube.
Catch all the episodes in the YouTube playlist.
The CircuitPython Show
The CircuitPython Show is an independent podcast hosted by Paul Cutler, focusing on the people doing awesome things with CircuitPython. Each episode features Paul in conversation with a guest for a short interview – CircuitPythonShow and Twitter.
The latest episode was released Monday, October 3rd and features Bradán Lane. Bradán shares how CircuitPython has helped create his products, including the JoyPad and LumosRing – Show List.
Project of the Week: Turn your houseplant into a pet
Fytó is a project by CodersCafeTech which incorporates Raspberry Pi Zero and sensors to turn your basic houseplant into a pet. Fytó can show six different emotions based on its interpretation of three sensors measuring soil moisture, temperature, and light levels. It uses a Raspberry Pi Zero 2 W running Python with the Adafruit Blinka compatibility software, allowing use of CircuitPython code – Raspberry Pi and YouTube.
News from around the web!
RADS: Redundant Array of mDNS http Servers with CircuitPython 8 beta 0 on Adafruit QT Py ESP32-S2 – GitHub.
The JägerMachine is an IoT shot pouring machine powered by a Raspberry Pi 3B+. It features a full GUI that allows the user to configure the device, pour a shot, and also check previous messages sent to the machine. Once paired with it’s own GMail account, the JägerMachine waits for emails containing a secret user defined subject line and a custom message that gets displayed on the screen. Once an email is received a shot is poured. It uses Adafruit Blinka allowing use of CircuitPython libraries – GitLab.
Using Circuit Playground Express and CircuitPython to randomly choose the dinner menu – Twitter.
Nabaztag Rabbit Robot Bunny Upgrade with Raspberry Pi Zero W and Python – Twitter.
An Artemis launch hoodie with NeoPixels, an Adafruit ItsyBitsy and CircuitPython – Twitter.
A follow-on to last week’s Project of the Week, John hooks a modern rectangular color display to a Raspberry Pi for the display and processor for the Tandy Radio Shack Model 100 portable upgrade – Twitter.
A clock prototype with a NeoPixel ring, a Raspberry Pi Pico and CircuitPython – Twitter.
MidiCommander for Adafruit PyGamer and CircuitPython, a portable patch library – ChromaKinetics, GitHub and YouTube.
Vintage NEC ProSpeed 286 computer revived with Raspberry Pi – hackster.io and Adafruit Blog.
A Raspberry Pi Pico W based Halloween countdown widget with MicroPython – Twitter.
Bouncing LEDs with Raspberry Pi Pico and MicroPython, BASIC and Arduino – Twitter and GitHub.
A random caps lock activator iS pAssIVe AGRessiVE WRitING In CIRCuItpYtHON, MADE WITh A QT pY m0 – Twitter and GitHub.
Trying out the KMK firmware, I modified the Pimoroni Keybow board code for the Raspberry Pi Pico pinout and it works – Twitter.
Use a Rasberry Pi Pico W, a Pimoroni Display Pack 2.0, and a simple 3d printable model to make a Pomorodo timer robot – YouTube and Twitter.
GPS Tracker using the AVR-IoT cellular mini and Adafruit FeatherWing GPS and a Python web based server – Instructables.
Simulating Fireflies With CircuitPython – Woolsey Workshop.
How Can You Install a Pre-Release Version of Python? – Real Python.
PyDev of the Week: Mark Mikofski on Mouse vs Python
CircuitPython Weekly Meeting for October 3rd, 2022 (notes) on YouTube
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Python 3.14 Will be Faster than C++.
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:
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!
Tandy 1000 Keyboard to USB with CircuitPython from Jeff Epler
Adafruit ENS160 MOX Gas Sensor from Liz Clark
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 372!
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
During the past week, I improved the status bar code a bit, making it less likely that partial status bar codes will be output to the REPL. But it may need further work.
I also figured out why CircuitPython on the ESP32 was consuming more power during deep sleep than Arduino. The “pin holding” mechanism in ESP32, which allows setting pin levels during deep sleep, itself consumes extra current when enabled. I now turn it on only when necessary, and the power consumption levels are as expected.
Kattni
This week I finished updating the Quad Alphanumeric Backpack guide section with the STEMMA QT revision. It now has info about both the original and the new version, including a brand new 14-segment example.
Next up, I’m heading back into the LTR-329 and LTR-303 guide. That should be finished up this week. If you picked up one off these nice little breakouts, keep an eye out for this guide!
Melissa
This past week I’ve mostly focused on the Code Editor. I added USB Workflow and improved the BLE workflow as well as some bug fixes and UI improvements. There’s still a little bit more to do, but it’s coming along nicely. I also spent a little time helping Brent get the WipperSnapper LittleFS partitioning working again, which broke due to recent a Board Support Package update.
Tim
This week I tested and reviewed a PR with refactored BME280 driver that allows us to cut down on repeated code. I completed some additional testing and fixes for the mpy filesize actions task. During the Deep Dive, I tested and showed off a new community library that provides some neat new functionality with displayio.Palette. It makes it easy to set several similar colors to all be transparent, without any need to manually manually manipulate the palette order within BMP files.
Jeff
I split this past week between a Learn project, version 8 bugfixes, and work on the Pico W.
The Learn project is another vintage keyboard to USB converter. This time, it was the Tandy 1000 keyboard. The keyboard uses a clocked serial protocol, which can be captured and decoded by the PIO peripheral of the Adafruit QT Py RP2040. Check out the guide! I was keen to publish this guide in September, which is known in the retrocomputing community as the month of “#SepTandy”.
I grabbed and fixed a couple of reported issues in the core, bringing us closer to the next 8.0.0 beta release. Most notably, I upgraded ulab to version 5.1.1, bringing in a number of good bug-fixes and improvements.
Finally, Pico W. I really appreciated the community feedback about this work on the GitHub issue and pull request, as well as on Discord! I identified and fixed one major bug, which meant sockets stopped working after 8 sockets were opened, and marked the Pull Request as ready for review. With any luck, this will be part of the next version 8 beta, and we can get feedback from a wider range of users.
Liz
This week I worked on a new product guide for the ENS160 MOX Gas Sensor and a guide to bring the CLUE Sensor Plotter project into PyLeap. The CLUE Sensor Plotter was originally a guide by Kevin Walters and I added the code files to be pulled into PyLeap.
Upcoming events!
The next MicroPython Meetup in Melbourne will be on October 28th – Meetup. See the slides of the September 28th meeting.
October is Open Hardware Month! OSHWA kicks it off October 3rd Open Hardware Ask Me Anything (AMA) with Alicia Gibb at 11:00 am – 12:00 pm MDT US time – OSHWA.
After two years in remote mode, Hackaday is very excited to announce that this year’s Hackaday Supercon will be coming back, live! Nov. 4th, 5th, and 6th in sunny Pasadena, CA for three days of hacks, talks, and socializing with the Hackaday community – Call for proposals and Hackaday.
RISC-V Global Summit, December 12-15, 2022 San Jose, California US – Linux Foundation, YouTube via Twitter.
PyCon US 2023 will be April 19-17, 2023, again in Salt Lake City, Utah US – 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.
Latest releases
CircuitPython’s stable release is 7.3.3 and its unstable release is 8.0.0-beta.1. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20221003 is the latest CircuitPython library bundle.
v1.19.1 is the latest MicroPython release. Documentation for it is here.
3.10.7 is the latest Python release. The latest pre-release version is 3.11.0rc2.
3,188 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
Help miniaturization of existing medical technology – NoBoK – Adafruit Jobs Board.
35,600 thanks!
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 35,600 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.