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,574 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! CircuitPython Day 2023 is this Friday! Be sure to check the schedule below and see updates that may come up via the Adafruit Blog. There is a nice selection of happenings and projects this week to go over. With the start of the Fall academic and conference calendars, things should be quite lively in the Python space through the end of the year. And, of course, we’ll provide you details as everything happens. – Anne Barela, Editor
CircuitPython Day 2023 is Nearly Here – August 18th!
This Friday, August 18 (8/18/2023), is CircuitPython Day 2023! The day highlights all things CircuitPython and Python on Hardware – Adafruit Blog.
Here is a current list of events planned (all in US Eastern Time):
- 10:00am ET – CircuitPython Day Introduction with John Park
- 10:10am ET – Special Edition 3D Hangouts with Pedro, Noe & Liz – In this special livestream, we’re highlighting our favorite projects that use CircuitPython. Special guest Liz Clark joins us to talk about coding and 3D printing.
- 11:00am ET – Beeps and Boops with synthio: A CircuitPython Day Panel Discussion hosted by Paul Cutler – Panelists share everything you might want to know about synthio, including how it came to be, what you need to get started, synthio’s potential for makers and musicians, and more.
- 12:30pm ET – CircuitPython Day Game Jam Stream with Foamyguy – On CircuitPython day, I’ll be streaming another game jam session this year. I’m planning to make a replica of the classic Atari and Win 3.11 game Chip’s Challenge. Stop by if you’re interested in some CircuitPython game development. If anyone else is interested in working on games during CircuitPython Day or the following weekend, I’d be happy to see what you create!
- 1:30pm ET – MatrixPortal Message Board Build with Maker Melissa – Join Maker Melissa on her second live stream. This project will be an animated message board project based on the new Adafruit MatrixPortal S3 and uses the CircuitPython bitmaptools module to produce some graphic effects.
- 2:30pm ET – A CircuitPython Day Chat with Jeff, Dan and Kattni – Join Jeff, Dan and Kattni as they gather again to discuss CircuitPython and related topics. Bring your CircuitPython questions for the live Q&A at the end.
- 4:00pm ET – Special Edition John Park’s Workshop
- 5:30pm ET – Deep Dive with Scott Shawcroft – Join Scott as he answers questions about CircuitPython’s internals and discusses ongoing work including USB host.
- 7:30pm ET – Show & Tell
- 8:00pm ET – Ask an Engineer
Working with CircuitPython? Tag your projects #CircuitPythonDay2023 on social media and Adafruit will look to highlight them.
Hackster Café: Adabot Featuring Noe Ruiz & Liz Clark
Meet Adabot! Over at Adafruit, Noe Ruiz and Liz Clark have been cooking up an adorable new 3D-printed mascot. Driven by CircuitPython, Adabot runs on a new board: the RP2040 Prop-Maker Feather with I2S Audio Amplifier. The microcontroller sports screw terminals for connecting NeoPixels, a 3-axis accelerometer with tap detection, a 3-pin servo connector, and a few other bits and bobs to boost your bot – YouTube – hackster.io.
Handheld Linux Devices are Gaining Steam
More and more devices are showing up in a small tablet+keyboard (‘Kablet”?) or BlackBerry format (often using a BlackBerry keyboard). Most are full Linux computers capable of running CPython, MicroPython, or CircuitPython with the Blinka Compatibility Layer, making them interesting tools. Where this trend is going is anyone’s guess.
Deckility handheld PC uses a BigTreeTech Raspberry Pad 5 IPS touchscreen, outputting a resolution of 800×480 px – Raspberry Pi.
Hackaday reviews Beepy (formerly Beepberry), the handheld Linux computer in the shape of a Blackberry. It uses a Raspberry Pi and a Sharp memory display – Hackaday.
Nicholas Tollervey and Fabio Pliger Give an Update on PyScript
One of the most exciting initiatives in the Python space these days is PyScript, which enables Python running natively in a browser. With consistent support from the folks at Anaconda, this project has been making solid strides since its initial release. On the latest episode of TalkPython, host Michael Kennedy catches up with Fabio Pliger and Nicholas Tollervey to see where they are with the PyScript project. – TalkPython.
Interesting Books This Week
Here are a couple useful books seen this week:
The Big Git Microbook is a quick guide to commands you will use daily. A book where you could find a description of how the most commonly used commands work, with practical examples? This microbook is an introduction to the fundamental concepts and commands of Git, a version control system widely used by software developers. Throughout this book, you will have the chance to practice concepts and commands through real-world examples – Jessica Temporal.
Knowing the RP2040, A Guide for Programmers has you learn all the details of the RP2040 microprocessor (used in the Raspberry Pi Pico and other RP2040 boards) and how to leverage them in applications – Leanpub.
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 hunted bugs in CircuitPython’s USB host implementation.
This week, Scott will be broadcasting Friday during CircuitPython Day at 5:30PM US Eastern (special time).
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
This week, John will be broadcasting Friday during CircuitPython Day at 4PM US Eastern Time.
Catch all the episodes in the YouTube playlist.
Project of the Week: ADA
ADA: the AI Display Assistant is a beginner-friendly project for using ChatGPT on an ESP32. This project uses ChatGPT and an Adafruit MagTag (an ESP32 microcontroller with an eInk display) to display interesting facts and inspirational quotes. You can adjust the refresh frequency to whatever frequency you want/need – hackster.io.
News from around the web!
The Raspberry Pi Foundation is looking for young people aged 9 to 13 to participate in user research for their new Code Editor. If you’re a Parent, Educator, or Code Club or CoderDojo volunteer and can help young people take part, they would love to hear from you – LinkedIn.
Playing bass guitar with an Adafruit MacroPad (3×4 keys + encoder + oled) powered by a Raspberry Pi RP 2040 with an iPad Pro and GarageBand – Twitter/X.
“Yesterday was a bit of a mixed day, destroying a display, two DC-DC converters and a CAN bus module but in the end I got the monitoring of the VW battery working in CircuitPython on a Pico. The cell values are in mV and real time. What happened: a voltage overload when switching on!” – Twitter/X.
“Finally getting around [to] building a CircuitPython library for the MicroQuartz RV-3028 RTC, which is needed for the Crowd Supply Newt. There is an existing MicroPython library (built by CoreElecAU), so I’m hoping heavily leverage that for the CircuitPython build.” – Twitter/X.
“The CircuitPython based Armachat messenger works beautifully on a Picopad game console by Pájeníčko. Communication is via an ArmaCard module, which is nothing more than a RFM95 LoRa module in a microSD card slot.” – Twitter/X.
“A fun electronics/CircuitPython/laser project I’ve been working on: ‘The Beepy-Boopy-Box 2.0.’ It’s used for sending dispatch tones over a Motorola APX radio to EMTs/ Paramedics during special events.” It uses an Adafruit Feather RP2040 – Twitter/X.
How to add line following to a robot with Raspberry Pi Pico and Circuit/MicroPython – OnionRobots.
A MicroPython clock designed to run on a Pimoroni Galactic Unicorn as a drop-in replacement for a LaMetric – GitHub.
Interface RC522 RFid Reader using Maker Pipico and CircuitPython – YouTube.
Python im Embeddedbereich – News von CircuitPython / Python in the embedded area – News from CircuitPython – mikrocontroller.net (German / Deutsch).
How to install Python via Thonny and program the GPIO on a Rock 4C SBC – Okdo.
Notably Inaccessible – Data Driven Understanding of Jupyter Data Science Notebook (In)Accessibility – arxiv.
If you’re not using Python DATA CLASSES yet, you should – YouTube.
What’s the Deal With CPython, Pypy, MicroPython, Jython…? – Real Python.
PyDev of the Week: Zac Hatfield Dodds on Mouse vs Python
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Damien George, MicroPython Lead, on the Embedded.fm Podcast.
The Adafruit Metro RP2040 brings the power of the Raspberry Pi RP2040 microcontroller to a Metro/Uno form factor. 16MB QSPI flash ensures lots of space for your programs & more and a microSD slot adds additional storage – Adafruit.
The Pico MIDI has 1 MIDI input, 2 MIDI outputs, and a MIDI thru — properly optoisolated, and with LEDs to show activity (a nice sanity check). By taking control of the MIDI bus programmatically, the Pico can act as a sequencer, controlling a vast number of synths and other sound output devices – Tindie Blog.
Get more from the Metro/Uno form factor with the Adafruit Metro ESP32-S3 with 16 MB Flash 8 MB PSRAM. WiFi is built in, along with a microSD slot, battery connector and STEMMA QT/Qwiic I2C connector for easy connection to your favorite sensors and more – 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 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!
The CircuitPython library numbers are continually increasing, while existing ones continue to be updated. Here we provide library numbers and updates!
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 446!
Here’s this week’s new CircuitPython libraries:
Here’s this week’s updated CircuitPython libraries:
Library PyPI Weekly Download Stats
Total Library Stats
- 166078 PyPI downloads over 312 libraries
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 7463
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 7012
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 2065
- Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1632
- Adafruit CircuitPython PortalBase (adafruit-circuitpython-portalbase): 1607
- Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 1543
- Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 1542
- Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 1525
- Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1499
- Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1479
What’s the CircuitPython team up to this week?
What is the team up to this week? Let’s check in!
I’m continuing to work on merging MicroPython v1.19.1 into CircuitPython. After discussions with Scott, I am removing, at least for now, the “long-lived” storage allocation enhancement from CircuitPython, which reduces heap fragmentation. It was increasingly incompatible with MicroPython’s storage assumptions. I have some ideas about how to restore it in a more compatible way if it looks like we should put it back.
This week I worked on the Metro RP2040 guide. This is a new board in the shop. The guide will have everything you need to get started with your new Metro. If you picked up one of these boards, keep an eye out for the guide coming soon!
I also resolved some guide feedback. The Feather ESP32-S2 Reverse TFT PrettyPins diagram had incorrect pins for I2C, the TFT, and NeoPixel power. The diagrams are generated from preexisting data; they are not manually created. When I reran the script to see if it would give me the correct information, it worked perfectly. So, I have no idea why it produced incorrect info on the first round, as I can’t replicate the issue. We’re all perplexed. Regardless, the version available in the guide and on GitHub is now correct.
This past week, I focused on improving graphics in CircuitPython. To begin with, I added support for 16-bit, 24-bit, and 32-bit uncompressed bitmap loading to the Adafruit_CircuitPython_ImageLoad library.
After that, I worked on the core and updated the
alphablend function to support multiple blend modes as well as a
skip index parameter, which allows masking parts of images when blending, which is important since alpha transparencies are not supported in CircuitPython.
I also created another PR for the
Imageload library to add support for bitfield compressed images, which is the format that GIMP exports bitmaps. At this time, neither the
Imageload PRs have been merged, but hopefully they will be soon.
All of this graphics work was to improve the performance of a message board project I am currently working on. I was able to combine all of this code along with some double buffering to get some smooth animations on the MatrixPortal S3.
This week I worked on submitting some requests to OSHWA for certification and showing Kattni the process for submitting them. I’ve also been continuing to work through library PRs, most of the testing this week was around new capabilities added to the
A couple of weeks ago I ordered several ESP32-S3 boards from Tindie, because these boards support what are sometimes called “dot clock” displays. These displays have to be continually refreshed with the display data (they don’t contain a framebuffer themselves), and the S3 has a peripheral just for this purpose. If it works out, accessing this kind of display can be more efficient than SPI or I2C displays, though it uses a lot of pins.
Community member kmatch98 previously implemented this, but with some limitations that meant it wasn’t suitable for including in mainline CircuitPython. I’m hoping that with the benefit of that code as well as changes to CircuitPython in the meantime, it’ll be possible to land a version of this in the core in the coming weeks, for CircuitPython 9.
I’ll be on a couple of the CircuitPython Day live streams this week! Check out the list of events elsewhere in the newsletter and join us if it sounds interesting to you.
Last week, I published the USB_Host_Descriptors and USB_Host_Mass_Storage libraries. Together they enable mounting USB drives from within CircuitPython. Afterward, you can read and write files to the drive.
The start of this week, I’ve fallen down the CPU trace rabbit hole since I got my Orb Trace Mini. Using it I’m able to debug via blackmagic as well. However, I had to add 1011 detection and support. It only supported the 1060 previously.
This week, Noe Ruiz and I were guests on the Hackster Cafe livestream. We chatted about the recent projects we’ve done with the new RP2040 Prop-Maker Feather: Adabot and the RP2040 Lightsaber. We also talked about some general project tips and CircuitPython tricks we’ve utilized.
PyCon AU will be held August 18th – 22nd in Adelaide, Australia. The conference schedule is out and notable talks include You can’t do that in MicroPython by Matt Trentini and 10 Years of MicroPython by Damien George – PyCon AU.
The next MicroPython Meetup in Melbourne will be on August 23rd – Meetup.
The supplier of popular ESP32 and ESP8266 microcontrollers, Espressif, announces their yearly Developers Conference. During the two-day online event, there will be nearly 30 talks created by Espressif technical experts and its partners, covering a wide range of topics, including Thread, the low-power features of ESP32-C6 and Wi-Fi 6, ESP-Mesh-Lite + ESP RainMaker Cloud solution, ESP-IDF, RUST, SquareLine Studio, AWS IoT, and more. September 12-13, 10:00-19:00 CEST – devcon.espressif.com.
PyCon UK will be returning to Cardiff City Hall from Friday 22nd September to Monday 25th September 2023 – PyCon UK.
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. 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.
The Pyjamas Conference, the 24-hour online Python conference, will be returning for a fifth year. The Call for Papers will begin on September 2nd – 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.
20230808 is the latest Adafruit CircuitPython library bundle.
20230807 is the latest Adafruit 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,699 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.