View this email in your browser. Warning: Flashing Imagery
Welcome to the latest Python on Microcontrollers newsletter! Lots of great news this week relating to Python – new software releases, new projects and more.
We’re on Discord, Twitter, and for past newsletters – view them all here. If you’re reading this on the web, subscribe here. Here’s the news this week:
The Mu Python Editor version 1.1.1 Stable released
Mu 1.1.1, the latest stable release of the Mu Python Editor is finally available after a lengthy contribution and beta period. So many upgrades and translations – Adafruit Blog, Made With Mu Blog.
A special Making of Mu video is also available – YouTube.
CircuitPython 7.2.0 Released!
CircuitPython 7.2.0, the latest minor revision of CircuitPython, is out as the new stable release.
Notable additions to 7.2.0 since 7.1.1
- Continuing work on Raspberry Pi Broadcom board support.
- Espressif ESP32-S3 and ESP32-C3 support, including BLE.
- RP2040 PIO sideset support.
board.STEMMA_I2C() available on all boards with STEMMA connectors.
- Turkish translation.
Read more – Release Notes, Documentation and Adafruit Blog.
The Raspberry Pi Turns 10 Years Old
Almost exactly ten years ago today, thousands of people set their alarms, and woke on leap-day morning to discover that the Raspberry Pi Foundation had started selling Raspberry Pi computers. By the time the all-volunteer team gathered in the pub that evening for celebratory drinks, licensees Farnell and RS Components had taken over 100,000 orders (despite struggling to keep their websites online under the load). Raspberry Pi was on the road to becoming a bit larger than they’d planned. See the ten year anniversary post on the Raspberry Pi Computer – Raspberry Pi Blog.
And see this interesting video on the history of the Raspberry Pi, just released – YouTube.
CPython Bug Reporting Moving to GitHub
As part of a multiyear process, mainline Python (CPython) has slowly been moving its development infrastructure to GitHub. Now the bug tracking component is being migrated, led by Python’s developer-in-residence, Łukasz Langa. bugs.python.org will be retired from active service (but live as a read only history) if the migration is successful.
Langa noted that Python and GitHub were able to learn from the experience of the LLVM project, which migrated from Bugzilla to GitHub Issues back in December. That migration took 21 days, so the hope is that experience will lead to a smoother (and quicker) transition for Python (estimated to be 4 to 7 days).
The intent of of moves is geared toward attracting new developers who are familiar with and comfortable using GitHub.
The PyCon US 2022 Schedule is Out
PyCon US 2022 will be an in-person event this year with an online component. It will be held 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 which is now out.
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott talked more about the new CircuitPython USB Host API.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
Programming Note: Scott is planning to livestream on March 4th before going on paternity leave. Tim (@foamyguy) will be doing deep dives in the same time slot while Scott spends time with his family. The March 4th broadcast will feature them both.
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.
See the playlist – YouTube.
The first episode is scheduled to air today March 1st and features an interview with Kattni Rembor. Other announced guests include Les Pounder (Tom’s Hardware), Professor John Gallaugher (Boston College), Tod Kurt (a Maker), Rose Hooper (a Maker), and Scott Shawcroft (CircuitPython Lead Developer) – Twitter.
Project of the Week
At the Saigon South International School (SSIS), two Sphero RVRs, two VEX Robotics games, two boards (a Raspberry Pi Pico and an Adafruit Metro M4 Express) running the same CircuitPython program. Sensing is done via an HCSR04 Ultrasonic Sensor attached to the front of each vehicle.
Each step of the vehicle’s trip uses a different control algorithm from a library – GitHub via Twitter.
News from around the web!
Joey Castillo demonstrates reverse engineering LCD displays. He explains how to drive LCD segments in this manner, providing a CircuitPython example that demonstrates how it’s done – Hackaday and YouTube.
Listen to oral history on an old rotary phone – Raspberry Pi News.
Chris took inspiration from Dan Aldred for the Python code. It was fairly simple to link each MP3 recording to a specific phone number once the code dealing with the rotary dial was in place. The rotary dial connects to the Raspberry Pi via the GPIO pins. There’s one pin to manage the “pick up” switch, one to detect the start of dialling, and one that pulses according to the number you’re dialling.
Introduction to Software Development and Coding Challenges for Blind and Low Vision Coders course, including HTML, ARIA, and Python, while using assistive technology (AT) – American Printing House via Twitter.
NEUTRINO2周年 is a DJ controller that can play Sakanaction’s Shin Takarajima endlessly using NEUTRINO and CircuitPython – Twitter.
Quick little BLE MIDI demo with the CLUE. Got some I-IV-V-I arpeggios going – Twitter.
Displaying album art on an Adafruit PyPortal with CircuitPython – Twitter.
No NE555s on-hand to make an AtariPunkConsole. Created a CircuitPython emulator class for output on one or more PWM-capable pins. Here are two instances producing annoying stereo notes with the traditional Osc Freq and One-Shot Pulse Width controls – Twitter and YouTube.
A CircuitPython library for an ST7567 display from AliExpress – Twitter.
I was so inspired by @zackfreedman’s Mirage that I made my own split keeb, custom firmware on CircuitPython and all. I made some customizations for ergonomics, and also made the board symmetric so the left and right half only needed one board design – Twitter.
I did tweak my Adafruit MacroPad quite a bit over the weekend: hardware (got a 14-piece key switch sampler pack, yikes) and re-coded the CircuitPython to make editing in Premiere Pro a little faster – Twitter.
cool836pico ビルドガイド is a 30％ Alice layout keyboard which uses CircuitPython – GitHub.
Hack an IKEA lamp with NeoPixels in MicroPython – Bhavesh Kakwani.
MicroPython: Program ESP32/ESP8266 using Mu Editor – Random Nerd Tutorials.
Five MicroPython IDEs for ESP32 and ESP8266 – Raspberry ME (French).
The Lilygo T5 4.7-inch E-Paper display supports MicroPython – AliExpress via MicroPython Meeting Notes.
Adding Assembly Language to MicroPython – Stephen Smith’s Blog and MicroPython Docs via MicroPython Meeting Notes.
Guide: Socket Programming in Python – Real Python via Twitter.
Multi-tasking in Python: Speed up your program 10x by executing things simultaneously, a step-by-step guide to apply threads and processes to speed up CPython code – towards data science.
PyDev of the Week: Henry Schreiner III on Mouse vs Python
CircuitPython Weekly Meeting for February 22nd, 2022 on YouTube and notes
… and also the CircuitPython Weekly Meeting for February 28nd, 2022 on YouTube and notes
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? PyPortal Winamp MP3 Player.
The Bolt Industries Pico 87 keyboard uses a Raspberry Pi Pico microcontroller which is compatible with KMK, a mechanical keyboard firmware that runs on CircuitPython – Tom’s Hardware via Twitter.
Badger 2040 by Pimoroni is a hackable, programmable badge with E Ink display, powered by Raspberry Pi RP2040 is in preorder, program it with C/C++, MicroPython or CircuitPython – Pimoroni.
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 was one new board 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:
New Learn Guides!
PyPortal Winamp MP3 Player from Tim C
Touch Tone Phone Dial-a-Song from John Park
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 346!
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!
Last week the CircuitPython team went over the open issues for 7.2.0 and 7.x.x, and did some triage. As of last Thursday, the team has fixed all the remaining 7.2.0 issues, and we are on track for a 7.2.0 release.
I did some type annotation infrastructure work, moving
circuitpython_typing out of
adafruit-blinka and into its own library. A few type-annotated libraries then needed their dependencies updated. This was partly prelude for my continuing work on an asyncio-enabled HTTP requests library.
In CircuitPython, I fixed some small issues that resulted from updating with MicroPython 1.18.
In floppy land, I’ve been working on a short guide that will show how to modify a standard 5.25” PC floppy drive so that (together with software like fluxengine or greaseweazle) it can read the flip side of floppies written on classic 8-bit computers.
Over the last week, I finished updating the VEML7700 guide with the STEMMA QT revision. I added I2C and TFT examples to the TFT Feather guide. I updated the BNO055 guide to not mention Feather M0 as the library no longer works on M0 boards. I updated some Arduino graphics test code for the TFT Feather, and I put together an Arduino template for boards with a built-in TFT. I’m currently working on CircuitPython and Arduino templates for reading data from the LC709203 battery monitor found on ESP32-S2 boards, as well as a template explaining how to send and receive data from Adafruit IO. Finally, I’ll be finishing up the Feather TFT guide; it still needs a number of CircuitPython Essentials pages added. Keep an eye out for the updates!
This week I have done some tweaking in the Winamp skin conversion script, and Winamp player circuitpython code in order to make better use of the larger screen on the PyPortal Titano. The other improvement I’m working on will be allowing it to search for MP3 files automatically on the SD Card if the user has not provided a playlist.json file with their songs in it. The other thing I’ve got in the works is trying to update the certificates that CircuitPython uses when HTTPS requests are made in order to update the James Webb Telescope project to use a newer more direct data source API.
This week has been a bit short due to the Monday holiday. Last week I did a couple quick bug fixes for the 7.2.0 release and then kept working on USB Host support in CircuitPython.
I’m starting on the iMX RT 1060 because it has two USB peripherals. I’ve created a TinyUSB demo that uses both and converts HID to CDC. It is in a pull request here. This is a good step to get a feel for the TinyUSB API.
I also started brainstorming the CircuitPython API on my stream last week. This week I’ll continue brainstorming and start to implement it now that I have the TinyUSB example going.
The next MicroPython Meetup in Melbourne will be on March 23rd – Meetup. See the slides of the February 23rd meeting.
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.
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.2.0. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20220228 is the latest CircuitPython library bundle.
v1.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.0a5.
2,855 Stars. Like CircuitPython? Star it on GitHub!
Help us translate CircuitPython into other languages!
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.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 33,380 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.