View this email in your browser. Warning: Flashing Imagery
Welcome to the latest Python on Microcontrollers newsletter! The week blew by with a US holiday at the start but there are lots of things happening: Python takes center stage this issue with several items, especially the results of the last Python Developer’s Survey. Projects galore including many macropad and keyboard implementations. Enjoy this issue!
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 Latest Python Developers Survey Results Are Out
The Python Software Foundation (PSF) announced the results of their fifth official annual Python Developers Survey. The work is done each year as a collaborative effort between the PSF and JetBrains. Late last year, more than 23,000 Python developers and enthusiasts from almost 200 countries/regions participated in the survey to reveal the current state of the language and the ecosystem around it.
Python is being used by the vast majority (84%) of survey respondents as their primary language and by many others as just one more tool in their box – PSF Blog and survey results summary.
Python 3.11 is up to 10-60% faster than Python 3.10
Python 3.11.0 has reached beta 1 status and is close to release. It is up to 10-60% faster than Python 3.10. On average, developers measured a 1.25x speedup on the standard benchmark suite. How is this being done? Python 3.11 is the first release to benefit from a project called Faster CPython, where CPython is the standard version of the interpreter. Faster CPython is a project funded by Microsoft, whose members include Python inventor Guido van Rossum – Analytics Insight.
Life as a Python Software Foundation Director
Life as a Python Software Foundation Director is a YouTube video window into what it takes to lead the foundation responsible for guiding Python – YouTube.
Google’s Plan to Make Chip Development More Like Open Source Software
The Google Hardware Toolchains team is launching a new developer portal, developers.google.com/silicon, to help the developer community get started with its Open MPW shuttle program. This will allow anyone to submit open source integrated circuit designs to get manufactured at no-cost – Google Open Source Blog via Slashdot.
Make: Boards Guide Review: Adafruit Feather RP2040
The Make Boards Guide reviews the Adafruit Feather RP2040 – Makezine.
One of the most exciting things about the RP2040 is the number of programming environments to which it is amenable. Raspberry Pi’s own Pico SDK enables development in C, C++ or assembly, while Earle Philhower’s Arduino-Pico core brings unofficial Arduino support to the board. But because this is an Adafruit board, we thought it would make the most sense to try it with CircuitPython, the MicroPython fork that Adafruit recommends as the best way for newcomers to the world of microcontrollers to get started.
If you would like to use CircuitPython with the Feather, the first thing you’ll need to do is flash it with the required firmware, which is a relatively simple process. This is thanks to the RP2040’s in-ROM USB UF2 bootloader, combined with Adafruit’s dedicated firmware download site: just save the .uf2 file to your PC, hold the BOOTSEL button while plugging in your board via USB, and drag the file to the “RPI-RP2” mass storage device that appears. The board will recognize the presence of this new firmware, flash and reset itself, and you will be presented with a newly-named drive “CIRCUITPY” into which you can start dropping CircuitPython code.
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 working on
displayio.TileGrid touch interactivity and showed a slider puzzle project demonstrating it.
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 random tones – 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.
Last week’s episode featured Pierre Constantineau discussing mechanical keyboards and next week features Anne Barela from Adafruit (your editor) – 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: Programming CircuitPython with Windows XP
David took up a quest posited by your editor on whether old versions of Windows could be used to program CircuitPython boards – Twitter Thread.
And to once and for all answer the question that I know has been dominating everyone’s thoughts since @anne_engineer’s Crowd Supply steam, YES, you can develop for the Adafruit Feather RP2040 on pocket-sized Windows XP devices!
The board is recognized and the CIRCUITPY drive is available. The Notepad editor was used to create a program. That’s all it takes, no special software, no IDE or compilation, just type text code and copy over to the board to run.
News from around the web!
I fell in love with these (small) displays. I wanted to manage 8 of them with CircuitPython, but it’s maybe not the best idea. The idea is to put buttons underneath and make a MIDI sequencer that displays the notes on each step, but I didn’t have time to move on – Twitter and GitHub.
Testing the ambient light sensor on the Adafruit PyPortal for a mini smart mirror project. Displaying the sensor values with displayio in CircuitPython – Twitter.
An Adafruit MacroPad mod, with 2 encoders and a 14 segment display added over I2C. A 3D printer case in TPU. It runs on CircuitPython – Reddit.
Keyboard Builders’ Digest Issue 81 is out with a pack of cool DIY keyboard related projects – kbd.news.
Adafruit Discord user ofniot notes their new book in Greek on learning Python. In the last two chapters, the reader uses their knowledge to implement Embedded Systems for the Internet of Things by developing programs in CircuitPython for microcontrollers. It covers SAMD21 with CP7.0 and more advanced projects using LoRaWAN – disigma.gr.
Bluetooth HC-05 configuration using CircuitPython – Cytron via Twitter.
I designed and built my first macropad. There’s a Raspberry Pi Pico inside and I used CircuitPython – Twitter.
Lilygo ESP32-S2 TFT display board working great with CircuitPython – Twitter.
See this Twitter thread from March through May describing the iteration to make inexpensive RP2040-based boards that are capable of running MicroPython and CircuitPython – Twitter.
Using a Raspberry Pi Pico, CircuitPython and a Pimoroni Pico Display as a simple MIDI SysEx patch “loader” for a vintage synth, in this case a Casio CZ 3000 – Simple DIY Electronic Music Projects and YouTube via Twitter.
A Raspberry Pi RP2040-based USB keyboard controller with KMK firmware in CircuitPython – Twitter.
2nd attempt at Macro Keyboard. Pi Pico running Adafruit CircuitPython. Buttons (and box) from The Pi Hut. Select All, Copy, Paste and Paste Plain on dedicated buttons. Next steps: wooden box, make LEDs in buttons work, secure Pico in box and solder together – Twitter.
A Wonder woman light up NeoPixel brooch with CircuitPython – Twitter.
Connection machine computer lights jacket with NeoPixels and CircuitPython. A happy accident – animation generated by text scroller code and a misconfigured NeoPixel matrix – Twitter.
Secrets of MicroPython: MQTT on ESP32 – Bhavesh Kakwani.
The Badger 2040 keypad is a programmable USB macropad with keymap display using a Pimoroni’s Badger e-ink gadget, which is driven by an RP2040 chip. Thus, the macropad’s firmware is based on CircuitPython and can be easily flashed/updated – Andreas Känner via kbd.new.
Re-AOL: A reverse-engineered AOL 3.0 server written in Python – Lunduke Journal of Technology, Patreon and Discord.
iRobot Education has embraced coding Python in the web browser – python.irobot.com/.
PyDev of the Week: Denny Perez on Mouse vs Python
CircuitPython Weekly Meeting for June 6, 2022 (notes) on YouTube
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? 50+ Free Python Books for Beginners and Advanced Developers.
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!
Mini GIF Players from Noe and Pedro
Updated Learn Guides!
PyLeap App from Trevor Beaton
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!
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!
This past week has been starting a few things at once to accommodate one ending up on hold for reasons. I’m close to finished with the QT Py ESP32 Pico, but need the hardware to complete it. The QT Py will be here tomorrow.
I worked on getting GIFs of double-pressing reset on various CircuitPython boards to get into the bootloader for adding to the WipperSnapper app. Getting the rhythm right is one of the biggest support issues with anything involving putting boards into the bootloader, and WipperSnapper relies on this. We’re hoping that the addition of the GIFs will help alleviate that.
Next up is a guide on fancifying your GitHub profile. There are a number of tools that can get you through using Markdown to add all sorts of information to your profile in simple and more involved ways. This guide will cover some of the available options and link to many more.
This past week I did some work on the circuitpython.org website. First I added a bunch of additional checks that are performed on new Pull Requests that will check things such as the image dimensions and that required fields have values that make sense. I also went through and fixed issues that were caught with these checks on the current boards. This should make reviewing any new boards much easier.
The other thing I did was to add issue labels to the open issues under the contributing section of the website. This will make it easier to see all open issues related to CircuitPython at a glance.
This week I worked on making the PWM frequency used for the display backlight be an argument that can be set when the display is initialized inside the core. This allows for the PyPortal Titano and any devices using its same display driver chip to have better more accurate control over the backlight, especially at lower brightness levels. The argument is working successfully on the Titano, the last thing to do is update all boards with built-in displays to pass the default value to the new argument during display initialization.
I’m also working on my core PR to add a
contains method to TileGrid class so it can be touch interactive, I will complete some minor requested changes for that PR and look into making a similar API for Group object as well.
This week I’ve been wrapping up my work to optimize the translation code size. It trades compile time for code size.
I’ve also been playing around with changing the CircuitPython’s terminal to have a status bar. The status bar would allow us to show all of the different statuses: wifi, ble, usb and usb host. The status bar work is part of the larger web workflow goal which would auto-connect to wifi, advertise with mdns and present a REST API for editing CircuitPython files.
I’ve been working on some IoT projects this past week. First, I redid the OpenWeatherMap PyPortal demo project to be in portrait mode and to turn the display off and on with the PyPortal’s light sensor. It involved rescaling the bitmaps and changing up the coordinates of the text elements. This is for a collaboration project with the Ruiz brothers that will be coming out in a few weeks.
The other IoT adventure I’ve been on has been using CircuitPython with Microsoft Azure. I’m using the Feather ESP32-S2 TFT with a BME688 sensor. On the TFT screen, I have the temperature, humidity, pressure and battery life data displayed. Every 15 minutes the data is sent up to Microsoft Azure and the TFT shows the timestamp. This learn guide will be out soon and will go through how to setup everything on the Azure side as well.
I’m going to be off next week, but when I return there are some fun music tech/synth projects in the pipeline.
The next MicroPython Meetup in Melbourne will be on June 22nd – Meetup. See the slides of the May 25th meeting.
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.
CircuitPython’s stable release is 7.3.0. There is no unstable release at the moment: watch for 8.0.0-alpha.1. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20220606 is the latest CircuitPython library bundle.
v1.18 is the latest MicroPython release. Documentation for it is here.
3.10.5 is the latest Python release. The latest pre-release version is 3.11.0b3.
3,030 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, Micro Center, Raspberry Pi and more.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 34,596 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.