If you missed this week’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). 10,510 subscribers worldwide.
The next newsletter goes out in a week and subscribing is 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! A busy week with a surprising amount of activity in the Python on hardware community. New software and so many innovative combinations of hardware plus software. Most of this capability was just something one dreamed about a short while ago. It is the community driving innovation and the chip shortage easing which is releasing the floodgates. As we head into summer, I look forward to your projects. – Ed.
A New Release of the Thonny Editor Provides New Features
A new version of the Thonny Python editor has been released with bug fixes and new features. The default installation uses Python 3.10 and looks to run in 64 bit mode. The ESP flashing dialog now allows selecting from list of known MicroPython and CircuitPython variants and downloads them for you – GitHub via Twitter.
PyCon US ‘23 and PyCascades ‘23 Videos Are Now Out
The PyCon US 2023 talk recordings are now available on the PyCon US YouTube channel – YouTube.
The PyCascades 2023 talk recordings are now available on the PyCascades YouTube channel – YouTube.
A New MicroPython YouTube Channel
MicroPython now has an official YouTube channel for their videos – YouTube.
Software Driving Hardware
Hackaday was talking about Christopher Barnatt’s very insightful analysis of what the future holds for the Raspberry Pi single board computers on their Podcast. On the one hand, they’re becoming such competent computers that they are beginning to compete with lightweight desktop machines, instead of just being a hacker curiosity.
On the other hand, especially given the shortage and the increase in price that has come with the Pi’s expanding memory endowments, a lot of people who would “just throw in a Raspberry Pi” are starting to think more carefully about their options.
These days, there is no shortage of microcontrollers that have enough memory – both flash and RAM – to support a higher-level environment like MicroPython. And if you think about it, MicroPython brings to the microcontrollers a lot of what people were using a Raspberry Pi for in projects anyway: a friendly interactive programming environment that was free of the compile-here, flash-there debug cycle. If you’re happy coding Python on a single-board Linux computer, you’ll be more or less happy coding in MicroPython or CircuitPython on a microcontroller – Hackaday.
Git 2.41 Released
From the Python Software Foundation
Python Language Summit – Python core developers, triagers, and special guests gathered for the Python Language Summit: an all-day event of talks where the future direction of Python was discussed. The Language Summit 2023, just before PyCon US ‘23, included three back-to-back talks on the C API, an update on work towards making the Global Interpreter Lock optional, and a discussion on how to tackle burnout in the community – PSF Blog.
PSF Board of Directors Openings – Nominations for the Python Software Foundation Board of Directors are open – PSF Blog.
PyLadies Presents: Careers with Python
This meetup is the third volume of the “Careers with Python” series that aims to guide one through the various career paths and opportunities available as a Python developer. June 20th, 2023 in Amsterdam – Meetup.
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 HT16k33 segment display 14×4 scrolling.
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.
The latest episode was released June 5th and features Martin Tan. Martin and Paul discuss Martin’s new book, micro:bit Projects with Python and Single Board Computers: Building STEAM Projects with Code Club and Kids’ Maker Groups – Show List.
Project of the Week: Making a Massive Functional Nose
This massive nose sniffs things then prints a description of the smell. Adnose is an interactive sculpture combining image recognition and machine learning. It was 3D printed in separate pieces before being assembled and then finished to give it a sculptural look. It uses a Raspberry Pi 4, camera, distance sensor, thermal printer and speaker, programmed through a Python script – Raspberry Pi News.
News from around the web!
A Raspberry Pi Pico powered cable tester/identifier running CircuitPython – Twitter.
VCVRack CableControl is a virtual cable controller for the VCVRack Eurorack emulator which requires nothing more than a Raspberry Pi Pico (or other CircuitPython compatible microcontroller). The software is written in CircuitPython. It provides 26 physical sockets which can be distributed as inputs or outputs – GitHub.
Measuring sleep current on an ESP32-S2 running CircuitPython – Twitter.
“First thing I put together to try out this new uploaded was an a-MAZE-ing new program for my M5Stack Core Basic. Look at the little triangle guy trying to get through the maze! I’m really liking the
vectoriolibrary from CircuitPython, shapes are easy!” – Twitter and GitHub.
A PyCascades talk: What’s That Smell? Detecting Air Quality with Python (and Raspberry Pi) – YouTube.
“Faculty have seen a drop in student visitors post-COVID, so I Funked Up my Boston College office for more fun. Also a great way to teach IoT and MQTT with the Raspberry Pi Pico W, Adafruit IO, and CircuitPython” – YouTube First Video, YouTube Second Video, and GitHub, via Twitter.
Trying to power a Raspberry Pi Pico running MicroPython with a battery made from potatoes – Twitter.
A touchscreen library (CST816S) for the RP2040 Waveshare Round 1.28” LCD in CircuitPython – Twitter.
Programming an Adafruit MagTag eInk display to show a daily brain teaser on a refrigerator using CircuitPython – Twitter.
Connecting a VL6180X distance sensor to a Raspberry Pi Pico running CircuitPython – RP2040learning.com.
Raspberry Pi Remote Server Monitoring over WiFi: MicroPython code to monitor a TCP port using usocket – YouTube.
Reusing USB pins GPIO19 and 20 on an ESP32-S3 with MicroPython – maripo.org.
A Raspberry Pi uses ChatGPT to get answers, fed to a Big Mouth Billy Bass – Tom’s Hardware.
A standard MicroPython script to set up a new ESP32. The secrets.py file contains the ssid/pwd (and more). The main script can be published safely. Copy, paste, save, run – Twitter.
Lua: The Little Language That Could – Matt Blewitt.
PyDev of the Week: Daniel Alejandro Mesejo-León on Mouse vs Python
The Adafruit Prop-Maker Feather RP2040 is a great new board for making props and toys that have audio, motion and LEDs. There is a quick demo that shows off LED animations on NeoPixels, motion sensing with the LIS3DH accelerometer, servo output control to a micro servo, and audio playback via a 3W I2S amplifier – Adafruit.
The Pimoroni Inventor HAT Mini is a versatile motor, servo, and audio driver HAT for Raspberry Pi. Bring your mechanical inventions, creations, and contraptions to life – Adafruit.
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 the pipeline.
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
Updated 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 441!
Here’s this week’s new CircuitPython libraries:
Here’s this week’s updated CircuitPython libraries:
Library PyPI Weekly Download Stats
Total Library Stats
- 111186 PyPI downloads over 310 libraries
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 7692
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 7429
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 2121
- Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1521
- Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1019
- Adafruit CircuitPython Pixelbuf (adafruit-circuitpython-pixelbuf): 879
- Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 866
- Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 865
- Adafruit CircuitPython BLE (adafruit-circuitpython-ble): 779
- Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 753
What’s the CircuitPython team up to this week?
What is the team up to this week? Let’s check in!
This week I’ve been working on making the fetching of submodules more selective in the CircuitPython repo. The idea is to fetch only the submodules you need. If you’re building only for a particular port, there’s no reason to fetch all the submodules for every port, which can take minutes.
This week I finished up the Feather RP2040 DVI guide. It was started before the board came out, but there were some issues, so getting the board into the shop was delayed. The guide was set aside, and not dealt with again until the past week. It’s completed now! If you picked up one of these nifty boards, check out the guide. It has everything you need to get started, including CircuitPython and Arduino DVI video examples!
Next up in guide land is the CHOC NeoKey breakout, followed by the STEMMA QT Gamepad. Keep an eye out for those coming soon!
This past week I’ve been catching up on GitHub issues. I’ve been focusing on the display issues in the Raspberry Pi Installer Scripts GitHub repository. One of the issues that took some time was updating the Display Driver for the 1.14” display so that it fixes the offsets. I started with the source code from the current driver and added the calculations from the old driver and was able to get it working again.
This week I’ve been going back through typing PRs submitted during PyCon that needed additional changes still and doing what I can to move them forward. I also started digging into a
displayio issue submitted recently that results in hidden objects making the refresh rendering time longer than they would if they were visible, I’ve attempted a few fixes and had some success in figuring out where the hidden items are taking extra time. It still needs some additional testing and likely a few more changes before it’s ready to go.
Another week, another
synthio improvement. In a new pull request, the overall FIR filtering is replaced with per note biquad filtering, which is more frequently used in audio synthesis. This allows each sound to have a different filter, which is especially useful for creating percussive effects where a drum might have a low pass filter while a high hat would use a high pass filter. Mark (gamblor) demonstrated this during last week’s Show and Tell program.
This week I’ve been mostly working in the Pyrate code. I added 1-Wire support and am working on UART support. UART is a bit tricky because the pins on the Pyrate board don’t support native UART. So, I’m polishing up the PIO code used for UART. That code will allow us to use any pin for TX or RX.
This week I’ve been working on a synth that uses the ANO rotary encoders. The code is written in CircuitPython with the new synthio module features. It is probably the longest code I’ve ever written in CircuitPython and it’s been super fun adding different modes to show the features in
synthio. The guide should be live soon along with some demo videos.
EuroPython 2023 will be July 17-23, 2023, in Prague, Czech Republic and Remote – EuroPython 2023.
PyCon UK will be returning to Cardiff City Hall from Friday 22nd September to Monday 25th September 2023 – PyCon UK.
Hackaday has announced that the Hackaday Supercon is on for 2023, and will be taking place November 3 – 5 in Pasadena, California, USA.They’d like to hear your proposals for talks and workshops! The Call for Speakers and Call for Workshops forms are online now, and you have until July 18th to sign up – Adafruit Blog and Hackaday.
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.
20230605 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.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 37,422 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.
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.