View this email in your browser.
Welcome to the latest Python on Microcontrollers newsletter! This week features a number of talks and online resources. The community for Python on Hardware is growing and it’s wonderful to see. And the projects this week are spectacular. Enjoy this week’s issue.
We’re on Discord, Twitter, and for past newsletters – view them all here. If you’re reading this on the web, subscribe here.
Floppy Interfacing Hack Chat with Adafruit and Hackaday.io
Adafruit’s Limor “Ladyada” Fried, Jeff Epler, and Phillip Torrone will host the Hack Chat on Wednesday, February 2 at noon Pacific. Time zones got you down? Try the handy time zone converter.
When a tiny fleck of plastic-covered silicon can provide enough capacity to store a fair percentage of humanity’s collected knowledge, it may seem like a waste of time to be fooling around with archaic storage technology like floppy disks. With several orders of magnitude less storage capacity than something like even the cheapest SD card or thumb drive, and access speeds that clock in somewhere between cold molasses and horse and buggy, floppy drives really don’t seem like they have any place on the modern hacker’s bench.
Or do they? Learning the ins and out of interfacing floppy drives with modern microcontrollers is at least an exercise in hardware hacking that can pay dividends in other projects. A floppy drive is, after all, a pretty complex little device, filled with electromechanical goodies that need to be controlled in a microcontroller environment. And teasing data from a stream of magnetic flux changes ends up needing some neat hacks that might just serve you well down the line.
So don’t dismiss the humble floppy drive as a source for hacking possibilities. The folks at Adafruit sure haven’t, as they’ve been working diligently to get native floppy disk support built right into CircuitPython. To walk us through how they got where they are now, Ladyada, Jeff, and PT will drop by the Hack Chat. Be sure to come with your burning questions on flux transitions, MFM decoding, interface timing issues, and other arcana of spinning rust drives.
More information – hackaday.io.
Apple Finally Removing Python 2 in macOS 12.3
Apple will no longer bundle Python 2.7 with macOS 12.3, according to developer release notes for the upcoming software update. Python 2 has not been supported since January 1, 2020 and no longer receives bug fixes, security patches, or other changes – MacRumors and Apple Release Notes.
The Python Software Foundation has installers for current and many previous supported versions of Python – PSF.
See the famous xkcd.com cartoon about the morass of Python versions which tended to happen – xkcd.
Golioth introduces CircuitPython SDK for Cloud Data
What if you could open a text document on a device, write code, click save, and everything magically starts working? This is the promise of high level programming languages like CircuitPython. Golioth Labs now has an SDK to utilize the language’s fast prototyping capabilities. In addition to Golioth’s cloud functions, it’s super easy to pass data from a networked device up to the Golioth cloud. Click save to stream IoT device data to the cloud – Golioth.
The Pi Cast Celebrates 10 Years of Raspberry Pi: New Episodes With Ladyada, Eben Upton, and More
The Pi Cast Celebrates 10 Years of Raspberry Pi: New Episodes With Ladyada, Eben Upton, and others. Adafruit’s Limor Fried will be on a livecast on February 15, 2022 – More on Tom’s Hardware and YouTube.
Here is additional #CircuitPython2022 feedback received since last week:
See the wrap-up post coming soon.
Using an ESP32-S2 and CircuitPython to Teach Web Security
Use an ESP32-S2 and CircuitPython to Teach Web Security.
I made a vulnerable web application anyone can run on an ESP32-S2 board to learn about username enumeration and password brute-forcing.
See more – Twitter and source plus instructions – GitHub.
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott streams his work on ESP32-S3 Bluetooth Low Energy (BLE).
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.
New: listen to the Season 1 Trailer now – CircuitPython Show
Project of the Week
Blitz City DIY explores MIDI Over UART with Arduino and CircuitPython – Twitter and YouTube.
I went on a MIDI over UART journey across programming languages and microcontrollers while beginning to hack the Oskitone Scout synth
News from around the web!
Wrapped up the dual load cell espresso scale project. Coded in CircuitPython on an Adafruit RP2040 Feather/TFT Wing and all three Adafruit PyPortal displays. Touchscreen control of tares and alarms. Settings are stored in non-volatile memory thanks to Foamyguy’s library. Custom Oshpark ADC FeatherWing – Twitter.
How to display your own custom image on a small OLED screen with both MicroPython and CircuitPython – gurgleapps.com and YouTube, via Twitter.
Students at the Saigon South International School (SSIS) coded a control system for the Sphero RVR in CircuitPython on an Adafruit Metro board. The ultrasonic sensor reads the distance and the robot moves forward/backward to keep it distant – Twitter.
Adding MIDI to an old organ pedal keyboard with CircuitPython – Twitter.
Repurposing a SHA2017 hacker camp badge into a solar energy and power consumption monitor with ESP32 and MicroPython – Project Gus and Hackaday.
I received a Seeedstudio XIAO BLE Sense! Using the 6-axis inertial measurement unit (IMU) to measure yaw, pitch & roll. Using just yaw to “open & close” the Fibonacci64 Nano like an aperture. All in Arduino so far, will try CircuitPython soon – Twitter and GitHub.
A talking Lunar New Year box. Great for dispensing treats (like tiger cookies). Made with CircuitPython and an Adafruit Feather RP2040. Wishes you HLNY in Mandarin, Cantonese, Vietnamese, Korean, and American-accented English – Twitter and Instructables.
MagTag eInk light sensor with CircuitPython 7 – GitHub.
Using an ESP32-S2 and an Adafruit IS31FL3741 LED display to visualize WiFi signals locally – Twitter.
Educator teaching w/CircuitPython? Or following CircuitPython School? Each Tuesday after class, professor John Gallaugher posts keynote slides with challenge/solutions used in his intro course. If useful, have at it and let him know). Cheers! – Google Drive via Twitter.
Plotting colorful circles with CircuitPython on GC9A01 round LCD + Feather RP2040 and CircuitPython – Twitter.
Pimoroni achieving a 10% speedup in MicroPython with some optimization – Twitter and GitHub.
A CircuitPython and Circuit Playground Bluefruit progress indicator – Twitter.
Secrets of MicroPython: Fun with NeoPixels! – Bhavesh Kakwani.
How To Make Your Own Pedal Stream Controller with Raspberry Pi Pico and CircuitPython – Tom’s Hardware.
Macro Key HID Keyboard Mouse GamePad Emulator with CircuitPython – YouTube (German).
Thanks to Lovely folks on the Adafruit Discord for the assist with the firmware yesterday. Keycaps came in and my PBGherkin is up and running. CircuitPython with KMK firmware – Twitter.
How to Make Pico Pong with a Raspberry Pi Pico and MicroPython – YouTube and GitHub.
Hand gesture-controlled Atari 2600 – Raspberry Pi Blog and YouTube.
Build a Weather CLI App With Python – Real Python via Twitter.
The power of Python descriptors – Piccolo.
while true: – Twitter.
PyDev of the Week: Sundeep Agarwal on Mouse vs Python
CircuitPython Weekly Meeting for January 31, 2022 (notes) on YouTube
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Multilingual blink for Raspberry Pi Pico.
Unexpected Maker has a merged pull request for their new TinyS3, FeatherS3 and ProS3 boards – GitHub.
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!
Circuit Playground Bluefruit BLE Heart Rate Pendant with CircuitPython from Isaac Wellish
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!
For the latest libraries, download the Adafruit CircuitPython Library Bundle. For the latest community contributed libraries, download the CircuitPython Community Bundle.
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!
This week I continued working on presenting multiple filesystems over USB Mass Storage in CircuitPython. I haven’t yet found a way to do this dynamically that works well on Windows or macOS. If we can’t figure out a way, we’ll provide an API to reset the USB connection, and/or allow you to request in advance that specific filesystems be mounted when code.py starts.
I debugged an ESP32-S2 deep sleep problem that turned out to be a hardware issue. I’m continuing to debug other peripheral issues that have been reported recently.
Again, my work has been behind the scenes on floppy drive stuff. We’re learning more about the tools for converting among various floppy drive archival formats, and also I started working on using the PIO peripheral in the Raspberry Pi RP2040 microcontroller, which enables more accurate reading & writing of floppy disks.
One big milestone was that with our work in progress floppy code, we were able to preserve a classic Commodore 64 game, Archon, including emulating the original copy protection system on the floppy disk, and make the result directly playable by anyone on the archive.org website. Check out last week’s Show & Tell program on YouTube if you want to hear more about that.
This week I’ve been working on finishing up the TFT Feather guide. I took a detour to get Arduino support added to the various RP2040 board guides.
Once that’s done, I’ll be looking at creating some new groups on the Adafruit Learn System. Groups are a set of related guides that you can find in one place. I think a Getting Started with CircuitPython group will be a great place to start. Keep an eye out for that and more coming soon!
This last week I’ve been focused on adding Bluetooth Low Energy (BLE) support to the ESP32-S3. I’ve made good progress and can now scan for advertisements from other devices. I’m working on getting that merged as a starting point.
At the same time, I’m working to add advertising support so that the device can advertise to others. This segues nicely into basic connection functionality which will come after that. I’ve been thinking of a number of projects I’d like to do so I’m motivated to get things going.
The next MicroPython Meetup in Melbourne will be on February 2nd (pushed a week due to Australia Day) – Meetup. See the blog for past notes.
PyCascades is a regional PyCon in the Pacific Northwest, celebrating the west coast Python developer and user community. Our organizing team includes members of the Vancouver, Seattle, and Portland Python user groups. DATES ANNOUNCED! February 5th-6th, 2022 The conference will take place on Saturday and the first half of Sunday, with the post-conference sprints following that on Sunday afternoon. After three amazing in-person conferences and an engaging online conference, we are ready to do it again! – PyCascades 2022.
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.
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.
CircuitPython’s stable release is 7.1.1 and its unstable release is 7.2.0-alpha.1. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20220131 is the latest CircuitPython library bundle.
v1.1.18 is the latest MicroPython release. Documentation for it is here.
3.10.2 is the latest Python release. The latest pre-release version is 3.11.0a4.
2,783 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.
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
Creative Engineer/Fabricator – Mechatronics – Adafruit Jobs Board.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 32,941 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.
Join the Adafruit Discord or post to the forum if you have questions.