If you missed Tuesday’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). 9,300+ subscribers worldwide!
The next newsletter goes out in a week and being subscribed 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!
Raspberry Pi OS 64-bit is Out of Beta
Over the past year, Raspberry Pi has been trialing a beta of Raspberry Pi OS 64-bit. Last week it finally came out of beta. – Raspberry Pi.
“The ARMv8-A architecture, which encompasses the 64-bit AArch64 architecture and associated A64 instruction set, was first introduced into the Raspberry Pi line with Raspberry Pi 3 in 2016. From that point on, it has been possible to run a full 64-bit operating system on our flagship products, and many third-party operating systems are available. However, we have continued to build our Raspberry Pi OS releases on the 32-bit Raspbian platform, aiming to maximise compatibility between devices and to avoid customer confusion.
there are reasons to choose a 64-bit operating system over a 32-bit one. Compatibility is a key concern: many closed-source applications are only available for arm64, and open-source ones aren’t fully optimised for the armhf port. Beyond that there are some performance benefits intrinsic to the A64 instruction set: today, these are most visible in benchmarks, but the assumption is that these will feed through into real-world application performance in the future.
A more theoretical concern is that 32-bit pointers only allow you to address 4GB of memory. On Raspberry Pi 4, we use the ARM Large Physical Address Extension (LPAE) to access up to 8GB of memory, subject to the constraint that any process is limited to accessing 3GB. Some use cases will benefit from being able to allocate the entire memory of an 8GB Raspberry Pi 4 from a single process.
33,000 Members on the Adafruit Discord
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 33,000 humans this week. Thank you! Adafruit believes Discord offers a unique way for Python on hardware folks to connect. Join today at https://adafru.it/discord.
See the announcement post with a chart of the server growth – Adafruit Blog.
A CircuitPython Pull Request to Add Split Screen Capabilities
kmatch98 has a new PR in (#5954) that exposes the CircuitPython REPL’s display group elements, allowing relocation of the REPL and making thinks like split screens possible without breaking the existing displayio structure – Twitter and GitHub.
Recorded video livestream of Tim/@foamyguy demonstrating this capability – YouTube.
Piku: a small command line utility for managing CircuitPython projects
Piku is small command line utility for managing CircuitPython projects. With Pikuyou can make creating a CircuitPython project, installing packages, deploying, and connecting to a CircuitPython device easy to do from the command line – Adafruit Forums, PyPI and GitHub.
I am sure there are other tools out there but I tried to pattern piku after other package management tools i had used like poetry and npm. The tool makes it easier to create a project, add modules from the official and community bundles, deploy the project to the device, and connect to the device’s serial port. I hope that in the future it will have similar functionality to other similar tools like poetry and npm. I have tested it lightly and it seems to work on Ubuntu and Windows and it may work on macOS (I don’t have one to test on).
Piku can be installed using pip. I only have a few devices to test on, but it has really helped me iterate faster on my personal project. I hope it is helpful to someone else who likes a command like workflow like me. I would also love help improving it if anyone feels so inclined. You can check the docs on pypi or github. Feedback welcome.
CircuitPython2022 Wraps Up – Thank You
Scott posts: “Thank you to the 24 folks who posted for #CircuitPython2022! Thank you for all of the different ideas. I hope that folks collaborate to make these ideas a reality. Thank you to those whose ideas have been guiding principles over the years. We wouldn’t be here without you.”
“As Kattni points out in her #CircuitPython2022 post, don’t hesitate to let us know what you’d like to see from CircuitPython and the community throughout this year. Feel free to give us more ideas on the Adafruit Discord, Adafruit CircuitPython forum and CircuitPython issue tracker” – Adafruit Blog.
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott streams his work on Bluetooth Low Energy (BLE) GATT on ESP32-S3.
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:
Catch all the episodes in the YouTube playlist.
The CircuitPython Show
The CircuitPython Show is a new independent podcast, hosted by Paul Cutler, focused on the people doing awesome things with CircuitPython. Each episode features Paul in conversation with a guest for a twenty to thirty minute interview – CircuitPythonShow, Blog Post and Twitter.
Listen to the Season 1 Trailer now – CircuitPython Show
The first episode is scheduled to air on March 1st and will feature an interview with Kattni Rembor as the first guest.
Late Breaking: Intel Corporation has joined RISC-V International
Intel Corporation has joined RISC-V International at the Premier membership level – RISC-V.
“Intel is pleased to join the community in RISC-V International. A rich open source software and hardware ecosystem is critical for accelerating the growth and adoption of RISC-V and fully unlocking value for chip designers. Intel is delighted to support the growth of the free and open RISC-V instruction set architecture. We look forward to optimizing IP for Intel process technologies to ensure that RISC-V runs best on Intel Foundry Services (IFS) silicon across all types of cores, from embedded to high-performance.”
Project of the Week
We expect a number of microcontroller ports with similar looks to the New York Times Wordle game. Here is one by Michael Lacock done on an Adafruit CLUE board in CircuitPython 7 with or without a keyboard – GitHub.
Upgrade your CircuitPython Version on the Raspberry Pi Pico Without Access to the BOOTSEL Button
Upgrade your CircuitPython version on a Raspberry Pi Pico without access to the BOOTSEL Button – Rob Miles.
You can use a couple of Python statements to get your Pico to reboot into firmware mode so that you can drop in a new version of CircuitPython (or anything else). You can issue the commands down the terminal connection. I used the Thonny program which provides a REPL connection to my CircuitPython powered CheeseBox (or Crackers Controller).
This is the first command you type in. It tells your device to reset into UF2 mode next time it is reset.
This is the second command. It resets the device and makes it appear as as storage device into which you can load the firmware.
News from around the web!
Tom’s Hardware has released their list of the best RP2040 boards for 2022, all of which can run CircuitPython – Tom’s Hardware
Adafruit has released support for additional I2C sensors (such as the BME280 and DPS310) to Adafruit IO WipperSnapper, the no-code IoT interface for Adafruit IO. You can now pull data from these sensors straight into Adafruit IO in less than five minutes – Adafruit Blog.
A Word Game clone on Adafruit PyPortal in CircuitPython with a pop-up touch screen – YouTube.
Okay, physics time! Calculating vector using numpy (ulab module) in CircuitPython to bounce a ball at the round edge of the screen – Twitter.
Note: Some ball ghosting in the GIF above is due to conversion from the original video.
It’s like raaaaaaiiiiiin on your ESP! This little demo shows that MicroPython now works very nicely with the NeoPixels on the bedazzled ESP32-C3, thanks to a speedy assist [email protected]_trentini and @damienpgeorge – Twitter.
Another refactored FeatherWing project. This time it’s an I2C brushed DC motor controller with an analog current monitor on a perfect purple Oshpark board. A custom device driver for CircuitPython is already waiting in the wings – Twitter.
Beat box with CircuitPython on an Adafruit Circuit Playground Express – Twitter.
I’ve been using the PMSA003I (for air quality monitoring). I log to the web via an ES32-S2 running CircuitPython. I can’t speak to the absolute accuracy, but I see PM spikes when I cook that make sense to me. I like that it is quiet – Twitter Thread.
Cytron Maker Nano RP2040 Review on Tom’s Hardware, with tests in MicroPython and CircuitPython – Tom’s Hardware.
Raspberry Pi Pico connected to a TM1637 4-digit LED display, programmed in MicroPython – RP2040 Learning.
Tiny Core Linux 13.0 – full Linux desktop in 22 MB. – The Lunduke Journal of Technology.
Handcrafted 3D Icons, Fully Customizable Online. Free for commercial and personal use – vertex.im.
7 Steps to Mastering Machine Learning with Python in 2022 – KD Nuggets.
Reso: A visual circuits programming language using pixels – GitHub.
A split keyboard with Adafruit KB2040 microcontrollers using PRK firmware based on PicoRuby – Twitter.
The creator of Python likes Python on Hardware – Twitter.
This is a Django cheat sheet I created for myself for when I create a new Django project – LinkedIn.
Open Source Alternatives has 200+ curated open source alternatives to tools that businesses require in day-to-day operations – BTW.
PyDev of the Week: Batuhan Taskaya on Mouse vs Python.
The new ESP32-S3 boards from Unexpected Maker – esp32s3.com.
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 three new boards added!
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!
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 344!
Here’s this week’s updated CircuitPython libraries:
What’s the team up to this week?
What is the team up to this week? Let’s check in!
I fixed some Espressif I2C issues last week, and also fixed a problem that caused SAMD builds to crash immediately.
We wanted to be able to host free versions of “a certain word game” on CircuitPython boards, and discovered there was no simple HTTP web server written for ESP32-S2 boards. I found an initial version someone had created and rewrote it to be more general. The code will be a library and will be shown in a guide soon.
I am researching how to provide async versions of HTTP clients and servers. There is a nice library,
aiohttp, used with CPython, but it is large and comprehensive. I am looking at some other smaller libraries, such as
httpx, and will see whether we can created a limited
adafruit_ version of one of these, as we did with
While my main work continues to be on floppy drives, I’ve put in a few pull requests to CircuitPython as well. One will update the “SDK” we use for RP2040 boards to the current version, and another starts to add “mdns” support to the Espressif port. This latter feature will allow you to use a hostname to connect to an Espressif device (e.g., qtpy.local) instead of an IP address. Hopefully this will dovetail with some work that Dan has been doing to create a CircuitPython web server.
This week I published the Arcade QT guide. This board has been out for a bit, but other things took priority over the guide. Folks have been asking for examples, so I put together the guide this week. It has everything you need to get started with your Arcade QT board. Check it out!
This week I hit my first bump on the BLE on ESP journey. The NimBLE stack that the ESP-IDF uses relies on defining all of the services to serve up front. On nRF and in our API, we’re able to add services after the stack has started. This works well for CircuitPython where the user code can add more Services as needed. Thankfully, NimBLE is open source and we can modify it to handle adding Services later.
I’ll start on that work after I test and propose the other changes I made this week. They lay out much of the code needed to talk to services served by the other device. This is known as the client role. It will allow CircuitPython to connect to other devices and read the data that they make available. Doing the work in stages is a best practice because it 1) minimizes how much code is on one person’s version of CircuitPython and 2) allows others to use and test the newer code.
PyCon US 2022 planning is underway. The team is planning to host the event in person with an online component. April 27, 2022 – May 5, 2022. Head over to the PyCon US 2022 website for details about the conference and more information about the sponsorship program – PyCon Blog.
PyCon Italia is the Italian conference on Python. Organised by Python Italia, it is one of the more important Python conferences in Europe. With over 700 attendees, the next edition will be June 2-5, 2022 – Ticket Registration.
SciPy 2022, the 21st annual Scientific Computing with Python conference, will be held in Austin, Texas, USA from July 11-17, 2022. The annual SciPy Conference brings together attendees from industry, academia, and government to showcase their latest projects, learn from skilled users and developers, and collaborate on code development. The full program will consist of 2 days tutorials (July 11-12), 3 days of talks (July 13-15) and 2 days of developer sprints (July 16-17) – SciPy 2022.
Send Your Events In
As for other events, with the COVID pandemic, most in-person events are postponed or cancelled. If you know of virtual events or events that may occur in the future, please let us know on Twitter with hashtag #CircuitPython or email to cpnews(at)adafruit(dot)com.
20220207 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.
jobs.adafruit.com – Find a dream job, find great candidates!
jobs.adafruit.com has returned and folks are posting their skills (including CircuitPython) and companies are looking for talented makers to join their companies – from Digi-Key, to Hackaday, Micro Center, Raspberry Pi and more.
Job of the Week
Arduino Uno R3 Code Composite for Water Control – MB Associates – Adafruit Jobs Board.
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.
Codecademy “Learn Hardware Programming with CircuitPython”
Codecademy, an online interactive learning platform used by more than 45 million people, has teamed up with Adafruit to create a coding course, “Learn Hardware Programming with CircuitPython”. The course is now available in the Codecademy catalog.
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.