If you missed Tuesday’s Python on Microcontrollers Newsletter, here is the ICYMI (in case you missed it) version.
To never miss another issue, subscribe now! – You’ll get one terrific newsletter each Tuesday (which is out before this post). 9,733 subscribers worldwide!
The next newsletter goes out in a week and being subscribed the best way to keep up with all things Python for hardware. No spam, no selling lists, leave any time.
Welcome to the latest Python on Microcontrollers newsletter!
CircuitPython 7.3.3 is Released
Notable changes to 7.3.3 since 7.3.2
- Adafruit MatrixPortal: Turn off
ulabto allow freezing
adafruit_portalbase, to create more available RAM.
usb_hid.get_last_received_report()when no report is available or the last report has already been read.
- Don’t reload or enter REPL when autoreloading.
_bleio.PacketBufferhandling of fixed-length characteristics.
- Update frozen libraries.
- Build macOS
mpy-crossexecutables with macOS 11.
Adafruit Adding CircuitPython Support for Raspberry Pi Pico W
The firmware UF2 for the Raspberry Pi Pico W LOOKS simple enough… on boot it blinks the onboard LED 3 times and then boots into CircuitPython 8. But, looks can be deceiving! The LED on the Pico W is not connected to a GPIO on the RP2040. It’s connected to a GPIO on the WiFi/BLE module! That blinking means that the bootloader is able to load firmware and communicate with the module in the CircuitPython firmware, an important first step to implementing the rest of the wireless stack. Soon CircuitPython and hundreds of libraries and IoT examples will be ready to run on the Pico W – Adafruit Blog, YouTube and Twitter.
Breaking: mapseflaps on CircuitPython
From the Editor
It’s been a week. The United States Labor Day weekend ushers the beginning of Fall/Autumn. A new batch of students will be introduced to both Python and hardware. And different launch times and trajectories were calculated for the NASA Artemis I mission using Python modeling. Hopefully makers had an extra holiday day to work on projects involving Python on hardware. If you did, tag your efforts with #CircuitPython, #MicroPython or #Python on social media.
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 CircuitPython Flip Clock displayio Widget Development.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – 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 September 5th and features Radomir Dopieralski. Radomir shares growing up behind the Iron Curtain, gaming on CircuitPython and robots – Show List.
Project of the Week: A CircuitPython Implementation of Conway’s Game of Life
A CircuitPython implementation of the famous ‘Conway’s Game of Life’. It uses Adafruit’s
adafruit_st7735r library to draw the game on a 128×160 pixel color TFT LCD and a Raspberry Pi Pico – GitHub.
News from around the web!
A small Raspberry Pi Pico stream deck with CircuitPython and 3D printing – Twitter.
An Amiga 600 Keyboard USB Adapter with Raspberry Pi Pico and CircuitPython – GitHub.
ESP32-S3-N16R8 build and flash CircuitPython firmware – Timon Peng.
A “Pi Pico Clone” using an RP2040, USB-C, NeoPixel, buttons, and 4 or 16Mb Flash – Twitter.
A silent doorbell controlled by HTTP. Goal: Have a silent way to ask to come in the studio in case a shoot is happening. Uses two Raspberry Pi Pico W with MicroPython – Twitter.
“This weekend I’ve been working on CyberDog – which will be an RGB LED controllable dog coat using the Pimoroni Plasma 2040 & Raspberry Pi Pico W. Archie is modelling it here” – Twitter.
MicroPython LittleFS V2: Directory to .uf2 for Raspberry Pico W only – GitHub.
Using SparkyLinux and MicroPython together – Twitter.
WiFi in the Woods: How to build a captive portal with MicroPython and Phew! – YouTube.
Python Resources for Everybody: a collection of Python learning resources – LearnByExample.
Introduction to the RP2040 and its Real World Uses Webinar – Element14.
Using Python to vectorize artwork for PCBs – thea.codes.
Making a Pimoroni HyperPixel display based clock in Python – Twitter.
Basic Pitch: provide a compatible audio file and basic-pitch will generate a MIDI file, complete with pitch bends. Basic pitch is instrument-agnostic and supports polyphonic instruments, so you can freely enjoy transcription of all your music, no matter what instrument is used. Written in Python – GitHub.
Python Libraries and Frameworks graphic – Twitter.
Every Linux command I know a-z chart – Twitter.
PyDev of the Week: Wolf Vollprecht from Mouse vs. Python.
CircuitPython Weekly Meeting for this week is delayed a day due to the US Labor Day holiday.
Andrew Hutchings writes “Due to my blog posts about JTAG programming from a Raspberry Pi are quite popular, I have created a small board for JTAG programming from the Pi. I’ll make some available as soon as I’ve documented it” – Twitter.
iLabs Bi2C NFC reader module will soon be released. This is a complete I2C based NFC reader solution with electronics and antenna in only 62x17mm and attaches with a flexible flat cable to the target system. It appears it will have CircuitPython and Arduino support – 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 no new boards added, but several are in development.
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:
- How to Add a New Board to CircuitPython
- How to add a New Board to the circuitpython.org website
- Adding a Single Board Computer to PlatformDetect for Blinka
- Adding a Single Board Computer to Blinka
New Learn Guides!
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!
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 364!
Here’s this week’s new CircuitPython 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!
I implemented the ability to turn the CircuitPython status bar on and off, in case it might be found to be interfering with something else, or the user did not want to be present. We were having trouble with the Thonny editor and the status bar, when there were errors present. But this might have been due to an existing bug that was not really related to the status bar but was exercised by it.
I also spent time determining why deep sleep on certain ESP32 boards was using more power than expected in some situations. It appears to be due to not shutting down some power-control pins.
This week I’ve been working with CircuitPython on the ESP32 V2 Feather. I’m working on a guide to build a WiFi mailbox notifier. The reason the project was switched to WiFi was to simplify the build, and give me a chance to work with the ESP32 CircuitPython workflow and the new web workflow. I’ve already found a couple of bugs.
I also created a new template showing how to install CircuitPython on ESP32 boards – we have explanations in multiple places, but not a board-specific version of it for each board guide.
This past week I made a lot of progress with adding Web Workflow features to code.circuitpython.org. I finished adding Device Discovery and made the workflow much smoother. One of the things I’m particularly proud of is adding functionality to be able to transfer your work between different URLs. This solves one of the big problems with users starting work in one place and realizing they needed to save the work on a different device.
Originally we had planned to have everything happen on code.circuitpython.org, but browser security made this difficult and while the workaround of loading the website from the device worked, it made other things more challenging. However, this removes one of the largest remaining obstacles.
I updated the mpy size measurement PR based on feedback received. I tested and reviewed several library PRs including one for an alternative mode of operation for LSM303 accelerometers. I also worked on PIL based scripts to generate number sprites and create animation frames representing the top and bottom half of the numbers flipping down. I’ve have gotten it worked out so the number of animation frames can be specified so that we can try a few variations to find a good balance between having a smooth animation, and keeping the spritesheets as small as possible to preserve file storage space and memory.
I’ve started implementing WiFi for CircuitPython on the Raspberry Pi Pico W (Pi Cow). So far, in my branch, it’s possible to blink the LED attached to the cyw43 wireless chip as a DigitalInOut; and to list (but not yet associate with) access points. Next up is integrating the “lwip” stack for network communication.
This week I worked on something that was not CircuitPython related: a guide showing how to use Unity with Arduino and a 9 DoF sensor. It would be cool to maybe revisit at some point with CircuitPython. However, in my research for the project, integrating Arduino and Unity seems to be a common question without a lot of written examples and code so I’m excited to have this resource available for folks.
I also worked on a new product guide for the MAX17048 Battery Monitor. That guide does include CircuitPython. I’m out on vacation next week, but I’m brainstorming a few projects at the moment that I’ll be working on when I return.
PyCon UK will be returning to Cardiff City Hall from Friday 16th to Sunday 18th September 2022 – PyCon UK.
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.
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.
20220905 is the latest CircuitPython library bundle.
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 – Find a dream job, find great candidates!
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 35,441 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.