If you missed this week’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). 10,354 subscribers worldwide.
The next newsletter goes out in a week and subscribing is 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 week is focused on software. Can one write games in MicroPython with AI? Apparently… A new bugfix release for CircuitPython is available. And some neat tools and projects have been realized using Python. We’ve entered another heavy period for events, check out the latest list in this issue. And as always, there are some fabulous projects by folks worldwide – Ed.
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:
CircuitPython 8.0.3 Released
CircuitPython 8.0.3, the latest bugfix revision of CircuitPython, is the new stable release – Adafruit Blog and Release Notes.
Changes since 8.0.2:
Fixes and Enhancements
- Fix missing internal initialization of display.ColorConverter objects.
Port and Board-Specific Changes
- Correct error reporting in SSLSocket.
- Increase number of lwip timers for mDNS.
- Fix pad assignments for busio.UART and improve pin validation.
OpenSPICE – A Portable Python Circuit Simulator
Roman Parise and Georgios Is. Detorakis have created OpenSPICE, a fork of the PySpice project, adding a new simulation engine written entirely in Python. This enables the same PySpice simulations to be executed on any platform that runs Python while leveraging the full power of the Python infrastructure – Hackaday and GitHub Source.
smolBASIC: A micro:bit BASIC written in MicroPython
smolBASIC is an experimental simple text-based language for physical computing, written in MicroPython to run on the BBC micro:bit – Handbook (PDF) via Mastodon.
Play Infinite Versions of AI-Generated Pong on the Go
Play Infinite Versions of AI-Generated Pong on the Go… A Raspberry Pi Pico W handheld writes its own games in MicroPython – IEEE Spectrum, via Hackaday.
A Clock That Changes Time When You Look At It
Guy Dupont posts on Twitter – Twitter Thread.
“I made a clock that always* shows the wrong time when it detects someone looking at it. *It’s right twice a day
Using an Adafruit QT Py ESP32-S2 (running CircuitPython) and a 7-segment LED backpack. It uses the Person Sensor for face detection and requires no soldering!
Playing GIFs in CircuitPython
Mark Komus has been developing GIF image playback on CircuitPython displays, coming to CircuitPython 8.1.0 beta. Best on lower resolution displays and faster microcontrollers due to the high data transfer requirements – Adafruit Blog.
And Michael Lacock has developed SPI Display GIF Maker, a very simple GIF generator used to generate GIFs that can run in gifio on CircuitPython (currently 8.1.0 Beta) – GitHub.
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 Trying Raspberry Pi Sudo-less NeoPixels and LED Animation.
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 this week is on Unpacking Tuples – Adafruit Blog and YouTube.
Catch all the episodes in the YouTube playlist.
Project of the Week: A Valentine’s Card with a Surprise
A special Valentine’s card made with an Adafruit Trinket M0 + NeoPixels, cut on a Glowforge laser cutter with a 3D printed case. It’s also rechargeable – Twitter Thread.
We’ve been enjoying the pink plum blossom trees around our neighborhood and I wanted to capture the blooms in this card. The real blooms only last for a couple weeks, but this card can bloom forever.
News from around the web!
A Pixel-y Panel Project: Using CircuitPython spritesheets for animation – Gnuf on Code.
Create a robot that can tweet and post to Instagram using Python – YouTube via Twitter.
Showing the Wukong2040 breakout board for Raspberry Pi Pico which is CircuitPython compatible – Twitter and Elecfreaks.
An AMG8833 thermal camera (8×8 pixels) on an Adafruit PyGamer, using CircuitPython with the amg88xx library – Twitter.
I display 8×8 squares for each pixel. The code is very simple, thanks to the library and CircuitPython displayio TileGrid. I’m using a 100-colour palette, from blue to red.
ReplBuilder: quickly build a REPL command line interface prompt in Python – GitHub.
Dual player LED Flinger hardware complete! Code is coming together too. I think I’ve got the communication timings pretty good now. We have plans to make this an installation in Cambridgeshire Makespace. It uses CircuitPython 8.0 at both ends – Twitter Thread.
Fast analogue input with Raspberry Pi Pico and CircuitPython – HackSpace Magazine Issue 64 – Adafruit Bog.
Pico:ed by Elecfreaks is a micro:bit-like board with a large LED matrix display and runs CiricuitPython – Twitter Thread.
Programming a Badger 2040W E-Ink display menu system in MicroPython – Blog and YouTube.
Lissajous Curves with MicroPython on 320×240 pixel display with Pi Pico – Instructables and YouTube.
The making of a Pretty Small Robot with ESP32 and MicroPython – Adafruit Blog, Post and GitHub.
Issue 114 of Keyboard Builders’ Digest is out, a wrap-up of cool DIY keyboard projects. Lots of open-source split, ortho and other boards – KBD.
Traffic Light Controller with Raspberry Pi Pico and MicroPython – How to Electronics.
All about USB-C: Replying Low-level Power Delivery – Hackaday.
Weather Machine: an all-new universal API adapter for the world’s best weather forecasts, available for everyone – Hello Weather.
What is Textmode Art? – Polyducks.
PyDev of the Week: Roni Kobrosly on Mouse vs Python
CircuitPython Weekly Meeting for February 21, 2023 (notes) on YouTube
CircuitPython Weekly Meeting for February 27, 2023 (notes) on YouTube
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Raspberry Pi Debug Probe: a plug-and-play debug kit for $12.
Adafruit OV5640 Camera Breakout. This Adafruit OV5640 Camera Breakout with 120 Degree Lens has a nice quality OV5640 camera with a 5 Megapixel sensor element and a 120-degree wide angle lens – Adafruit Blog.
Adafruit ESP32-S3 Reverse TFT Feather – similar to the new ESP32-S2 reverse TFT but featuring the dual core ESP32-S3 – Adafruit.
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:
- 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!
A Floppy Thumb Drive with a Color File Icon Display from Anne Barela
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 273!
Here’s this week’s new CircuitPython libraries:
- There were no new libraries this week.
Here’s this week’s updated CircuitPython libraries:
Total Library Stats
- 134494 PyPI downloads over 306 libraries
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 10454
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 9844
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 1669
- Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1570
- Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1537
- Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 1328
- Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 1167
- Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1097
- Adafruit CircuitPython HT16K33 (adafruit-circuitpython-ht16k33): 1032
- Adafruit CircuitPython ESP32SPI (adafruit-circuitpython-esp32spi): 990
What’s the team up to this week?
What is the team up to this week? Let’s check in!
I released CircuitPython 8.0.3 on Thursday, February 23. This fixes some problems that have been present for a long time in the 8.0.0-beta line, and includes a few new fixes. We encountered some more things to fix and there will be an 8.0.4 before long.
8.1.0 is getting closer, but we needed to get some space back on smaller builds before merging everything in.
I am writing a Learn Guide about safe mode, including how the new safemode.py feature works.
This past week I finished up making a Pull Request for the CircuitPython installer, which is currently in the process of being merged. I worked mostly on stability and user interface improvements. Once it is live, it will likely have some bugs that have not been caught yet, but it should improve over time.
This week I tested some more PRs for the MiniMQTT library and the Wiznet ethernet library. Over in the core, I tested the new support for animated GIFs and finished up handling some feedback for the displayio module argument validation that I started prior.
I’ve also been experimenting to learn how the ColorConverter class works together with Bitmap and how they differ in functionality compared to Palette. Once I’ve got my head wrapped around it I’d like to add to the displayio learn guide a section that explains what it can do and how to use it.
The guide I was wrapping up last week has now been published, showing how to use the OV5640 camera breakout with CircuitPython.
Besides that I also helped mop up a bug that affected non-blocking SSL connections on the Raspberry Pi Pico W, including MQTT. Big thanks to community member Dave Putz who wrote an initial version of the fix, and to everyone who helped with info about the issue.
This week I’ve wrapped up PWMOut fixes on the iMX RT and continued working on the Bangle.js 2 PR. Since it was opened, the amount of free space in the main branch has gone down. This meant that the new changes no longer fit. So, I’m implementing a suggestion of Jeff’s to free up some more space. (Thanks Jeff!)
I’ve also been reading up SWO and TRACE from the iMX RT as a way to analyze the effectiveness of our cache and memory layout. I’ll be adding a performance testing page to my upcoming CP implementer’s guide.
This week I worked on some new product documentation. The 2.13” eInk display breakout now has an EYESPI connector, so I added a page to the guide detailing how to use it. This is the first eInk display in the shop with the new EYESPI connector. I also updated the LCD Backpack guide for the new STEMMA version.
Unlock the Power of MicroPython on an Arduino: Join a Live Webinar March 9, 2023 – Elector.
A Munich RISC-V Meetup, one day after the doors of Embedded World close on March 17th. RISC-V enthusiasts will get together in Munich, Bavaria – RISCV.org.
The next MicroPython Meetup in Melbourne will be on March 22nd – Meetup.
Hackaday Berlin 2023 has been scheduled for Saturday, March 25 – Adafruit Blog and announcement.
PyCon US 2023 will be April 19-17, 2023, again in Salt Lake City, Utah USA – PyCon US 2023.
Send Your Events In
If you know of virtual events or upcoming events, please let us know via email to cpnews(at)adafruit(dot)com.
CircuitPython’s stable release is 8.0.3; there is no labeled unstable release at the moment. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20230227 is the latest CircuitPython library bundle.
v1.9.1 is the latest MicroPython release. Documentation for it is here.
3.11.2 is the latest Python release. The latest pre-release version is 3.12.0a5.
3,415 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.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 36,830 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.