Daily tips and tricks from the experts at Adafruit!
View this email in your browser

View this email in your browser. Warning: Flashing Imagery

Welcome to the latest Python on Microcontrollers newsletter! A great deal is happening in the Python world to include Python on Microcontrollers. This week, CircuitPython hit the 350 library mark – thousands of lines of open source code allowing anyone to connect things, make graphics, measure and crunch. Welcome to the latest issue, there is something of interest for everyone.

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:

350 CircuitPython Libraries Are Now Available

350 CircuitPython Libraries

The CircuitPython community reached a big milestone together Thursday! There are now 350 CircuitPython Libraries!

The Adafruit CircuitPython Library Bundle and Community Library Bundle contain all the current libraries available for CircuitPython. CircuitPython libraries are separate files designed to work with CircuitPython code.

CircuitPython programs require a lot of information to run. CircuitPython is so simple to use because most of this information is processed in the background and stored in libraries. Some libraries are built into CircuitPython. Others are downloaded and stored on your CIRCUITPY drive in a folder called lib.

CircuitPython Library Growth

Growth is steady and healthy for the project – Adafruit Blog.

The full list of all the CircuitPython libraries contained in the library bundle can be found on the circuitpython.org libraries page.

CircuitPython 7.3.0-beta.1 Released

CircuitPython 7.3.0-beta.1

A new version of CircuitPython came out last week – CircuitPython 7.3.0-beta.1.

Notable changes to 7.3.0 since 7.2.5:

  • Experimental mDNS support.
  • USB 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.
  • PIO: wrap and wrap_target support.
  • keypad: scan keystates immediately on creation.

More – GitHub.

Python 3.11 to be Twice as Fast as its Predecessors

Python 3.11

The upcoming version of Python is set to be twice as fast as the previous versions. Python creator Guido Van Rossum stated at the last Python Language Summit that when version 3.11 is published in October 2022, he plans to quadruple Python’s speed. His overall goal over the next four years is to boost Python’s speed by a factor of five.

Van Rossum’s presentation, which is available on GitHub details how he plans to do this, including an adaptive bytecode interpreter, frame stack optimization, and ‘zero overhead’ exception handling. If these changes double Python’s speed, Van Rossum believes that future changes may include a solid ABI (application binary interface) or machine code generation to boost Python’s performance even more.

More – Medium.

PSF Welcomes New Executive Director Deb Nicholson

Deb Nicholson

The Python Software Foundation (PSF), the non-profit home of the Python programming language community, welcomes Deb Nicholson as its new Executive Director. With 15 years of open source experience and over 25 years of non-profit experience, Deb is joining the organization just in time for the first in-person PyCon US since 2019 – PSF Blog via Twitter.

IEEE Spectrum Top Programming Languages Has Python #1

Top Programming Languages

IEEE Spectrum ranks the popularity of dozens of programming languages. They currently have Python at #1 – Adafruit Blog and IEEE Spectrum.

picozero Beta – A Simple MicroPython Library for Raspberry Pi Pico

PicoZero

picozero is a new beginner-friendly library for using common electronics components with the Raspberry Pi Pico in MicroPython and Thonny. It is a product of the Raspberry Pi Foundation and is currently in beta testing. picozero is inspired by gpiozero (and reuses some of its underlying structure), but is, by design, lighter weight and aligned with the Raspberry Pi Pico – GitHub and ReadTheDocs.

This Week’s Python Streams

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

Deep Dive

This past week, Tim streamed work on the TabLayout displayio Widget.

You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.

CircuitPython Parsec

CircuitPython Parsec

John Park’s CircuitPython Parsec this week is on touchscreen use – Adafruit Blog and YouTube.

Catch all the episodes in the YouTube playlist.

The CircuitPython Show

The CircuitPython Show

The CircuitPython Show is a new 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 twenty to thirty minute interview – CircuitPythonShow, Blog Post and Twitter.

The last episode featured an interview with Scott Shawcroft. There is no episode this week. The next episode will be Monday April 18th – Show List.

