View this email in your browser.
Welcome to the latest Python on Microcontrollers newsletter, brought you by the community! We’re on Discord, Twitter, and for past newsletters – view them all here. If you’re reading this on the web, subscribe here. Let’s get started!
CircuitPython 6.2.0 Beta 3 Released!
This release, 6.2.0-beta.3, is the fourth beta release of CircuitPython 6.2.0. It includes many fixes and enhancements. Across most ports it adds a second USB serial (CDC) channel, adds a
bitmaptool module for help with
displayio, and removes the limitation on
displayio.Group size. The RP2040 port has many enhancements and fixes, and the Spresense port has several improvements as well. Thank you to everyone who contributed to this release!
More – Adafruit Blog.
Adafruit Feather RP2040 available!
The new Adafruit Feather RP2040 has been released in the Adafruit shop! More are being fabricated, so sign up to be notified when more are available – Adafruit
CircuitPython on Tom’s Hardware Pi Cast
Scott joins the Tom’s Hardware Pi Cast to talk CircuitPython and Raspberry Pi – YouTube via Twitter and Adafruit Blog.
Scott talks about the future of CircuitPython running directly on Raspberry Pi – Tom’s Hardware.
Python 3.10.0a6 is now available for testing
The new alpha release of Python 3.10 is here, now with 100% more pattern matching. If I were you, I would download it and start playing with it. Extra points if you report us any bugs you find along the way! Are you confused about all this pattern matching business? Fear not, this release also includes some fantastic documentation and some shiny new “What’s new” entries – Python Insider Blog.
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott streams his work on flash config for RP2040.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
News from around the web!
Getting started with CircuitPython on Raspberry Pi Pico with NeoPixel LEDs – Twitter.
Monday Microcontroller: QT Py – bigl.es.
A suite of tools including CircuitPython for building & uploading firmware, deploying files to devices, and testing modules – GitHub via Twitter.
QT Py, the Small Micro-controller with CircuitPython and Arduino – YouTube.
BrainCraft HAT running on Raspberry Pi Pico using “Pico to Zero Adapter” – Twitter.
An adapter for a Raspberry Pi Pico to a FeatherWing – Twitter.
A macro keypad that uses Raspberry Pi Pico and CircuitPython – Hackaday.
Adafruit Feather M0 and TEMT6000 light sensor CircuitPython example – Learn MicroPython.
Dual motor Dynamixel FeatherWing Pivot kit from Spudworks – Tindie and code on GitHub.
Simple Electronics Podcast featuring Scott Shawcroft – YouTube.
Displaying images on a round LCD using Raspberry Pi Pico and CircuitPython – Twitter.
QWERTY keyboard and IPS display for Raspberry Pi Pico running CircuitPython – Twitter.
Getting started with CircuitPython on Raspberry Pi Pico – YouTube.
Pico4ML: An RP2040 based platform for tiny machine learning – Arducam and YouTube.
Introduction To Numpy for Beginners. Many concepts from this video carryover to ulab in CircuitPython as well! – YouTube.
A display workout for the Pimoroni Pico Display and Raspberry Pi Pico – Instructables and YouTube via Adafruit Blog.
PSRAM working for ESP32-S2 in MicroPython – Twitter.
Using the Raspberry Pi Pico and the DS18B20 in CircuitPython and MicroPython – recantha.co.uk via Twitter.
A Raspberry Pi Pico escape room running MicroPython – GitHub via Twitter.
A Waveshare LCD with a Raspberry Pi Pico running CircuitPython – Twitter.
Seeeduino XIAO simple USB volume control with CircuitPython – scruss.com.
Tiny 2040 rainbows on a couple of Pimoroni 5 x 5 RGB LED matrix breakouts. The Adafruit CircuitPython IS31FL3731 library needed to be cajoled into believing that RGBMatrix5x5 things exist, and eventually the pixels started to glow – Twitter.
Good news, the rotaryio built-in module is available on CircuitPython for the ESP32-S2! Yes, it’s the UI displayio tutorial, but behind, the code isn’t the same. PyPortal is a very good investment – Twitter.
- 3/6/21 Stream from CircuitPythonista FoamyGuy (Tim) covers refactoring display_text and troubleshooting a TileGrid issue with PyGameDisplay – YouTube.
A MicroPython rover using the Raspberry Pi Pico – GitHub via Twitter.
A Raspberry Pi Pico was overclocked to 420 MHz – hackster.io and YouTube.
This board connects a Pico to the GPIO header on a Pi 400. Besides connecting power and debug, it clearly labels the Pico pinout when viewed from the top. CC0 licensed with board fab files – GitHub via Twitter.
Using Python to train a neural network to identify handwritten digits from the MNIST dataset – Hashnode.dev via Twitter.
Sunfish is a simple, but strong chess engine, written in Python, mostly for teaching purposes. Without tables and its simple interface, it takes up just 111 lines of code, yet it plays at ratings above 2000 at Lichess – GitHub.
Emacs: The Best Python Editor? – Real Python via Twitter.
Real Life Comics: Learning Python – Twitter.
PyDev of the Week: Jens Winkelmann on Mouse vs Python
CircuitPython Weekly Meeting for July 6th, 2020 (notes) on YouTube
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Pimoroni Tiny 2040 Review: A Smaller Raspberry Pi Pico.
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 we had 3 new boards added!
Looking to add a new board to CircuitPython? It’s highly encouraged! Adafruit has four guides to help you do so:
New Learn Guides!
Digital Nose Milk Freshness Checker from Carter Nelson
An Introduction to RP2040 PIO with CircuitPython from Jeff Epler
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 channel 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 303!
Here’s this week’s updated CircuitPython libraries:
- Too many to list this week!
What’s the team up to this week?
What is the team up to this week? Let’s check in!
I was wrangling a bunch of PR’s today (Wed, 3/3) and released CircuitPython 6.2.0-beta.3 this evening. This release has a ton of new features and fixes for the RP2040, a new
bitmaptool module, a second CDC serial channel, and removes the limitation on
Before I did this release, I spent quite a while on getting
busio.I2C to work better on the RP2040. Because of how the underlying hardware works, short I2C writes are bitbang’d instead of using the peripheral. Most I2C devices now work on the RP2040, and if yours doesn’t, try
bitbangio.I2C as a workaround.
I’ll now switch to working on I2C on the ESP32-S2. There are some issues mixing WiFi and I2C after a soft reload, and the underlying problems need to be diagnosed and fixed.
This week I published a guide on PIO with CircuitPython. There are 4 programs demoed, 3 with a standard LED and one to drive a NeoPixel all with the rp2pio module that is available on the Raspberry Pi Pico as well as the Adafruit Feather RP2040.
This week we applied the patch to the libraries to move running Pylint to the pre-commit, and took care of the issue that came out of the latest Pylint update with a now-working duplicate code check. There are still a few libraries that need to be updated, but we’re working on it. Turns out some of our libraries could use a refactor, after all. Issues are being filed and we’ll get to it when we can.
Otherwise, this week has been guide work, including the guide for the new Feather RP2040. If you’re lucky enough to get in on the first round of boards, I’ll have a guide ready for you with detailed pinouts info, CircuitPython installation and getting started, and resource downloads.
This past week I’ve mostly been working more on low power code, with some other miscellaneous tasks. I spent a bit of time yesterday working through the touchio module on the ESP32-S2, since the module had been added by a community member but never tested in full rigorous detail. There weren’t any major bugs, but there were some sensitivity issues – the size and layout of a board can alter the capacitance that touchio uses to the point that they can cause inter-pin conflicts and excessive sensitivity if not tweaked. I’m looking into some ways we could try to safeguard against that board-by-board.
This past week I have been working heavily with Linux Device Drivers. After updating the ST7789 Display Driver, this made things a bit easier, but there was still a conflict between the display driver and audio driver for the BrainCraft HAT. The display would either show noise on it or the audio would stutter. When booting up, it seemed to be random which of the problems you got, but there was always at least one of the problems present.
I ended up getting our workaround of going back to the 5.4 kernel working again until the major problem can be resolved, but with only having a single display driver, the problem is simplified.
This week I’ve been heads down on making our flash chip support in CircuitPython more versatile. The RP2040 has a unique way of initializing flash that doesn’t fit into our existing system. So, I’ve started factoring out our flash config into a
nvm.toml cascade tree, a human and machine readable “database” of config settings.
cascadetoml is a tool to flatten the TOML tree in nvm.toml into one dictionary of flash settings. Once we have that, we can write a (hopefully) simple Python script to convert it into the form we need for the various ports. I’m starting with the RP2040 port since we just released the Feather RP2040.
The 2021 Open Hardware summit will be held online, Friday April 9, 2021. The summit will be livestreamed, but ticket holders will have access to additional interactive portions of the summit like meet-and-greets, workshops, and sponsor booths. Find details, including ticket and sponsorship information at 2021.oshwa.org – OSHWA.
The online GeoPython conference is focused on Python and Geo, its toolkits and applications. April 22-23, 2021 – https://2021.geopython.net/.
PyCon US, the annual official annual Python gathering, has been announced to be held online May 12-15, 2021. Sprints will be held May 16-18, 2021. More information and signups at https://us.pycon.org/2021/
EuroPython, the largest conference for the Python programming language in Europe, has been announced to be held online July 26 – August 1, 2021. More information at https://ep2021.europython.eu/
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 Discord or on Twitter with hashtag #CircuitPython.
CircuitPython’s stable release is 6.1.0 and its unstable release is 6.2.0-beta.3. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20210307 is the latest CircuitPython library bundle.
v1.14 is the latest MicroPython release. Documentation for it is here.
3.9.2 is the latest Python release. The latest pre-release version is 3.10.0a6.
2,333 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, Microcenter, Raspberry Pi and more.
Job of the Week
Program Coordinator for FUSE, Northwestern University – Adafruit Jobs Board.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 27,913 humans, thank you! Adafruit believes Discord offers a unique way for CircuitPython folks to connect. Join today at https://adafru.it/discord.
ICYMI – In case you missed it
The wonderful world of Python on hardware! This is our Python video-newsletter-podcast! The news comes from the Python community, Discord, Adafruit communities and more and is reviewed on ASK an ENGINEER Wednesdays. The complete Python on Hardware weekly videocast playlist is here.
This video podcast is on iTunes, YouTube, IGTV (Instagram TV), and XML.
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.
And lastly, we are working up a one-spot destination for all things podcast-able here – podcasts.adafruit.com
Codecademy “Learn Hardware Programming with CircuitPython”
Codecademy, an online interactive learning platform used by more than 45 million people, has teamed up with the leading manufacturer in STEAM electronics, Adafruit Industries, to create a coding course, “Learn Hardware Programming with CircuitPython”. The course is now available in the Codecademy catalog.
Python is a highly versatile, easy to learn programming language that a wide range of people, from visual effects artists in Hollywood to mission control at NASA, use to quickly solve problems. But you don’t need to be a rocket scientist to accomplish amazing things with it. This new course introduces programmers to Python by way of a microcontroller — CircuitPython — which is a Python-based programming language optimized for use on hardware.
CircuitPython’s hardware-ready design makes it easier than ever to program a variety of single-board computers, and this course gets you from no experience to working prototype faster than ever before. Codecademy’s interactive learning environment, combined with Adafruit’s highly rated Circuit Playground Express, present aspiring hardware hackers with a never-before-seen opportunity to learn hardware programming seamlessly online.
Whether for those who are new to programming, or for those who want to expand their skill set to include physical computing, this course will have students getting familiar with Python and creating incredible projects along the way. By the end, students will have built their own bike lights, drum machine, and even a moisture detector that can tell when it’s time to water a plant.
Visit Codecademy to access the Learn Hardware Programming with CircuitPython course and Adafruit to purchase a Circuit Playground Express.
Codecademy has helped more than 45 million people around the world upgrade their careers with technology skills. The company’s online interactive learning platform is widely recognized for providing an accessible, flexible, and engaging experience for beginners and experienced programmers alike. Codecademy has raised a total of $43 million from investors including Union Square Ventures, Kleiner Perkins, Index Ventures, Thrive Capital, Naspers, Yuri Milner and Richard Branson, most recently raising its $30 million Series C in July 2016.
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 our Discord or post to the forum for any further questions.