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). Over 9,430 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!
Proposed Python Standard Library Deprecations
Python has often been touted as a “batteries included” language because of its rich standard library that provides access to numerous utility modules and is distributed with the language itself. But those libraries need maintenance, provided by the Python core development team. Some of the modules are not being maintained any longer and they likely are not needed by most Python users.
CircuitPython 7.2.3 Released
CircuitPython 7.2.3, the latest bugfix revision of CircuitPython, was released and it’s the new stable release – GitHub.
Notable fixes to 7.2.3 since 7.2.0
- Espressif I2C pull-up detection fix.
- SAMD21 auto-reload reliability. In addition, for auto-reloads on any board, the program will stop more quickly, and will wait 0.75 seconds (was 0.5 seconds) after the last filesystem write before restarting.
- Update known certificates.
countioproblems when used outside of code.py.
from __future__ importannotations to allow program compatibility with CPython.
- Fix spurious
ReloadExceptionswhen in the REPL.
- Improve auto-reload logic to avoid triggering multiple reloads, especially on RP2040 and macOS.
_bleioand remove frozen
PortalBaseon Adafruit MatrixPortal.
False Advertising Claiming Software is Open Source and When it is not?
The Open Source Initiative is claiming that a recent US Court of Appeals for the Ninth Circuit recently affirmed a lower court decision concluding what we’ve always known: that it’s false advertising to claim that software is “open source” when it’s not licensed under an open source license. This would be huge news in the Open source ecosphere – Open Source Initiative.
BUT, another article states the Open Source Initiative’s blog post on the Neo4j appeal is self-serving, misleading, and wrong.
The court didn’t legally decide anything about the meaning of “open source”. It didn’t define any new terms of art legal-system-wide. It didn’t even make precedent. The first page of its decision says “NOT FOR PUBLICATION” at the top and “This disposition is not appropriate for publication and is not precedent except as provided by Ninth Circuit Rule 36-3” at the bottom – /dev/lawyer.
The legal precedents in the Open Source field apparently continue. In choosing Open Source products and software, it’s best to look at the license provided for the materials and see if that fits your needs. Licenses like MIT provide much broader use than GNU or Creative Commons.
Power Cycling a Whole Museum of Computers With Feather
Flicking a circuit breaker to power cycle hundreds of desktop computers inside interactive museum exhibits is hardly ideal. Tasked with finding a solution, Jeff Glass mixed off-the-shelf UPS (uninterruptible power supply) hardware, an Adafruit Ethernet FeatherWing and CircuitPython on a Feather ESP32-S2 to get computers shut down and restarted properly – Adafruit Blog, Jeff Glass and Hackaday.
Raspberry Pi Users Urged to Change Default Passwords
Security experts have called on Raspberry and Linux users to change default passwords on their machines as new data revealed the extent of bot-driven attempts to hijack systems. It found that 70% of web traffic was comprised of bot activity, with default credentials the most common passwords used by bad actors to attempt access.
Of the top failed default credential login attempts targeting the honeypots, Linux username and password “nproc” was in second, and the combo of “pi” and “raspberry” came eighth – Adafruit Blog and Infosecurity Magazine.
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 streams work on porting Timestamper and Vectorio fun.
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 a new 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 a twenty to thirty minute interview – CircuitPythonShow, Blog Post and Twitter.
The third episode aired on March 15th featuring an interview with Professor John Gallaugher. The fourth episode airs today March 22th with Tod Kurt (above) talking about microcontrollers, Arduino, CircuitPython, synths and more – Show List.
TammyMakesThings is Streaming CircuitPython
Community member and CircuitPython contributor Tammy Cravit is streaming on Twitch. Her stream focuses on electronics, coding and making, with a focus on CircuitPython. The first few streams have been working on a MacroPad-based MIDI controller, and she’s got lots of other project ideas in the works. An exact schedule for her streams is still being worked out, but she’s targeting 2-3 streams per week. Check it out and follow now to be notified of future streams – Twitch.
Project of the Week
Bradán Lane is developing a multi-NeoPixel board with many possibilities. It uses 310 WS2812C 2020 LEDs and a Lolin ESP32-S2 on the back. It consists of four concentric rings and two 5×7 square matrices within the center.
It runs CircuitPython. Anticipated demos programs will be a clock, a chess timer, and a reaction game – Twitter.
News from around the web!
Sensor Playground keeps track of indoor air quality. It supports either an ESP32 DevKit or an Adafruit Feather module to provide processing power, and provides sockets for a bunch of sensors, conveniently wired with power and SPI or I2C – Hackaday, Hackaday.io and GitHub.
A Pico TKL with a working OLED to display status information instead of individual LEDs like typical keyboards – Twitter.
Playing with CircuitPython vectorIO shapes ands creating a circular bar that grows using circles and polygon masks – Twitter.
Wired up an Adafruit PDM microphone and tested it against the MAX9814; The difference is amazing (smoother data) – Twitter.
Tom’s Hardware Pimoroni Badger 2040 Review: A Wearable Screen – Tom’s Hardware.
Badger 2040 3D printed case – Twitter.
A CircuitPython version of Pimoroni Badger 2040 battery voltage and contact QR code swap with picture – Twitter.
Making progress on my CircuitPython powered album art display using an Adafruit PyPortal. Now displays a Winamp player over the album art. (Featured: Best Coast’s Always Tomorrow). Next: Fix artifacts in Winamp image and add text for the artist / album in the Winamp player – Twitter.
A DC Motor Tester apparatus using an Adafruit PyBadge and some custom PCBs from Oshpark for test+brake motor control and to read the torque converter load cells and programmed in CircuitPython – Twitter and YouTube.
MicroPython Pride Pin – Twitter.
Project Jupyter builds tools, standards, and services for many different use cases, including Jupyter Notebook for Python – jupyter.org.
The Wemos LOLIN C3 Mini is a pin-compatible RISC-V alternative to the earlier D1 Mini and it is MicroPython compatible – Hackster.io.
Stemma QT slot – a 3D printed slot for adding swappable sensors to your projects – hackaday.io.
PyDev of the Week: Kalob Taulien on Mouse vs Python
Joey Castillo is designing a new ultra-low power LCD FeatherWing – Twitter.
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 two 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!
There are no new Python on hardware related Learn guides from Adafruit this week. Keep an eye out for more next week!
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 349!
Here’s this week’s new CircuitPython libraries:
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!
After releasing CircuitPython 7.2.1 on Monday of last week, we found another problem with auto-reload, released 7.2.2 on Tuesday, and then found yet another problem on Wednesday and released 7.2.3 the same day. There is one remaining problem, but it is less pervasive. Our aim is not to make a new release every day, even if it keeps CircuitPython in the news (lol), but when we must, we do. We also need to thoroughly test a fix instead of just making sure it fixes the original problem. These particular bugs we fixed don’t lend themselves to easy automated testing, but we should think about how to do that.
Thanks to some recently-merged changes in fluxengine, reading and writing Apple ][ disks on a TEAC floppy drives and the Adafruit Floppy prototype board is working really well. I posted up a video showing me use a disk written this way on a real Apple //e. Check it out on the Adafruit YouTube Channel!
This week, I’ve been working with Liz to get her spun up on creating new product guides. She’s been picking everything up super quickly and is doing a fantastic job! She’s already put at least two new guides into moderation. Next up is showing Liz how to do the guide updates for boards for which we’ve released a STEMMA QT revision. I’m sure she’ll make quick work of this as well!
I started a personal-but-work-tangential project, porting a CircuitPython Timestamper written by Tim for MacroPad to the NeoKey FeatherWing. In doing so, I found a massive bug in CircuitPython 7.2.0 stable. That’s since been fixed, and a new release made. Glad we figured it out quickly!
This past week, I worked on a bunch of CircuitPython code including rewriting some Google Calendar examples for the MagTag and PyPortal so that it works on the latest version of CircuitPython. I also wrote some examples for using the new 1.47” and 1.9” TFT displays.
I hosted the CircuitPython weekly meeting for the second time this week. It’s been great to be able to step in to the rotation of folks that host. I noticed that I’ve begun to start feeling more comfortable and natural while hosting. I went over the process for applying patches to most/all library repositories with Kattni and Eva. I also streamed the first Deep Dive w/ Tim episode this week filling in while Scott is away. On the show I worked on creating async based displayio examples.
This last week, I’ve been switching between working on the ESP32-S3 and fixing/improving autoreload on CircuitPython. On the ESP32-S3, I took a look at some sleep issues. One issue was fixed with an ESP IDF update and the other appears to be an existing IDF bug, so I’ll file an issue for it. I then had an idea for a web workflow that uses MDNS to discover local CircuitPython devices. I’m currently adding MDNS support for testing out this idea. I’ll soon be on paternity leave, so we’ll see how far I get.
This was my first week full-time with Adafruit! I’ve been working with Kattni to learn how to write the new product Learn Guides. We started with the VL53L4CD STEMMA board. I’ve also been working on a video mixer with Processing on a Raspberry Pi, which will have hardware controls with Blinka.
PyConDE and PyData 2022 will be held in Berlin, Germany from April 11 – 13, 2022 at the Berlin Conference Center – PyCon DE.
PyCon US 2022 planning is underway. The event is in-person with an online component. April 27, 2022 – May 5, 2022 in Salt Lake City, Utah USA. Head over to the PyCon US 2022 website for details about the conference and the schedule (new) – PyCon Blog.
PyCon Italia is the Italian conference on Python. Organized 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.
EuroPython 2022 will be held on 11th-17th July 2022 and it will be both in person and virtual. The in-person conference will be held at The Convention Centre Dublin (The CCD) in Dublin, Ireland – EuroPython 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.
20220321 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.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 33,675 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.