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,667 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! This is the week for CircuitPython Day – it’s on Friday! Check the schedule for all the events and plan on attending the ones you want. Your editor will be posting on social media throughout the day, informing folks of what’s coming up and blogging completed video streams after they’ve occurred for later viewing.
Python continues to dominate the programming language usage statistics, jumping 2% last month.
Check out all the great content this week – I’m sure you’ll see something of interest. And please pass to your friends and colleagues – they may subscribe to get their own copy every Tuesday by subscribing at adafruitdaily.com.
CircuitPython Day – Friday August 19th – Updated Schedule
Friday August 19 (8/19/2022) is CircuitPython Day 2022, being designated the snakiest day this year! The day highlights all things CircuitPython and Python on Hardware.
Please follow the latest calendar of events on the Adafruit Blog.
Current Schedule (all times are are US Eastern)
- 11:00am ET – CircuitPython Day Introduction
- 11:10am ET – Celebrating Code & Community: A CircuitPython Day Panel Discussion
- 12:50pm ET – CircuitPython Development Sprint Intro Video
- 1:00pm ET – CircuitPython Project Build with Maker Melissa
- 2:00pm ET – Special Edition CircuitPython Themed Show and Tell
- 3:30pm ET – CircuitPython 8 Preview
- 4:00pm ET – CircuitPython Day Chat with Kattni, Jeff and Dan
- 6:00pm ET – Foamyguy CircuitPython Day Game Jam Stream
- 1:00pm-5:00pm ET – CircuitPython Development Sprints (no video content)
11:00 AM EDT/5:00 PM CEST – Reimagining IoT Deployments with CircuitPython
Adafruit’s CircuitPython has helped open up the IoT and place it within reach of developers of all types. Join Blues Wireless on CircuitPython Day as they look at:
- Getting Started with CircuitPython and Wireless IoT
- Walking Through a Real World CircuitPython-based IoT Project
- Remotely Updating CircuitPython Firmware with Cellular IoT(!?!)
Register for this particular event here.
6:00PM – 9:00 PM ET – CircuitPython Night at i3Detroit
Come join for all things CircuitPython:
- CircuitPython demos
- Getting Started with CircuitPython
- Q&A and project help
- Tour a local Makerspace in Ferndale, MI
Location: i3Detroit, 1481 Wordsworth, Ferndale, MI 48220
For more information about the space, visit i3Detroit.org.
Python Gains 2%, Remains Top Programming Language
New Browser-based micro:bit Python Editor Launching in September
The new micro:bit editor runs in a browser, so it’s quite different to Thonny or Mu. It will be launching in September, but the beta is online and can be used now – Twitter Thread and Beta on the Web.
The Azure Embedded Wireless Framework APIs for IoT
The Azure Embedded Wireless Framework simplifies the development of internet and cloud connectivity for embedded device software by providing a defined interface for wireless network adapters, host interfaces, platform adaptations, and software stack extensions through a set of APIs.
The goal is to provide a standard framework for writing applications and controlling wireless network adapters (cellular, WiFi, …) while abstracting a driver interface for hardware vendors to plug in modules with self-developed drivers – GitHub and Adafruit Blog.
Microsoft Emoji and Emoji Tools now Open Source
Looking for open source emojis for your project? Microsoft has released Fluent Emoji, a collection of familiar, friendly, and modern emoji under MIT License – GitHub.
Microsoft open sources its 3D emoji to let creators remix and customize them – The Verge.
Why Microsoft is Excited to share their Emoji – Medium.
Linux Kernel 6.0 Release Candidate Out
The merge window for Linux 6.0 is now officially closed and the first Release Candidate (RC) milestone is ready for testers and bleeding-edge users who want an early taste of what’s about to be included in the final release, which is expected in early October 2022.
According to Linus Torvalds, all the big changes have been merged and Linux kernel 6.0 looks to be another fairly sizable release with another great set of improvements – 9to5Linux.
Ubuntu 22.04.1 LTS is Out
For a fresh installation from scratch, you can download the ISO image of Ubuntu 22.04.1 available on the official page.
Meanwhile, the development of the next Ubuntu version, 22.10 “Kinetic Kudu,” is underway. So if you want to give it a try, download the daily build from here.
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 CircuitPython library memory and size quantification.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – 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 short interview – CircuitPythonShow and Twitter.
The show is off this week. Last week featured Josh Lowe discussing Edublocks and Brent Rubell joins in the next episode and talks Internet of Things – Show List.
Projects of the Week: Over and Under the Sea
SearchWing maritime search and rescue drones
SearchWing is a German nonprofit organization which builds and flies drones for maritime search and rescue (SAR). The drones are built on Raspberry Pi hardware and software. Compute Module 4 is the brains, and dual Raspberry Pi Camera Modules are the eyes of each drone – Raspberry Pi News.
A small working submarine with LEGO and Raspberry Pi
This radio-controlled submarine is smart enough to maintain a steady depth and keep a set distance from the bottom of the body of water it’s dropped in. Programmed in Python – Brick Experiment Channel, Raspberry Pi News and Adafruit Blog.
News from around the web!
A headband with a surprise LED matrix hidden inside! All programmed in CircuitPython.
“Made with Adafruit NeoPixel strips, an Adafruit QT Py and a Lipo BFF! The diffusion layer is some black tulle wrapped in scrunched-up layers, and I was really pleased with how it turned out” – Twitter Thread.
My little picostepseq MIDI sequencer is getting better. Now you can save/load sequences, while running and without missing a beat – Twitter.
“I created the PiDial to use a Raspberry Pi to control my home theater receiver over the network. I’m going to rebuild it in CircuitPython because I can now talk to my receiver using CircuitPython! I’ll also have to design a new 3D printed enclosure. And add some NeoKeys” – Twitter.
Maker and developer Alperen Akküncü has created a custom PCB that turns the Raspberry Pi Pico into a data acquisition (DAQ) tool known as the PlainDAQ, a simple, precision 4-channel oscilloscope and a single channel function generator – Tom’s Hardware and GitHub.
How To Make A Raspberry Pi Pico W Web Server with MicroPython – Tom’s Hardware.
Using a SeedSigner Waveshare display hat with an ESP32-S2, custom MicroPython firmware, and LVGL UI/rendering library – Twitter.
“I just made a 8 bit binary counter with Raspberry Pi Pico. I wanted a fast and simple project, I did not find zfill in MicroPython, so I went around and wrote a way complicated code for this one” – Twitter.
Adding auditing to pip – lwn.net.
PyTechBrain: A platform introducing students to the field of IoT – Internet of Things, fully compatible with the new core curriculum – PyTechBrain (Polish).
How to choose the right Python concurrency API – the Python standard library offers 3 concurrency APIs – SuperFastPython.
Raspberry Pi users can now look forward to using the previously unsupported Fedora operating system, which will now be fully operable on the Raspberry Pi 4, with approval granted from The Fedora Engineering and Steering Committee (FESCo) in the first week of August 2022 – techradar.
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? A first test of CircuitPython on ESP32 web workflow.
Three small open source programmable mechanical keyboards: ANAVI Macro Pad 10, ANAVI Knobs 3 and ANAVI Knob 1. Featuring Seeed XIAO RP2040 with USB-C and the Raspberry Pi RP2040 microcontroller. Powered by the advanced, but easy-to-use KMK open source firmware written in CircuitPython – CrowdSupply.
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 progress.
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 362!
Here’s this week’s new CircuitPython libraries:
Here’s this week’s updated CircuitPython libraries:
- Every library was updated this week!
What’s the team up to this week?
What is the team up to this week? Let’s check in!
I fixed about half a dozen issues for the 8.0.0 release, and am continuing to work on more. As Scott mentions below, we’re making good progress knocking off the remaining issues.
The camera functionality I’ve mentioned in a couple of recent reports has been merged. This code is working really well on the ESP32-S2 and ESP32-S3, which was the main goal. It’s also enabled for the original ESP32, but there seem to be some reliability problems. Overall, it’s a very nice step forward in how CircuitPython can work with cameras on Espressif microcontrollers.
I was also learning for myself about asyncio, and found a small change to the “core” which can greatly increase the efficiency of (for instance) waiting for keypad keypresses in one async task and doing other activities in another. This really needs a library (yet to be written) to package it all up, but I was happy to dig a little deeper and learn enough to do this.
This week I learned how to use the Nordic Power Profiler Kit II. Until now, the Low Power Usage templates in each of the microcontroller board guides have required Limor’s assistance to get the power usage graphs for each more. Now I can do that myself!
As well, we noticed we had missed doing the guide for the ESP32-S3 TFT Feather, so I’m currently working through that. We have, since the last time I did one of these, generated a lot of template content to include in microcontroller guides. So this one is taking a little longer than usual to ensure everything is filled in.
Finally, I’m starting to head into more CircuitPython Day coordination. Most of the planning phase is done – the schedule is, for the most part, complete, and everyone who is doing a livestream has provided info for me to include in the schedule blog post. Now it’s a matter of making sure everyone doing streams is all set to go, and coordinating with the folks who still need assistance. Check out the CircuitPython Day 2022 blog posts for updates, and more information. Any changes to the schedule will be updated in the post linked above. Looking forward to seeing you all there!
This past week, I’ve continued working on code.circuitpython.org and have been adding lots of features as well as revising dialogs and other UI elements. Coming up soon I’ll be making preparations for a CircuitPython Day livestream where I build a little project that runs CircuitPython. Be sure to catch in on 8/19/2022 at 1:00 PM EST.
I was out for vacation the majority of the week and did not do much with CircuitPython during that. The tinkering that I did do was starting an effort to measure library RAM size, and .mpy file size as a proxy for RAM. I created a new GitHub actions task that can output the .mpy file size for every PR branch automatically when it’s submitted. Next up is trying to measure the RAM usage on a physical device.
This past week has been a continuation of the web workflow and ESP bugfixing of last week. We’re trying to fix as many 8.0.0 bugs as we can so that we can get to a stable release. We started with 50 open issues and now have 41. We’ve fixed more than 9 but also found a few more along the way. Our goal is to have a beta of CircuitPython 8 before CircuitPython Day, August 19th.
I’ve removed two APIs that were being phased out in 7.x for removal in 8.x. One was ScanEntry.matches(all=) which was replaced by match_all= to avoid the Python keyword all. The other was removing the PWMOut argument to PulseOut. The ESP chips use a different hardware peripheral from PWM so the API didn’t fit for it. The new API takes in a pin and then lets the port decide exactly how to implement it.
I’ve also done a number of reliability fixes for the web workflow and for the title bar.
This is my last week before I go back on paternity leave so I’ll be fixing as many bugs as I can before I’m off. Hopefully there won’t be much more for Jeff and Dan to fix once I’m done.
This past week I worked on a guide for the new MMC5603 magnetometer and wrote code for the Two Way Telegraph with Analog Feedback Servos project.
I also did a PR and testing for the updated MCP4728 STEMMA board, which may ship with an MCP4728A4 IC. The IC is identical to the MCP4728 but has a different default I2C address. The PR to the CircuitPython library allows for both I2C addresses and the product guide has documentation for folks to change the I2C address in the code. Big thanks to Tekktrik for reviewing the PR since it was my first PR for a CircuitPython library.
Kiwi PyCon is the Python community gathered to meet and to mingle, to share experiences, to learn from each other, and to build lasting relationships. Friday the 19th to Sunday the 21st of August, 2022 all over New Zealand and beyond – Kiwi PyCon 2022.
Silicon Valley’s Premier Comic Con Returns! Featuring The Best In Pop Culture, Tech, Science, Makers, Artists, Cosplay, Gaming, Comic Creators, Authors & More! August 27-28, 2022 San Jose McEnery Convention Center – SiliCon.
PyCon UK will be returning to Cardiff City Hall from Friday 16th to Sunday 18th September 2022 – PyCon UK.
After two years in remote mode, Hackaday is very excited to announce that this year’s Hackaday Supercon will be coming back, live! Nov. 4th, 5th, and 6th in sunny Pasadena, CA for three days of hacks, talks, and socializing with the Hackaday community – Call for proposals and Hackaday.
Send Your Events In
As for other events, with the COVID pandemic, most in-person events are postponed or held online. If you know of virtual events or upcoming events, please let us know on Twitter with hashtag #CircuitPython or email to cpnews(at)adafruit(dot)com.
20220815 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
Build fun electronics projects and document them – Ohmify – Adafruit Jobs Board.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 35,276 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.
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.