TammyMakesThings is Streaming CircuitPython

Tammy Makes Things

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: Screen Saver

Screen Saver

A portable Severance Lumon terminal screensaver made with an Adafruit FunHouse running CircuitPython – Twitter Thread and GitHub.

The CircuitPython code is the standard ball-bouncing code but with a Lumon logo and some palette cycling to make the logo all rainbowy.

News from around the web!

CircuitPython BLE & ANCS

Remotely answer/decline/hang up calls on your iPhone with CircuitPython BLE & ANCS. It also displays (via serial) current notifications – Twitter and GitHub.

CircuitPython Typing Video

Foamyguy shared a video showing the process of adding typing information to CircuitPython libraries – YouTube.

waterfall-spectrum-analyzer

Making a waterfall spectrum analyzer for sound with a microphone, display and CircuitPython – Twitter and YouTube.

Toy Keyboard USB MIDI Controller

A toy keyboard USB MIDI controller with Raspberry Pi Pico and CircuitPython – Simple DIY Electronic Music Projects.

NeoPixel Ring

A 3D printed ring to hold a CR2450 battery, XIAO microcontroller and a NeoPixel PCB, coded in CircuitPython – Twitter.

Crookes Radiometer

An electronic Crookes Radiometer with CircuitPython vectorio and the Adafruit Circuit Playground Bluefruit with TFT (Display) Gizmo – GitHub and YouTube.

Ease of Use

I’ve decided to go ahead and make an RP2040 Electric Prism. In addition to the limited availability of ATMEGA328 chips, I think CircuitPython support will make this more accessible as an educational tool (easy to jump in and modify code) – Twitter.

CircuitPython: Connecting a Robot Cat to the Internet

LinkedIn Class – CircuitPython: Connecting a Robot Cat to the Internet – LinkedIn.

CircuitPython

Getting CircuitPython running and realizing the I2C address of your sensor was not what you thought it was – Twitter.

GPS Badge

A GPS locator displaying on a Pimoroni Badger 2040 eInk display with MicroPython – Twitter and GitHub.

micro:bit Python numbers station

Create your own spooky micro:bit MicroPython talking numbers station – Twitter.

Servo

Raspberry Pi Pico Learning Kit: use a potentiometer to control a servo with MicroPython – Osoyoo.

Thonny

Pro tip: you can use WebREPL within Thonny IDE instead of having to run it in a separate window – Tutorial, YouTube and Twitter.

Best Python Compilers

Top 13 Best Python Compilers For Python Developers (2022 Rankings) – Software Testing Help.

Code your own Zelda-like game on Raspberry Pi

Code your own Zelda-like game on Raspberry Pi – Adafruit Blog and Raspberry Pi News, via Wireframe Magazine.

Durin’s Box

Durin’s Box: a locked box opened with a password – Adafruit Blog, Hackaday.io, Raspberry Pi News and YouTube.

Faker library in Python – an intriguing expedient for data scientists – Towards Data Science.

Linux commands cheat sheet

Basic Linux commands cheat sheet – Twitter.

Pre-allocated lists in Python – Redowan’s Reflections.

PyDev of the Week: Peter Baumgartner on Mouse vs Python

CircuitPython Weekly Meeting for April 11, 2022 (notes) on YouTube

#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Raspberry Pi Production and supply-chain update.

Coming Soon

GUVB-C3x

Adafruit found the GUVB-C31 and GUVA-C32 tucked in the Digi-Key catalog. These are UV sensors with true UV diodes and tuned for different spectra. Adafruit is always getting requests for true UV sensors, and these could be useful particularly given the different responsivity. The GUVB is good for ~250 to 320nm, the GUVA is ~250 to 370nm and can output UV index as well, it seems. They’ve never seen this chip used but they are whipping up a quick breakout and will try it to see how well they work – 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 were no new boards added (there were nine last week!).

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!

New Learn Guides

Todbot’s CircuitPython Tricks from John Park

