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,502 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! The news this week is comprehensive – so much has happened in the last 7 days! CircuitPython celebrates being on 300 different microcontroller boards and with a new version. MicroPython blew past their $5,000 per month GitHub sponsorship level and has set its sights for $10K. TinyUSB gets some neat USB host capability on RP2040 via PIO and many fantastic projects are featured.
Clear your calendar and enjoy all that’s posted below – well worth a thorough browse. If you have news, send it in via email at cpnews(at)adafruit(dot)com. And our goal is to reach 10,000 folks – if you have friends who would benefit from the newsletter, please have them subscribe at https://www.adafruitdaily.com.
Note: The next issue will be out to subscribers June 1st (a day later than usual), as the previous weekend is a 3-day holiday in the US (Memorial Day).
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:
There are now over 300 CircuitPython compatible microcontroller boards
There are now over 300 microcontroller boards that support CircuitPython! They include boards from Adafruit and from many manufacturers and people in the community. Supported chips include: Espressif, Microchip SAMDs, Nordic, NXP, RP2040s, ST, and more! From Wi-Fi to BLE to LoRA, there is an easy and fun way to program microcontrollers with CircuitPython! – Adafruit Blog.
And check out the article on Tom’s Hardware. Tom’s will host Anne Barela on The Pi Cast video on Tuesday May 24th at 2:30pm US Eastern, 19:30 UK BST – Adafruit Blog.
MicroPython Surpasses Original GitHub Sponsorship Target
MicroPython has been using GitHub Sponsorship to raise funds for development. With over a hundred donors, they fell short of $5,000 a month. Adafruit has already been a sponsor since corporate sponsors were added, and they promoted this worthwhile effort to other MicroPython users. The effort recently surpassed the $5k mark and MicroPython has increased their target to $10,000 per month to hire an additional developer. Are you a user of MicroPython or CircuitPython? Please consider sponsoring some money per month to MicroPython – GitHub.
CircuitPython 7.3.0 Final Released
CircuitPython 7.3.0 was released Monday afternoon. It is the new stable release – GitHub Release Notes and Adafruit Blog.
Notable changes to 7.3.0 since 7.2.5:
- Experimental mDNS support.
- USB to to Serial/JTAG support for REPL on appropriate boards.
- Initial experimental USB host support.
- Merge MicroPython 1.18 changes.
- Preliminary
zlib
module support.gzip
module will be added later. - RP2040 PIO: Background write to a PIO state machine. Looping is possible.
- RP2040 PIO:
wrap
andwrap_target
support. keypad
: scan keystates immediately on creation.- Improve NeoPixel timings on many ports, to handle a wider range of devices.
- Add
floppyio
, used in conjunction with a library. - Allow
TileGrid
bitmap to be changed. - Module support matrix includes frozen modules for each board.
f
-strings available in all builds.
TinyUSB Gets USB Host Capability on RP2040 Chips
Thanks to https://github.com/sekigon-gonnoc/Pico-PIO-USB, Raspberry Pi RP2040 microcontrollers can have additional USB host ports through the use of the chip’s PIO. RP2040 runs as device on native USB and host on 2 GPIOs, both managed by TinyUSB – Twitter.
CircuitPython is Now a Topic on GitHub
CircuitPython now joins MicroPython as an official Topic on GitHub. You can use #CircuitPython for tagging throughout the site (and #MicroPython for MicroPython) – GitHub
New Python Implementations For Hardware
CodeSkool is a block based Python for Raspberry Pi Pico supporting the complete examples of PicoZero Python – Reddit.
PikaScript is a lightweight Python implementation that runs on STM32 and other low-end MCUs – cnx-software and source – GitHub.
Thonny 4.0.0 Beta 3 Out
The Thonny editor’s latest beta of version 4.0 is out with bugfixes and experimental support for MicroPython on LEGO® MINDSTORMS® EV3. It also provides support for CircuitPython with micro:bit – GitHub via Twitter.
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 testing Frozen Library tricks for the Adafruit Circuit Playground Express (CPX).
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
CircuitPython Parsec
John Park’s CircuitPython Parsec this week is on using a Bicolor LED Matrix – Adafruit Blog and 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 a short interview. – CircuitPythonShow and Twitter.
The CircuitPython Show is off this week. Last week featured Adafruit’s Liz Clark and next week Pierre Constantineau joins the show to talk about mechanical keyboards and CircuitPython. – 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: Using Two Displays in CircuitPython
Multiple Displays in CircuitPython and Compiling Custom CircuitPython – todbot.com.
Did you know you can run multiple displays in CircuitPython? One way: wire up two displays in parallel. There’s also true dual displays. Only a single display is supported for the pre-built versions of CircuitPython (The one exception is the MonsterMask). Multiple displays are supported in the design of CircuitPython, but it’s a compile-time setting. This is for RAM savings reasons.
News from around the web!
That Dragon Guy on Twitter posts about programming CircuitPython boards using an iPhone and tiny Bluetooth keyboards for a very mobile solution – Twitter Thread and Adafruit Blog.
A CircuitPython powered gesture controller with an Adafruit Proximity Trinkey – Adafruit Blog.
Eurorack gate out. Shifting 3.3v logic to 5v. CircuitPython script turning a pin off and on with random delays – Twitter.
I made a little Raspberry Pi Pico dice roller with Pimoroni’s Pico Display Pack, all written in Adafruit’s CircuitPython. These beautiful pixel art dice are made by @LilMissSunBear – Twitter.
A company associated with the premiere of the new season of Stranger Things approached Guy Dupont and asked him to build a RP2040-Powered Stranger Things Telephone prop using a SparkFun Thing Plus RP2040 and CircuitPython – hackster.io and YouTube.
12 Books Recommendation for Embedded Systems Learners – LinkedIn.
Making a micro weather station with the ESP32-CH34G-RGB ESP32-C3 board with LED matrix – bigl.es.
Creating a new MSA311 driver based on the existing MSA301 driver code in CircuitPython – Twitter.
Turning a thrift store Guitar Hero controller into a MIDI controller with an Adafruit Metro and CircuitPython – zoic.org.
Syncing NTP on ESP32 with MicroPython – Bhavesh Kakwani and Hackaday.
Ro-Bud – a lovable, accessible, autonomous companion with Raspberry Pi and Python – GitHub.
Video: Inside the PyScript Source: Python in Your Browser – YouTube via Twitter.
A space rover-drone-station concept, totally made with MicroPython – Twitter.
Two Great Ways to Control Electronic Projects with Python – Medium via LinkedIn.
Math support has been added in the Markdown language. Mathematical expressions are key to information sharing amongst engineers, scientists, data scientists, and mathematicians. GitHub announced that math expressions can be rendered in Markdown on GitHub using $$ as a delimiter for code blocks with math content or the $ delimiter for inline math expressions – GitHub Blog.
Have you tried out the sh
Python package? sh is a full-fledged subprocess replacement for Python 2, Python 3, PyPy and PyPy3 that allows you to call any program as if it were a function – Twitter.
Hackerforms allows you to easily deploy interactive Python scripts. Create user interfaces straight from your Python code – no frontend work required.
Deploy instantly and share with anyone – Hackerforms.
apitracker.io – providing the information on APIs – Adafruit Blog.
PyDev of the Week: Brian Skinn on Mouse vs Python
CircuitPython Weekly Meeting for May 16, 2022 (notes) on YouTube
PROGRAMMING NOTE: the next meeting will be May 31st (Tuesday) due to the Memorial Day holiday in the United States.
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Linux Cheat Sheet.
New Hardware
SB Components’ RangePi is a compact, display-equipped MicroPython-powered RP2040 LoRa board – Hackster.io.
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 learn guides this week!
Updated Learn Guides!
Welcome to CircuitPython: Library File Types and Frozen Libraries from Kattni
CircuitPython Libraries!
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 357!
Updated Libraries!
Here’s this week’s updated CircuitPython libraries:
- Adafruit_CircuitPython_DisplayIO_Layout
- Adafruit_CircuitPython_NTP
- Adafruit_CircuitPython_HTTPServer
- Adafruit_CircuitPython_Display_Text
- Adafruit_CircuitPython_RFM9x
- Adafruit_CircuitPython_RSA
- Adafruit_CircuitPython_VC0706
- Adafruit_CircuitPython_FONA
- Adafruit_CircuitPython_BD3491FS
- Adafruit_Blinka_bleio
- Adafruit_Blinka_Displayio
- CircuitPython_Community_Bundle
What’s the team up to this week?
What is the team up to this week? Let’s check in!
Dan
I released CircuitPython 7.3.0 release candidate builds 7.3.0-rc.0 and 7.3.0-rc.1, and perhaps by the time you read this CircuitPython 7.3.0 final will be out (ed. it is).
One bug I worked on for 7.3.0-rc.1 prevented allocating large blocks of RAM after significant imports. I thought it was going to be complicated to debug, but it turned out we had stopped doing automatic garbage collection we did after each import. The code had simply gotten lost during the MicroPython v1.18 merge.
Kattni
This week I published the Library File Types and Frozen Libraries page in the Welcome to CircuitPython guide Advanced Setup section. We are regularly getting a similar set of questions regarding the different library file types, what they mean, which one should be used, how to get past common issues, and more. This page has everything you need to know about .mpy files, .py files, and frozen libraries. If you’ve ever wondered how CircuitPython interacts with the different library types, check out the new guide page.
I also added a new section to the CircuitPython Libraries page in the Welcome guide titled The Adafruit Learn Guide Project Bundle which explains the general idea behind the Project Bundler, how the downloaded zip is structured, and how to use it. It’s linked in the Library File Types page where I explain how frozen libraries work with the Project Bundle.
Finally, I spent some time working with Tekktrik to teach him how to use Adabot. The next step will be to have him try to run an actual patch. We’ll find out soon how it goes!
Melissa
This past week, I finished writing the 2.7” eInk Breakouts and Shields guide. I have also been going through the guide feedback on a number of guides that I had made major contributions to, but were under other peoples’ names.
Tim
I completed a few remaining tweaks and much more thorough testing for my core PR to allow vectorio shapes to be hidden when their containing Group gets hidden. That was merged this week after testing and reviews were completed. I wrapped up some requested changes to some of the typing PRs opened during PyCon sprints and followed up with the author on the one that remains open. I also made some updates to Blinka_DisplayIO to add some of the newest functionality that was added to core displayio recently, accessing tile size properties on TileGrid, and updating the Bitmap object for a TileGrid. Lastly I tested and reviewed a PR to add a more advanced TabLayout example created by community member Paulsk.
Scott
This week I wrapped up switching the NTP library over to doing NTP over native sockets. Then I worked on adding dotenv
support to CircuitPython as an alternative to secrets.py. .env
files are simpler, pseudo-standard format for storing secrets. It has two main advantages: 1) it can work in CPython and 2) CircuitPython can easily load the file when the Python VM isn’t running. Its first use will be storing WiFi credentials so CircuitPython can connect automatically, even when the VM isn’t running.
Liz
This week I published the Wireless LED Maracas guide. It was a great project to follow-up the more complicated Laser Harp build. This coming week I’ll be working on a wearable/conference badge using the tiny traffic light model that just came into the shop. I’ll be using a QT Py ESP32-S2 with CircuitPython so that it can use light sleep to preserve battery life. I’ll also be doing some more Fritzing work with Kattni’s guidance. I really enjoy making Fritzing objects. They have a very similar vibe to working on a word puzzle.
In my down time, I’ve been playing with some Eurorack synth and CircuitPython projects. Most recently, I’ve been prototyping a sequencer that sends out 1V/oct. I’ve been referencing Thea Flower’s “Designing Winterbloom’s Big Honking Button” blog post for the different circuits needed to communicate with Eurorack for gate in, gate out and 1V/oct. On the CircuitPython side of things, the gates can be handled as digital inputs/outputs and I’ve had a lot of luck using the MCP4728 STEMMA board for 1V/oct.
Upcoming events!
The next MicroPython Meetup in Melbourne will be on May 25th – Meetup. See the slides of the May 4th meeting (rescheduled from April 27th – now up, thanks Matt).
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.
PyOhio is a non-profit annual Python community conference usually held in Columbus, OH. It is being held online starting Saturday, Jul 30, 2022. It is free to attend and welcomes anyone with an interest in Python. Content ranges from beginner to advanced and is intended to be relevant to all types of Python users: students, software professionals, scientists, hobbyists, and anyone looking to learn more – PyOhio.
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.
Latest releases
CircuitPython’s stable release is 7.3.0. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20220522 is the latest CircuitPython library bundle.
v1.18 is the latest MicroPython release. Documentation for it is here.
3.10.4 is the latest Python release. The latest pre-release version is 3.11.0b1.
2,982 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 – 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
Custom Module for RP2040 CircuitPython Software Module – MeanStride Technology, Inc – Adafruit Jobs Board.
34,449 thanks!
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 34,449 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.
Contribute!
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.