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 dive in:
CircuitPython 7.0.0 Alpha 5 Released
CircuitPython 7.0.0-alpha.5, has been released. It is relatively stable, but contains a number of issues still to be addressed for 7.0.0. The Python API’s it presents may change.
Notable additions to 7.0.0 since 6.3.0 include:
- Support for the CircuitPython development workflow over BLE.
- Camera support on ESP32-S2.
keypad key-scanning module.
- Run-time customization of USB devices.
- Merging in of MicroPython fixes and enhancements as of MicroPython 1.16.
_pixelbuf is now
colorwheel() routine moved to
supervisor.ticks_ms() to allow easier time-keeping.
- Simplifications to the RGB status LED codes.
- A clocking fix for a few samples of RP2040 boards.
Read more – Adafruit Blog and GitHub.
The State of Open Source Hardware in 2021
The Open Source Hardware Association (OSHWA) has released their annual report The State of Open Source Hardware in 2021. It’s a good resource to send someone who wants to know about open-source hardware and see who is making it – OSHWA Blog, OSHWA Report and Adafruit Blog.
CircuitPython Day is August 6th, Set Your Calendars!
8-6-2021 is the Snakiest day of the year and it’s also this year’s CircuitPython Day! The day highlights all things CircuitPython and Python on Hardware.
See the latest CircuitPython Day 2021 Video.
Working with CircuitPython? Tag your projects #CircuitPythonDay2021 on social media and Adafruit will look to highlight them.
- 1 pm US Eastern Time: Jeff, Dan and Kattni Discuss CircuitPython
- 3 pm US Eastern Time: A CircuitPython Board Tour with Ladyada
- 5 PM US Eastern: Time: Scott’s Deep Dive, special edition
EuroPython 2021 is happening this week! Tickets are required for this online conference. More – ep2021.europython.eu.
Preparing for the conference – EuroPython.
The Adafruit IO CircuitPython Library Has Been Updated
The Adafruit_CircuitPython_AdafruitIO library has been updated to version 5.5.0. It allows groups to be subscribed to and unsubscribed from – GitHub.
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott streams his CircuitPython 7.0.0 bug fest.
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!
A USB-to-MIDI converter! It uses an Adafruit Rotary Trinkey with a USB jack hot glued in place of the encoder. This is a really bad idea (structurally). But at least the code is in CircuitPython – Twitter Thread.
A CircuitPython video copy bandwidth shootout between the Raspberry Pi Pico, Adafruit Metro M4 Express, Adafruit Feather M4 Express, and PJRC Teensy 4.0 – James Bowman.
The added Stemma/Qwiic connector on the PixelWing means you can have more plug and play fun! We’re making a fun project using the Adafruit MPU 6050 and CircuitPython to show how you can use MPU data to alter the matrix output – Twitter.
Moving objects on a screen by using a BlackBerry trackball module with an Adafruit CLUE and CircuitPython – Twitter (Japanese).
Using the Keyboard FeatherWing with various boards and CircuitPython – Twitter.
Restoring an old lantern. The inside is an Adafruit ItsyBitsy M4 powering 32 NeoPixels and running CircuitPython to change colors and run fun animations controlled by two buttons on the bottom – Twitter.
Latest Python Extension for VS Code release introduces a faster way to set project roots – SD Times.
The July 2021 Newsletter is out. Also the Python Software Foundation New Fellow Members for Q2 2021 was announced.
The Bluepad32 library in the CircuitPython Community Bundle allows use of your PlayStation (PS3, PS4, PS5), Nintendo (Wii, Wii U, Switch) and Xbox One S gamepads in your electronics project – retro.moe.
A demo of the LILYGO board using CircuitPython – Twitter.
NeoPixels, QT Py (cameo CPX to proto code), 3D printing, and dabs of hot glue – not to mention a twist. – Molecularist blog.
Digi XBee MicroPython PyCharm IDE Plugin – Digi and Twitter.
Using MicroPython With Kitronik BBC micro:bit Products – Kitronik Blog and Twitter.
Raspberry Pi Pico (RP2040) SD Card (Read & Write) with MicroPython and C/C++ by Digi-Key Electronics – YouTube and Twitter.
Control an HC-SR04 Ultrasonic Sensor with a Raspberry Pi Pico and MicroPython – peppe8o.
Drawing Triangles on the Pi Pico and Pimoroni Pico Explorer Board with MicroPython – YouTube.
A mini Raspberry Pi Server with a built-in UPS. The server stats are displayed on an OLED display using a Python script using CircuitPython libraries and the Blinka interface – The DIY Life and the Adafruit Blog.
Use Python to Detect Music Onsets – freeCodeCamp.
Python import: Advanced Techniques and Tips – Real Python.
Python zip() Function – Explained with Code Examples – freeCodeCamp.
Bite-sized refactoring – Pydon’t.
Why not just use async Python for this API? – Modern Craft Studio.
Freezing Your Python Code – Hitchhiker’s Guide to Python.
Golang vs. Python: Which One to Choose? – DZone and Twitter.
Brython (Browser Python) is an implementation of Python 3 running in the browser, with an interface to the DOM elements and events – Main site and GitHub.
An Example Linux GPIO Device Driver in Rust.
freemocap is a work in progress motion capture system. Each recording must (for now) start with an unobstructed view of a Charuco board generated with Python commands – GitHub.
Minimum Viable Governance: lightweight community structure to grow your FOSS projects – GitHub Blog.
Oh My Git! An open source game about learning Git – Oh My Git.
PyDev of the Week: Philipp Rudiger from Mouse vs Python
CircuitPython Weekly Meeting for July 26th, 2021 on YouTube and notes doc
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? New Book: Visual Studio Code for Python Programmers.
In this past Sunday’s Desk of Ladyada, there are Stemma QT redesigns of the SCD40/SCD41 and IS31FL3741 based boards and redesigning some recent boards like the Matrix Portal to use ESP32-S2 – YouTube.
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, but several are in development.
Looking to add a new board to CircuitPython? It’s highly encouraged! Adafruit has four guides to help you do so:
New Learn Guides!
MacroPad 2FA TOTP Authentication Friend from Carter Nelson
MacroPad Braille Keycaps from Noe and Pedro
CircuitPython Project Bundle
When you get to the CircuitPython code section of an Adafruit Learn Guide, sometimes things can get a bit complicated. You not only have the code you need to upload to your device, but you likely also need to add some libraries that the code requires to run. This involved downloading all the libraries, digging through to find the ones you need, and copying them to your device. That was only the beginning on some projects, as those that include images and/or sound files required further downloading and copying of files. But, not anymore!
Now, with Project Bundles, you can download all the necessary code, libraries and, if needed, asset files with one click! We automatically check which libraries are required for the project and bundle them up for you. No more digging through a huge list of libraries to find the ones you need, or fiddling with looking for other files or dependencies. Download the Project Bundle, copy the contents to your device, and your code will simply work. We wanted to make this the easiest way to get a project working, regardless of whether you’re a beginner or an expert. We’ll also be adding this feature to popular IDEs as an add-on. Try it out with any Circuit Python guide on the Adafruit Learning System. Just look for the ‘Download Project Bundle’ button on the code page.
To download and use a Project Bundle:
In the Learning System – above any embedded code in a guide in the Adafruit Learn System, you’ll find a Download Project Bundle button.
Click the button to download the Project Bundle zip.
Open the Project Bundle zip to find the example code, all necessary libraries, and, if available, any images, sounds, etc.
Simply copy all the files over to your CIRCUITPY drive, and you’re ready to go!
If you run into any problems or bugs, or would like to submit feedback, please file an issue on the Adafruit Learning System Guides GitHub repo.
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 327!
Here’s this week’s new CircuitPython libraries:
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!
I released CircuitPython 7.0.0-alpha.5 on Wednesday, July 21. The CircuitPython core team went through all the 7.0.0 issues, trimmed the list a bit, and are now resolving the issues. Of course new issues also appear to fix, but we’re making good progress.
Using the new NeoKey 5×6 Ortho Snap-Apart and a Feather S2, I verified that the new keypad module works on the ESP32-S2 series of microcontrollers.
I also added a JPEG capture mode to the OV2640 camera library for CircuitPython. The whole JPEG has to be temporarily stored in RAM before it is written to an SD card, so the ESP32-S2 with generous PSRAM is a good choice and can capture 2-megapixel JPEG images.
I published the Adafruit TCA4307 guide. The TCA4307 is a hot-swap I2C buffer. I2C isn’t hot-swappable by itself, but STEMMA QT connectors make it really convenient to do, and that’s where the TCA4307 comes in. This was a quick guide, as there’s no code to go with it. It includes an Overview, Pinouts, example wiring diagram, and Downloads resources.
I also wrote up an example for Noe and Pedro for their MacroPad Braille Keycaps guide that plays a tone for each key for an added level of accessibility.
We did the Hackaday Hackchat on Wednesday. We discussed DIY keyboards and CircuitPython keyboard support. We answered a lot of questions and gave away a fun Hackaday custom keycap to a few folks towards the end.
The highlight of my week, though, was levelling up my contributions to the CircuitPython core. I renamed
adafruit_pixelbuf (and aliased it back for backwards compatibility) to match the new Python version of
adafruit_pixelbuf which will eventually simplify the NeoPixel and DotStar libraries. I had help from Dan and Jeff. It’s my biggest core contribution to date. I learned a lot and enjoyed dipping my toes into the core.
This past week, I worked on add Blinka Support to the BeagleV Starlight, which is a beta prototype not yet available to the general public. I was able to get GPIO and I2C functioning which covers a great deal of add-on boards. I didn’t test UART, though it would likely work with PySerial. I also spent some time working on some GitHub issues which were focused on CircuitPython 7.0 compatibility with some of the libraries.
At the end of last week Dan, Jeff, Kattni and I went through open 7.0.0 issues to categorize them and then also the open pull requests. We got the 7.0.0 milestone down to ~40 issues and divided them among us. Since then, I’ve been getting changes merged to fix the issues assigned to me. We’re squashing the bugs to get us closer to the 7.0.0 stable release. It shouldn’t be too far away now. Please file an issue if you are having issues with the latest alpha (version 5 at the moment.)
We also closed a number of pull requests and only had three left open. I think it’s been over a year at least since we were that low. We tend to worry if we have more than 20 open so this is exciting!
All-in-all we’re making good progress on 7.0.0. Once I’m through my bugs I’ll be circling back to BLE workflow stuff. It still needs polish.
EuroPython, the largest conference for the Python programming language in Europe, will be held online July 26 – August 1, 2021. More information at https://ep2021.europython.eu/
PyOhio 2021 is a free event on July 31, 2021 – PyOhio.org via Twitter.
PyConline AU will be held 10-12 September, 2021 – pyconlineau
Kiwi PyCon XI, Ōtautahi Christchurch, 17th, 18th, & 19th of September 2021 and CFP ends July 16th – python.nz.
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.3.1 and its unstable release is 7.0.0-alpha.5. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20210726 is the latest CircuitPython library bundle.
v1.16 is the latest MicroPython release. Documentation for it is here.
3.9.6 is the latest Python release. The latest pre-release version is 3.10.0b4.
2,522 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.
Job of the Week
Design/Build wearable necklace pendant that buzzes – Adafruit Jobs Board.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 30,112 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.