View this email in your browser.
Welcome to the latest Python on Microcontrollers newsletter! CircuitPython is getting close to the 8.0.0 release, look for that soon – it comes with some requested features. Make & Digi-Key have partnered on a boards guide and Awesome Feather has been updated with many more boards. The community remains strong: Python has proven to be an excellent way to program microcontrollers (hey, if Arduino sanctions MicroPython, things must be good). – 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 Release Candidate 1 Released!
CircuitPython 8.0.0-rc.1, a release candidate for 8.0.0, has been released. It is stable, and developers are making a release candidate for further testing before final release – Adafruit Blog and Release Page.
NOTE: Since 8.0.0-beta.6, 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.
Notable changes to 8.0.0 since 7.3.0
- Add WiFi workflow with browser-based device discovery, filesystem browsing, upload, download, file editing, serial/REPL connection (available on Espressif and Pi Pico W).
- Add 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. Mu 1.2.0 and Thonny 4.0.x and later are able to suppress status bar information in the REPL output.
settings.toml file in CIRCUITPY provides environment variable values. Some value names are read by CircuitPython to specify WiFi connection parameters, BLE name, and other startup values. But you can also use
settings.toml to specify your own parameters for your programs. Values from
settings.toml can be retrieved using
- WiFi functionality implemented on the Raspberry 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.
collections.deque on most builds.
AnalogIn values are full range from 0 to 65535, instead of having zeros on low-order bits.
- In-place firmware update (
dualbank) capability may be disabled at runtime in favor of a larger CIRCUITPY drive. This is the default.
espulp module, for running programs on the ULP co-processor in Espressif chips.
memorymap module for general though limited access to various memory regions.
- A serial “break” on the USB or UART REPL serial connection will cause a
KeyboardInterrupt, like ctrl-C. The advantage over ctrl-C is that the break interrupts even if the input buffer is full.
hidden property to
- Add native
_pixelmap.PixelMap support, for speed.
- Chained exceptions are now implemented.
memorymap to allow access to raw memory locations (currently only on Espressif).
Digi-Key and Make: Announce New Boards Guide and Companion Augmented Reality App
Digi-Key Electronics and Make: have released an updated Boards Guide and companion Digi-Key AR augmented reality app, available in both the Apple App Store for iOS devices and the Google Play store for Android™-based mobile devices. Divided into sections for microcontroller (MCU), single-board controller (SBC) and field programmable gate array (FPGA)-based boards, the guide helps students, makers and professional engineers identify the latest technology available to help bring innovation to life – Digi-Key and Adafruit Blog.
Awesome Feather Update
A huge update to the Awesome Feather list with new microcontroller boards and FeatherWings. Feel free to post pull requests or issues if things need updating – GitHub.
GitHub: 100 Million Developers and Counting
GitHub posts that there are now officially more than 100 million developers using GitHub to build, maintain, and contribute to software projects. They look a bit at what that means going forward – GitHub and Adafruit Blog.
The State of the Single Board Computer Interface Ecosystem, is it Time to Design a Standard?
Choice when it comes to single board computers – They can be had from well-established brands such as Arduino, Adafruit, or Raspberry Pi, or from a Wild West of cheaper Far Eastern modules. There’s an aspect to these boards which has evolved; certain among them have become de facto interface connector standards for hardware peripherals. Do these standards make any sense? The reason it hasn’t happened yet is probably that there’s been no immediate sales incentive for them to do so – Hackaday.
ESP32 MPY-Jama is a powerful tool which easily connects to Espressif ESP32 microcontrollers with MicroPython, providing an IDE, file manager, REPL, real-time dashboards and advanced features for efficient development on MacOS & Windows – GitHub and Adafruit Blog.
#CircuitPython2023 Wrap Up
Thanks to the community for all the #CircuitPython2023 input! It’s wonderful to see all of the different things that have people’s interest. CircuitPython lead developer Scott Shawcroft shows all the responses posted throughout the internet – 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 Blinka_DisplayIO tests then started implementation of Bitmaptools.
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 this week is on List Filtering – Adafruit Blog and YouTube.
Catch all the episodes in the YouTube playlist.
Project of the Week: A CubeSat using CircuitPython and MicroPython
First and second year engineering students at Harlow College (Harlow, Essex, UK) have been busy designing and building a new CubeSat platform, with the ultimate aim of getting their boards and designs in space, taking photos of the Earth and beaming them back to the classroom.
The CubeSat platform is based around the Raspberry Pi Pico, consisting of three parts to the design: an acquisition board loaded with a camera and various sensors and storage; a master controller board with a radio link; and a ground station containing a radio link and decoder software. All three boards use the Raspberry Pi Pico, and the software is written with a mix of MicroPython and CircuitPython across the three boards – Adafruit Blog.
News from around the web!
How to Run ChatGPT on Raspberry Pi or PC with Python – Tom’s Hardware.
An animated Pacman with Pimoroni Galactic Unicorn and MicroPython – Pimoroni Forums and YouTube.
Raspberry Pi Pico powered prop Is an homage to the movie Die Hard. Essentially the prop is an RFID card reader, an RFID-RC522, connected to the Raspberry Pi Pico’s SPI and I2C GPIO interfaces. Scanning an RFID card triggers the MicroPython code to control a strip of NeoPixels that illuminate an “open” sign – Tom’s Hardware and YouTube.
Earth Moon Model (EMM) is a tabletop digital art project that combines a Raspberry Pi computer with sensors and actuators to create a realistic model of the Earth and the Moon in their orbits, programmed in Python – GitHub via Twitter.
Automatically control a Raspberry Pi fan (and temperature) with Python – howchoo.
Better Buttons with Debouncing, fixing buttons that report multiple presses – YouTube.
Making a lesson for students on Cherokee syllabary with CircuitPython and RP2040 – Twitter.
VisionFive 2 RISC-V SBC – A Raspberry Pi Killer? – YouTube.
Keyboard Builders’ Digest, Issue 112 – Keyboard Builders’ Digest.
circuitpython-upload ia a simple uploader script for the CircuitPython web workflow. Basically, call it with a hostname and password and it’ll compare the local directory with the remote and upload newer files.- GitHub via Mastodon.
Retrofitting an old infinity mirror with programmable LED lights driven by RP2040 and MicroPython – Twitter.
Making controls for an electronic Etch-a-Sketch with a Raspberry Pi Pico and CircuitPython – kyuchumimo.itch.io.
Transparent serial link at 115200 bauds using two HC-12 modules – Twitter.
“Developing with MicroPython for a mobile robot using Thonny would save lot of time not having to compile and flash the microcontroller with each iteration, and the radio link facilitates steering behavior tests.”
Intel kills PathFinder IDE for RISC-V processors – CNX Software.
Comparing tag trends with our Most Loved programming languages – Stack Overflow.
How to Send Emails using Python – Plain Text, adding attachments, HTML Emails, and more – Twitter.
PyDev of the Week: Matthias Kestenholz on Mouse vs Python.
CircuitPython Weekly Meeting for January 30, 2023 (notes) on YouTube.
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? SMARS Mini Robot.
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, but a big batch is about to drop next week!
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
NeXT Bus Mouse to USB HID with CircuitPython from Jeff Epler
Updated Learn Guides!
All of the guides for the displays that have been revised to include an EYESPI connector have been updated with details about EYESPI! Check out the updated guides on the Adafruit Learn System if you’re interested!
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 402!
The New and Updated Libraries sections now include the community-contributed libraries!
Here’s this week’s new CircuitPython libraries:
Here’s this week’s updated CircuitPython libraries:
Library PYPI Weekly Download Statistics
Total Library Stats
- 90827 PyPI downloads over 306 libraries
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 14679
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 13788
- Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1772
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 1715
- Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 1080
- Adafruit CircuitPython MCP230xx (adafruit-circuitpython-mcp230xx): 932
- Adafruit CircuitPython LED Animation (adafruit-circuitpython-led-animation): 863
- Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 748
- Adafruit CircuitPython Pixelbuf (adafruit-circuitpython-pixelbuf): 738
- Adafruit CircuitPython PCA9685 (adafruit-circuitpython-pca9685): 721
What’s the team up to this week?
What is the team up to this week? Let’s check in!
I updated CircuitPython Espressif builds to use the latest v4.4 updates from Espressif for the ESP-IDF SDK. Unfortunately they do not fix our existing I2C or WiFi problems, but it’s good to keep up with the fixes that are available.
Scott, Jeff and I triaged the remaining open issues for 8.0.0 and pushed them to a later 8.x.x release. We have been working on a number of them, and have had difficulty reproducing some. They are not showstoppers. I made the first 8.0.0 Release Candidate releases.
This week was all about EYESPI updates. We’ve revised a number of our displays to have a flex cable connector called an EYESPI connector, that allows you to hook up these displays to your microcontroller without soldering them or using a breadboard. All of the revisions at this time have had their guides updated to explain the connector, show how to plug it in, and indicate what pins are used by that particular display. If you picked up an EYESPI display and want more details, check out the guide for your display!
I worked on catching up with messages and wrapping up some of the code I had been working on previously. This includes fixing some bugs for the CircuitPython Code Editor. I have mostly been focusing on fixing bugs and refactoring some of the code that I intent to reuse in the new CircuitPython Installer that I was working on a couple of weeks ago.
This week I tested out the remaining Ethernet library PRs with improved example, and socket class more closely aligned with CPython. I also started implementing the bitmaptools module for Blinka_Displayio. It will allow code that uses it to be more portable. Intrigued by a question from Discord over the past weekend, I learned how to use the MagTag library in conjunction with the deep sleep / pin alarm wake up functionality and submitted a new example that illustrates it.
I published a guide about converting the NeXT Computers mouse to USB HID with CircuitPython. Check it out on the Adafruit Learning System.
This week I’ve been working on adding 7-color (black, white, red, orange, yellow, green and blue) e-paper display support to CircuitPython. Along the way I’ve also added dither support to the Palette pixel shader for times when the colors aren’t exactly the colors supported by the e-paper display. I’m receiving the 4” and 7” 7-color e-paper displays today and will add support for them as well.
I worked with Kattni to add a page to the display guides that now have EYESPI connectors. She wrote a great template page that explains the connector and shows what pins are broken out to EYESPI for each display.
I currently have a few projects in the works, some collaborations and one solo, that will be published in the coming weeks; all of which are using CircuitPython.
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.
The next MicroPython Meetup in Melbourne will be on February 22nd – Meetup.
Unlock the Power of MicroPython on an Arduino: Join a Live Webinar March 9, 2023 – Elector.
PyCon US 2023 will be April 19-17, 2023, again in Salt Lake City, Utah USA – PyCon US 2023.
Send Your Events In
If you know of virtual events or upcoming events, please let us know via email to cpnews(at)adafruit(dot)com.
CircuitPython’s stable release is 7.3.3 and its unstable release is 8.0.0-rc.1. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20230130 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.0a4.
3,382 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,560 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.