View this email in your browser.
Welcome to the latest Python on Microcontrollers newsletter! Big news with Raspberry Pi software to enable the latent Bluetooth on the Raspberry Pi Pico W. While MicroPython has it now, CircuitPython support will come later. The schedule for EuroPython is out and Prague is such a lovely city! Alas, your editor will be in Paris and London at that time for a delayed honeymoon. Look for guest editors for three issues in July – 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:
Bluetooth Arrives for the Raspberry Pi Pico W
A year after the Raspberry Pi Pico W was launched with its Infineon CYW43439 wireless chip, Raspberry Pi has software to enable Bluetooth for their C SDK (Version 1.5.1) and there is now MicroPython support as well. CircuitPython support will follow in time – Raspberry Pi and hackster.io.
“Specifically, we support Bluetooth Classic — with the temporary exception of ACL/SCO — along with both the BLE Central and Peripheral roles. Things are also configurable so you can enable Bluetooth Classic and BLE either individually, or have both of them available at the same time.”
Testing the Performance of SPI-Based LCD Displays and displayio in CircuitPython
Josh gets a WaveShare round LCD and measures the response time of drawing the design above with CircuitPython and displayio – Josh On Design.
The EuroPython 2023 Schedule Has Been Finalized
EuroPython 2023 will be July 17-23 in Prague, Czech Republic and remote. The list of sessions with the selected talk, tutorials and posters are out now – EuroPython Newsletter and EuroPython 2023.
Espressif Issues Free Book on ESP32-C3
Espressif has released a new book on their ESP32-C3 microcontroller. This free book is 400 pages – Espressif (PDF) via Twitter.
New Versions of Python and PSB Board Candidates
Python 3.11.4, 3.10.12, 3.9.17, 3.8.17, 3.7.17, and 3.12.0 beta 2 are now available – Python Insider Blog.
Board Candidates for 2023 are Announced, vote now – PSF News.
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 tracks the displayio hidden Tilegrid bug.
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 an Absolute Wave Rectifier – 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.
The latest episode was released June 19th and features Erin St. Blaine. Erin shares where she finds inspiration, advice for starting NeoPixel projects, diffusion tips and tricks, and more – Show List.
Project of the Week: Track Flights in Real-Time on a PyPortal
The Flight Tracker collects and visualizes real-time flight data on an Adafruit PyPortal display, enabling users to track and monitor the live positions of aircraft through a dynamically updating map, controlled via CircuitPython.
To begin, a custom map image is downloaded to the PyPortal, centered on a location coordinate defined by the user. This image serves as the background for the map display. Then, at regular intervals of thirty seconds, the Flight Tracker sends a request to the OpenSky Network API, retrieving live aircraft data that falls within the boundaries of the map – Adafruit Blog, Reddit, Tutorial and GitHub.
News from around the web!
A great summary on USB and wireless capabilities of MicroPython and CircuitPython at the moment – Twitter and GitHub.
Testing PCB traces for analog capacitive touch response with Raspberry Pi Pico and CircuitPython – Twitter.
A Telnet workflow for CircuitPython, only depending on a socket – Twitter and GitHub.
Build web apps in Jupyter Notebook with Mercury – GitHub.
An audio input controller with ESP32 and MicroPython – Mastodon and GitHub.
Deciding on how to control your robot’s body can be a hard decision. For this robot, I went with an Adafruit Feather combination for the motors and transmitter/receiver – Twitter.
Jeff Geerling gives a video tour of the new BeepBerry LCD+Keyboard in a BlackBerry shape powered by a Raspberry Pi Zero form factor processor – Twitter.
Raspberry Pi in the natural world: see where Raspberry Pi devices have been deployed in the world to monitor nature – Raspberry Pi and YouTube.
The Raspberry Pi Pico W is now available in Japan! See this review and trying it out with CircuitPython 8 – Akii Diary (Japanese).
IR control of a USB Nugget using CircuitPython and a Flipper Zero to prototype an upcoming game – Twitter.
An M5Stack Core2 smart watch with a very simple time display in CircuitPython – Twitter and GitHub.
Display CloudWatch alarms on the desktop with ESP32 + Micropython + MQTT – ClassMethod.jp (Japanese).
Driving NeoPixel LED strips with an ESP32 – Instagram.
PyDev of the Week: Jeffrey Glass on Mouse vs Python.
CircuitPython Weekly Meeting will be today due to the US holiday Monday.
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? A Major Tectonic Shift away from Arm to RISC-V may be in the works for Qualcomm, Samsung, Google, Nvidia and Apple.
The new Tinymovr M5 is a powerful brushless motor controller with Python support – hackster.io.
Milk-V unveils its third RISC-V board in a month: the $9 dual-core Linux-capable Milk-V Duo – hackster.io.
Walter is a high quality ESP32-S3 module with NB-IoT, LTE-M and GPS IoT connectivity supporting MicroPython – QuickSpot.io and YouTube.
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 (after some weeks with a bunch).
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!
NeoKey Socket Breakout with NeoPixel for MX and CHOC Key Switches from Kattni
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 443!
Here’s this week’s updated CircuitPython libraries:
Library PyPI Weekly Download Stats
Total Library Stats
- 159819 PyPI downloads over 310 libraries
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 7345
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 6912
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 2195
- Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1880
- Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1470
- Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 1332
- Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1165
- Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 1117
- Adafruit CircuitPython PortalBase (adafruit-circuitpython-portalbase): 1093
- Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 1091
What’s the CircuitPython team up to this week?
What is the team up to this week? Let’s check in!
I’ve started merging MicroPython v1.19.1 into CircuitPython. I’m examining several hundred changed, added, or deleted files. So far there are no surprises.
This week I published the NeoKey Breakouts guide and the TRRS jack breakout guide. The NeoKey guide has everything you need to use both the MX and CHOC NeoKey Breakouts, including demos. The TRRS jack breakout guide gives you details about the board.
Next up, I’m working on the guide for the I2S Amplifier BFF. This guide will have everything you need to know about the BFF. It will also have multiple demos in CircuitPython and Arduino to get you started with I2S audio. Keep an eye out for that!
This past week, I’ve been testing out all of the Matrix-related guides to ensure that they are working with upcoming hardware. Some of the testing failed and I’m going through those guides and fixing the code to get it working.
This week I’ve continued to dig into the core hidden
tilegrid issue and have learned more about the internal variables inside of TileGrid implementation. I have a proposed change to try to fix the reported issue that I will submit the PR for this week.
I’ve also picked up the effort to effort to refactor the ESP32SPI socket to have the same API as CPython and built-in WiFi sockets. Dan originally worked on this, but there was an incompatibility found when using the refactored version to download large files. I found the root cause of the incompatibility and submitted a PR for a fix in the
requests library. I’ll be carrying out further testing based on feedback from discussion during the weekly meeting.
My main activity in the last week was not CircuitPython: I published a new guide showing how to create a full-fledged CP/M retrocomputer using a couple of Adafruit Feather boards. You can check it out on the Adafruit Learning System and Hackster.io.
This week I’m traveling. So, I’m not getting many coding projects done. I am having lots of good CircuitPython discussions and have gotten a swirly mounting board. It looks like it turned out ok. I’m still caught up on email, Discord and the forums too.
This week I did a few guide updates. I updated the Pico W HTTP Server code to work with the new
httpserver library refactor. I also did some updates on the ESP32-S3 board guides to include text in the Arduino pages for pressing the reset button after uploading code to the board. Otherwise, I’ve been getting the RP2040 Prop-Maker Feather guide started and I’ve been documenting a new project that involves adding a QT Py ESP32-S2 to an Ikea air quality monitor.
The next MicroPython Meetup in Melbourne will be on June 28th – Meetup. From the May 24th meeting – Notes.
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.
CircuitPython’s stable release is 8.1.0 and its unstable release is 8.2.0-beta.1. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20230619 is the latest CircuitPython library bundle.
v1.20.0 is the latest MicroPython release. Documentation for it is here.
3.11.4 is the latest Python release. The latest pre-release version is 3.12.0b2.
3,565 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.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 37,406 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.
Join the Adafruit Discord or post to the forum if you have questions.