View this email in your browser. Warning: Flashing Imagery
Welcome to the latest Python on Microcontrollers newsletter! I hope everyone is staying cool in the Northern Hemisphere and warm in the South. We have a couple of Pythonistas on Podcasts (PoP, it’s a Thing).
If you’re not, you need to be following Ladyada hacking baby toys with CircuitPython for her little one. And speaking of Python, there is a new release candidate out for CircuitPython. Finally, there are so many interesting projects this week, please check them out. – 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:
Pythonistas on Podcasts This Week
Kattni Rembor Interviewed on Teaching Python
The Teaching Python podcast with Kelly and Sean devotes their latest broadcast to CircuitPython – Teaching Python.
“We’re excited to have Kattni Rembor from Adafruit as our special guest, who has contributed extensively to the CircuitPython platform, from beginner guides to advanced projects. We delve into CircuitPython, a version of Python designed for microcontrollers. Created for beginners and educational purposes, it provides a unique approach to learning Python. Kattni enlightens us on the vast applications of CircuitPython, ranging from environmental sensing to assistive technologies for people with disabilities.”
Tod Kurt on The Real Python Podcast
Christopher Bailey at The Real Python Podcast interviews CircuitPythonista Tod Kurt. Tod has been working with embedded electronics for a long time and has been an active member of the Arduino community. He recently started to build projects using CircuitPython, and it has become his preferred prototype method – Real Python.
Adafruit Commercial Toy Hacking
Adafruit’s Ladyada has been hacking the Baby Einstein toy for “Babyada”. She now has a custom ESP32-S2 board with an SD card to replace the original board. With CircuitPython, it now plays any song selected on the SD card – Adafruit Top Secret.
CircuitPython 8.2.0 Release Candidate 0 Released
CircuitPython 8.2.0-rc.0, a release candidate for CircuitPython 8.2.0, is now out. The team believes it is stable, and are providing a release candidate for further testing before final release – Adafruit Blog and GitHub release notes.
Notable changes to 8.2.0 since 8.1.0
- Continued enhancement of
PiFinder Raspberry Pi Camera
The PiFinder is an all-in-one device that mounts on any telescope and uses a Raspberry Pi High Quality Camera to take photos of the night sky. The PiFinder figures out where a telescope is pointing to help observers find and view astronomical objects. A Raspberry Pi 4 takes care of image processing and logging, with the help of onboard GPS. See GitHub for Python code and 3D Print files – Raspberry Pi via Twitter.
Last Chance: PSF Board of Directors Vote
The 2023 election for the Python Software Foundation Board of Directors is open. Voting closes Friday June 30, 2023 at 11:59 UTC so vote soonest. You must already be a confirmed voting member of the PSF to vote – Python.org.
A Raspberry Pi RP2040-Based Tamagotchi Virtual Pet
Picotamachibi is the name for a fun MicroPython based virtual pet. It uses a Raspberry Pi Pico microcontroller board and a SSD1306 128×64 OLED display. The full source code for Picotamachibi is on GitHub – Kev’s Robots.
Make: Reviews the Adafruit Feather RP2040 with DVI
The Make: Boards Guide reviews the Adafruit Feather RP2040 with DVI is a microcontroller board capable of DVI digital video output on an HDMI port. Since the RP2040’s release, hackers have been pushing the PIO peripherals to their limits, including producing analog VGA video output.
Taking it a step further, the PicoDVI project proved it was possible to generate digital video directly from the RP2040 without using an additional chip. Now Adafruit has packaged all the hardware needed to get DVI output from an RP2040 in a Feather-sized board and wrapped the PicoDVI project code for use in the Arduino IDE and in CircuitPython – Makezine and Adafruit.
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 Feather DVI with displayio and pride flags multiple ways.
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 Function Lists – Adafruit Blog and YouTube.
Catch all the episodes in the YouTube playlist.
Project of the Week: The PICOPAD
Picopad is an open game console that offers a unique opportunity for young tech enthusiasts. It comes as a kit, allowing one to learn the principles of soldering and electronics while building their own games console. In addition, Picopad supports C and MicroPython programming. It’s based on the Raspberry Pi RP2040 microcontroller. It has a 2 inch TFT display and a microSD slot.
All games on Picopad are open source on GitHub. A multi-program with 16 games is pre-installed on the Picopad, which provides a wide range of entertainment including Ants, Train, Flappy, PacMan, Sokoban, Atoms, Eggs, 15, GhostRace, Chess, Life, Maze, Raptor, Tetris, TV Tennis and Vegaslot.
A novel thing for this is a UF2 SD card loader: from a menu, one can select to reflash/run games/programs in UF2 format, like a program loader for UF2 based software – pajenicko.cz via Twitter.
News from around the web!
Bluetooth communication between two Raspberry Pi Pico W boards – YouTube.
This video demonstrates the passing of data wirelessly from a set of three 10K ohm potentiometers on one Pico W to a NeoPixel strip on another Pico W using Bluetooth (BLE) protocols. Using Bluetooth is fast and reliable and does not need access to a WiFi network.
A lot of coding but the I2C Client with NeoPixel Bars are working great! This video has the bars configured as VU meters. The only data from the I2C host is “new values”. The I2C client handles attack, decay, and color gradient. The host device is running CircuitPython – Twitter.
Using a Pimoroni RP2040-based LED matrix display and MicroPython to display Morse Code messages via HamAlert.com – WhiskeyTangoHotel.com and YouTube.
The full setup for my daughter’s music button. There is a Raspberry Pi Pico W in each box, controlling various components. The project uses MQTT, free Adafruit IO and CircuitPython – Instagram.
Two weeks ago, we had The Guitar Picking Robot in the newsletter. In a new article by Make:, the project gets described in full. It uses a Pimoroni Servo 2040 board which combines a RP2040 microcontroller and servo controllers. CircuitPython is used to program the board – Make:.
PyCon 2023 talk by Juliana Karoline de Sousa: Create interactive games using MicroPython and electronics – PyCon US and Video, via Twitter.
See more PyCon US 2023 videos – YouTube
Fixes and upgrades for the ALICE robot to get her ready OpenSauce. The Robot and controller run on Feather M4 Expresses and communicate via RFM95 LoRa radios. The controller also interfaces with an XBox Kinect to capture the user’s poses – Twitter.
I made a ‘slow’ video of the ‘midnight Sun’ as it skirts from NW to NE last night (20230622-23) from Rousay, Orkney, using a Raspberry Pi HD camera and Python time lapse code – YouTube via Twitter.
GitHub user whimmsee has coded a CircuitPython library for the PMW3360 motion sensor – GitHub.
Raspberry Pi Zero powers Game Boy Advance Retropie handheld – Tom’s Hardware.
BeaglePlay + Qwiic Capacitive Touch Slider: use Python on BeaglePlay to use a Qwiic Capacitive Touch Slider – Hackster.io.
Raspberry Pi Pico Capacitive Touch – DIY Electromusic.
There is an early library from Pimoroni for enabling Bluetooth Low Energy (BLE) on their Enviro range of products using a Raspberry Pi Pico W client board – GitHub via Twitter.
PiccoloBASIC – A BASIC interpreter for the Raspberry Pi Pico board – CNX Software, GitHub and YouTube.
ArduForth is a Forth-like interpreter for the Arduino environment – GitHub.
cocotb is a coroutine based co-simulation library for writing VHDL and Verilog testbenches in Python – GitHub.
PyDev of the Week: Max Kahan on Mouse vs Python
CircuitPython Weekly Meeting for June 26, 2023 (notes) on YouTube
Note: There will be no CircuitPython Weekly Meeting via Discord on July 3rd due to the proximity to the US July 4th holiday Tuesday. Meetings will resume July 10th.
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? ESP32-C3 Comprehensive Guide to IoT (free) (PDF).
Raspberry-Pi alternative Zimaboard hands-on: a versatile X86 single board computer (SBC) – NotebookCheck.
A swirly Aluminum Mounting Grid for 0.1” spaced PCBs – 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 there are some in processing.
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!
PlayStation Spinner Controller from John Park
ESP32-S2 Reverse TFT Digital Clock Display featuring Blanka-chan! from Trevor Beaton
LoRa Signal Bridge with the Feather RP2040 RFM from Eva Herrada
Adafruit I2S Amplifier BFF from Kattni
Adafruit RP2040 Prop-Maker Feather from Liz Clark
Adafruit NeoDriver – I2C to NeoPixel Driver from Liz Clark
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
- 139856 PyPI downloads over 310 libraries
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 5954
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 5928
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 1748
- Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1488
- Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1137
- Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 1105
- Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1032
- Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 1011
- Adafruit CircuitPython BLE (adafruit-circuitpython-ble): 908
- Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 891
What’s the CircuitPython team up to this week?
What is the team up to this week? Let’s check in!
I visited Adafruit in NYC last week. This week Scott, Jeff, and I triaged the remaining CircuitPython 8.2.0 issues. I addressed several of them, which were mostly just documentation improvements. Very soon we should be able to make an 8.2.0 release candidate, and if that works out, we’ll release 8.2.0 final.
My I2S BFF guide went out this week. It has everything you need to know about your board, and includes examples in both Arduino and CircuitPython.
Next up is the Gamepad QT guide for the new I2C Mini Gamepad breakout. Keep an eye out for that, coming soon!
This past week, one of the bigger projects I completed was testing a large number of guides and updating the RGB Matrix Dreidel Game Learn Guide that Liz had written so that it could play I2S audio in addition to the original design. This involved updating the 3D design, building a circuit, and updating the software.
This week I’ve been working on testing the proposed changes to make ESP32SPI socket’s API be more similar to its CPython counterpart. MiniMQTT was the main functionality that I’ve tested with it this week. I also submitted a PR to refactor an older ESP32SPI_WSGI server module over to be in the WSGI library instead of the ESP32SPI Driver library and updated it to work with the newer, more compatible socket API.
For the Teddy Ruxpin (2017) reverse engineering project, I implemented mouth movements & eye movements. For mouth movements, I use the json output of a program called “rhubarb”, which can turn an audio file into mouth positions; it was intended for cartoon animation but has proven useful here. A big thanks to John Park for investigating various pieces of software and concluding this one was the best open source one. My work is public (GitHub) and coded in Python but it’s not yet documented well enough for anyone else to use.
Last week I was visiting New York City. We had high level discussions around Adafruit and CircuitPython but didn’t work much on specific things. This week I revised the swirly grid generator script and then generated more sizes. Now, I’m working on USB host support including converting the USB reports from a connected keyboard into CircuitPython’s serial input. This is the beginning of a “USB host workflow” where we can have an onboard text editor.
This week I published the guide for the new RP2040 Prop-Maker Feather. I think this Feather will be really popular with folks since it has so many built-in components. I think the coolest part is the onboard I2S amp with the speaker terminal block output. Usually using I2S audio requires breadboarding or soldering so being able to quickly hook up a speaker and have nice sound quality is really cool.
I’ve also been updating some ESP32-S2/S3 guides to include information on the MAX17048 battery monitor, which is replacing the now-discontinued LC709203. This involves updating a few pages and redoing the Factory Reset code to check for either the LC709203 or the MAX17048.
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-rc.0. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20230626 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.0b3.
3,573 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,444 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.