View this email in your browser. Warning: Some Flashing Imagery
Welcome to the latest Python on Microcontrollers newsletter! Python popularity seems to have few bounds, and the IEEE concurs. And it seems like the RP2040 processor is becoming a favorite, from hobby work to production floors. It’s a great time to use Python on Hardware! – Anne Barela, 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:
The IEEE Spectrum Top Programming Languages for 2023
In the latest IEEE Spectrum ranking of the top programming languages, Python and Java are on top with Python the leader by a considerable margin – IEEE Spectrum.
“Python has become the jack-of-all-trades language—and the master of some, such as AI, where powerful and extensive libraries make it ubiquitous. And although Moore’s Law is winding down for high-end computing, low-end microcontrollers are still benefiting from performance gains, which means there’s now enough computing power available on a US $0.70 CPU to make Python a contender in embedded development.”
CircuitPython 8.2.6 Released
CircuitPython 8.2.6 is the latest bugfix revision of CircuitPython, and is the new stable release – Adafruit Blog and GitHub Release Page.
Notable changes to 8.2.6 since 8.2.5
- Updated the TLS root certificates to support servers using Let’s Encrypt.
Limor “Ladyada” Fried Interviewed on The Pi Cast
The Tom’s Hardware Pi Cast on September 12th featured Limor “Ladyada” Fried from Adafruit. They discuss “Writing Arduino Drivers With AI” – YouTube.
Writing libraries to support our favorite microcontrollers is a big task, but what if ChatGPT could lend a hand? Adafruit’s own Limor “Ladyada” Fried has tasked ChatGPT to write Arduino drivers in her own style, creating a “mini-Limor” bot to handle the task. We sat down with Fried to talk about how AI can help Adafruit and the wider community to write drivers, and improve workflows.
Unicomp Switches Popular Model M Keyboards to Use Raspberry Pi Pico
For years, enthusiasts have been asking for reprogrammable Model M keyboards from Unicomp. Thanks to the 2022 discontinuation of the Cypress microcontroller Unicomp previously used for its USB keyboards, Unicomp keyboards are now mostly reflashable, thanks to their selection of the RP2040-based Raspberry Pi Pico as the heart of its new generation of USB controller cards, allowing for custom firmware just by copying a new UF2 – Admiral Shark’s Keyboards.
Open Source Hardware Certifications For August 2023
Make is providing written summaries of hardware certifications by the Open Source Hardware Association (OSHWA). Three are highlighted, including the Adafruit Floppy FeatherWing – Makezine.
Pimoroni’s Pi-Powered ‘Pico Vision’ Nears Completion
Squeezing the Raspberry Pi Pico’s RP2040 into another breakout board, UK-based Pimoroni is working on Pico Vision. The board, according to Pimoroni software developer Phil ‘Gadgetoid’ Howard, is “a dual RP2040 ‘CPU’ and ‘GPU’ HDMI stick for … doin’ graphics stuff on big screens.” GPIO access is limited to QW/ST connections and a few GPIO pins broken out via the CPU and GPU debug pins – Tom’s Hardware.
Bus Pirate 5 Teased
Dangerous Prototypes has been demonstrating fresh progress with the Bus Pirate 5, a multiprotocol test device. It’s built using the Raspberry Pi RP2040 – X, formerly Twitter and buspirate.com.
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
Last Friday, Scott streamed work on ESP IDF 5.0.
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 Circuit Playground Tones – Adafruit Blog and YouTube.
Catch all the episodes in the YouTube playlist.
Project of the Week: Tulip CC on the LILYGO T-Deck
The T-Deck is a ESP32-S3 N16R8 based device with touchscreen, a small blackberry-style keyboard, LoRA (optional), speaker, microphone, SD card slot, battery charging IC, and trackball. Developers have been doing some interesting projects with it including a handheld MS-DOS/Windows machine. The folks behind Tulip CC have ported their software to the device. This provides an interactive MicroPython “deck” experience for music, graphics, and games – GitHub.
News from around the web!
CircuitPython FTP Server is a library providing a simple FTP server for Circuitpython 8.x, with PASV and ACTIVE support – GitHub via X.
A revision to the Embedded Systems Engineering Roadmap – X.
Configure your MicroPython project with JSON files. Learn how to get your microcontroller to remember your settings, so you can quickly get it back in working state even if it loses power or reboots – Bhavesh Kakwani.
Trevor Flowers builds replicas and machines from alternate timelines. The current project is a miniature replica of a TRS-80 Model III. Inside it uses an Adafruit display, Adafruit QT Py microcontroller and EYESPI connector breakout, all running CircuitPython – Mastodon.
Turn an Adafruit Trinkey into a QR code scanner with CircuitPython and Useful Sensors’ new Tiny Code Reader module – X.
Max Van Leeuwen turned a gifted Polaroid camera into a Raspberry Pi camera capable of sending digital pictures to his Grandmothers’ picture frame – Raspberry Pi.
Revisiting a 2017 video on making a hexapod, and turned the notes into a similarly dated blog post. The code is from 2017, but the write up is recent. For hexapods with ESP8266, MicroPython and the PCA9685 – X and Orionrobots.
Details + code are now up for Cedar Grove Studio’s “windless” electronic chimes – GitHub.
Raspberry Pi Spectrometer puts the power of light at your fingertips, programmed in Python – hackster.io.
Coding the Waveshare RP2040 Matrix in CircuitPython or MicroPython – The Pi Hut.
The Lilygo9 T-display S3 touch running MicroPython with the touch driver – X.
Transfer Data From Raspberry Pi Pico To Local Computer – Electromaker andf YouTube.
PicoBricks WiFi gamepad projects with MicroPython – GitHub and X.
A Badger 2040 W + mini Keyboard case makes a small console with a Pimoroni Badger 2040 W and a small keyboard – Thingiverse.
Running forth3 on an RP2040 via no-std + async things – Bluesky and asciinema.
It is a 1×2 size Lego block with display (after a bit of trimming)! And it can display bitmaps from MicroPython – Mini OLED Unit 0.42” 72×40 Display with I2C – X and M5Stack.
PyDev of the Week: Jelle Zijlstra on Mouse vs Python.
CircuitPython Weekly Meeting for September 11th: (notes) on YouTube.
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? VS Code: Virtual Environments for Embedded Development with Conda.
The Waveshare RP2040-PiZero provides a Raspberry Pi RP2040 microcontroller in a Pi Zero form factor. It includes a microSD reader and 40 pin header – LinuxGizmos.com.
Orange Pi launches its Zero 2W Single-Board Computer, offering faster clocks and 8x Times the RAM. The board was designed to go toe-to-toe with the Raspberry Pi Zero 2 W. This SBC includes a handy 24-pin expansion header with USB, Ethernet, and more – hackster.io.
Banana Pi BPI-P2 PRO provides PoE and low power consumption with excellent thermal characteristics, making this board an excellent basis for building a smart voice-controlled device, the sound part of a smart robot, smart speaker, or home assistant – X.
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:
New Learn Guides!
Audio Synthesis with CircuitPython synthio from John Park
Tombstone Prop-Maker RP2040 from Noe and Pedro
Adafruit MatrixPortal S3 from Melissa LeBlanc-Williams
The CircuitPython library numbers are continually increasing, while existing ones continue to be updated. Here we provide library numbers and updates!
To get the latest Adafruit libraries, download the Adafruit CircuitPython Library Bundle. To get the latest community contributed libraries, download the CircuitPython Community Bundle.
If you’d like to contribute to the CircuitPython project on the Python side of things, the libraries are a great place to start. Check out the CircuitPython.org Contributing page. If you’re interested in reviewing, check out Open Pull Requests. If you’d like to contribute code or documentation, check out Open Issues. We have a guide on contributing to CircuitPython with Git and GitHub, and you can find us in the #help-with-circuitpython and #circuitpython-dev 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 449!
Here’s this week’s new CircuitPython libraries:
Here’s this week’s updated CircuitPython libraries:
Library PyPI Weekly Download Stats
Total Library Stats
- 73763 PyPI downloads over 313 libraries
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 7375
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 6442
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 2347
- Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1570
- Adafruit CircuitPython PCA9685 (adafruit-circuitpython-pca9685): 1522
- Adafruit CircuitPython ServoKit (adafruit-circuitpython-servokit): 1442
- Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1050
- Adafruit CircuitPython ESP32SPI (adafruit-circuitpython-esp32spi): 827
- Adafruit CircuitPython RGB Display (adafruit-circuitpython-rgb-display): 754
- Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 722
What’s the CircuitPython team up to this week?
What is the team up to this week? Let’s check in!
I released CircuitPython 8.2.6 last Tuesday to add a new root TLS root certificate to the roots certificate we use in the Espressif and Pico W ports. The certificate changes in 8.2.5 updated the list, but did not include a special certificate needed by webservers that use Let’s Encrypt certificates.
After the release, I did some debugging with colleagues of a couple of issues that turned out to be hardware rather than software related. Now I’m back working on the MicroPython v1.20.0 merge.
This week I worked on the Metro M7 with microSD guide. It has everything you need to get started with your fancy new Metro. Check it out in the Adafruit Learn System.
On a personal note, I have some news to share. My last day with Adafruit will be September 22, 2023. I will get into this more next week, but I wanted to include it alongside the rest of the announcements. Thank you for being such an amazing community! You are what drew me to this in the first place, and I am honored to have been a part of this for the last seven years. I will still be a member of the community, but I will be participating in a different capacity.
I’ve been working on going through Blinka and related issues on GitHub and either closing the issues if they have been resolved already or creating Pull Requests if the solution is relatively easy. As I go through and more issues are closed, I find it less overwhelming and easier to address the remaining issues. The goal is to get the issues down to the more complex ones that really should have some actions taken at some point.
This week I worked on validating a recent fix for Read the Docs docs building and creating a patch file that adabot will be able to use to apply this fix to all of the CircuitPython libraries in an automated fashion. I’ve submitted PRs with the patch, as well as the same fix in the cookie cutter. I’ve also been trying options for templating libraries,
utemplate is one made for MicroPython and a community member is working on a new one focused more directly for CircuitPython. This can be used along with the
HTTPServer library to render HTML web pages with dynamic data populated into them from Python variables.
The “dot clock display” pull request has been merged. Thanks for everyone who tested and provided feedback!
Next up is some even less glitzy work to better send display initialization sequences for these kinds of displays, particularly when the display’s SPI bus is connected to a GPIO expander rather than directly to the microcontroller, as it is on the Espressif devkit and Adafruit’s upcoming board.
This week I’ve been continuing to work on the ESP IDF5 update PR. I’ve slimmed down the builds so they all fit and reworked the board config to make flash and PSRAM settings more explicit. Now, I’m smoke testing on each different chip to ensure that basic Python URL requests still work. S3 is ok but S2 is having memory issues with HTTPS currently. C3 and ESP32 still need to be checked. Once they all work, then I’ll update the PR. There will definitely still be bugs but they’ll be easier to find once it is merged into main. I can also follow up with a 5.1 update after that too.
This week I worked on updating the 2.8” TFT Touch Shield v2 guide for the new version that just came into the shop. The new version uses the TSC2007 for touch screen functionality. I worked on the guide for the STEMMA QT breakout version of that chip so it was cool to use it in conjunction with a TFT screen. I added a fun CircuitPython example that uses the touch screen to advance a slideshow of Circuit Playground characters.
PyCon UK will be returning to Cardiff City Hall from Friday 22nd September to Monday 25th September 2023 – PyCon UK.
The next MicroPython Meetup in Melbourne will be on September 27th – Meetup.
Maker Faire Bay Area will be October 13-15 & October 20-22, 2023 – Eventbright.
Hackaday has announced that the Hackaday Supercon is on for 2023, and will be taking place November 3 – 5 in Pasadena, California, USA – Adafruit Blog and Hackaday.
The inaugural PyLadies Conference will take place December 1-3, 2023 – pretalx.
The Pyjamas Conference, the 24-hour online Python conference, will be returning for a fifth year on December 9-10. The Call for Papers began on September 2nd and extends to September 30th – Twitter.
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.2.6. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20230912 is the latest Adafruit CircuitPython library bundle.
20230906 is the latest CircuitPython Community library bundle.
v1.20.0 is the latest MicroPython release. Documentation for it is here.
3.11.5 is the latest Python release. The latest pre-release version is 3.12.0rc2.
3,658 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,847 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, Instagram Reels), 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.