Wireless ESP32-S2 Touch Screen Controller for Pure Data from Liz Clark

Adafruit TSC2007 I2C Resistive Touch Screen Controller from Liz Clark

MIDI Foot Pedal from Noe and Pedro

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 350!

Updated Libraries!

Here’s this week’s updated CircuitPython libraries:

There are too many updated libraries to list this week. Keep an eye out for more library fun next week!

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.2.5 to fix various high priority bugs, and also 7.3.0-beta.1 to catch up on two weeks’ worth of additions and fixes to the main branch. 7.3.0-beta.1 also includes all the 7.2.x fixes.

One of the fixes for 7.2.5 was particularly head-scratching. I could make CircuitPython hang simply by touching an unconnected UART RX pin. This turned out to be a particular timeout UART interrupt enabled in the latest version of the RP2040 SDK, which we didn’t know about and didn’t handle.

I am continuing on the bug quest for 7.2.x and 7.3.0. The latest interesting thing is that stepper motors driven by an I2C-controlled motor controller are running much more slowly on ESP32-S2 that on other ports. I suspect an I2C problem.

Jeff

I contributed some more bug fixes for the recent 7.2.x releases, and also fixed some bugs that will go in 7.3.0 whenever that is released. It’s good to be getting through the backlog of things that had accumulated for me to work on in CircuitPython.

Kattni

I’ve been working on a number of things over the last week. The asyncio template is completed, and ready to be included in its first guide. I created a new .gitignore for the libraries, and had it peer reviewed via a cookiecutter PR. (We will need to run a patch to deploy it to all the libraries.) I proofed Liz’s first product guide (she did great!). I started testing PyLeap, found some issues, determined at least one of them is a CircuitPython-issue (not a PyLeap one), and submitted feedback on some of the new mockups that are destined for the next PyLeap version.

Coming up is the Feather ESP32-S3 guide, the QT Py BFF guide, and who knows!

Melissa

This past week I focused on archiving the WebSerial ESPTool, updating guides, and updating WipperSnapper Firmware Uploader. We are making use of a fork of the tool that NabuCasa is maintaining at https://nabucasa.github.io/esp-web-flasher/. Their fork has it available as an NPM module and the WipperSnapper Firmware Uploader has now been updated to use the NPM module.

Tim

I created some preliminary material for use by folks at an upcoming Python convention. A YouTube video showing the process of adding type hints to a CircuitPython library, as well as a Learn Guide page that explains type hints and how we use them in CircuitPython libraries. I also tinkered with some helper code to generate larger panels from small sprite sheets using displayio.TileGrid.

Liz

This week I worked on my first new product guide solo for the TSC2007, following Kattni’s expert guidance. I also finished up a project guide, using a QT Py ESP32-S2 to control a Pure Data patch over WiFi with a socket connection (https://learn.adafruit.com/wireless-esp32-s2-controller-for-pure-data). This coming week I’ll be working on another wireless project, this time using BLE for an HID device.

Upcoming events!

PyCon DE 2022

PyConDE and PyData 2022 will be held in Berlin, Germany from April 11 – 13, 2022 at the Berlin Conference Center – PyCon DE.

MicroPython Meetup

The next MicroPython Meetup in Melbourne will be on April 27th – Meetup. See the slides of the March 23rd meeting.

PyCon US 2022

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 IT 2022

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

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

EuroPython 2022 will be held on 11-17 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.

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.2.5 and its unstable release is 7.3.0-beta.1. New to CircuitPython? Start with our Welcome to CircuitPython Guide.

20220410 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.0a7.

2,932 Stars Like CircuitPython? Star it on GitHub!

Call for help – Translating CircuitPython is now easier than ever!

CircuitPython translation statistics on weblate

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

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

PlayStation PS4 to PS5 Custom Controller Mod – Happy Cat Productions – Adafruit Jobs Board.

33,963 thanks!

33,963 THANKS

Adafruit Discord

So close to 34k! The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 33,963 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

ICYMI

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 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.
it</h2>

ICYMI

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 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.