View this email in your browser.
Presenting 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.
CircuitPython 7.0.0 Beta 0 Released
CircuitPython 7.0.0-beta.0, has been released. Beta builds mark the final testing of CircuitPython 7 for stable release. It is relatively stable, but contains issues still to be addressed for 7.0.0. The Python API’s it presents are not expected to change incompatibly before the final 7.0.0 release, though they may be augmented.
Notable additions to 7.0.0 since 6.3.0 include:
- Support for the CircuitPython development workflow over BLE.
- Camera support on ESP32S2.
qrio: QR code decoding.
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.
- Rework of
vectorio and some of its API.
VectorShape is no longer needed for user code.
board.LED now consistently present on all boards that have such an LED.
PulseOut no longer needs a
- Unicode filename support.
Read more – GitHub.
JP’s Workshop Reaches 200 Episodes
John Park’s Workshop, a live video broadcast for Adafruit, has reached the 200 episode mark. Many projects have been highlighted, including those using CircuitPython – Adafruit Blog.
In celebration of this landmark, Tod Kurt made a special CircuitPython screensaver reminiscient of the Amiga Boing Ball screen saver with CircuitPython on an Adafruit FunHouse – Twitter.
Join Hackaday, Digi-Key, and Adafruit for a Halloween-themed contest! They want to see your crazy, creepy, ghostly, spooky, and awesome projects.
If costumes are your favorite part of Halloween, then why not dress up your outfit with some hacked upgrades? You could even design a ghoulish prop to add to your home’s Halloween decor or light up a Jack-o-lantern with LEDs. Whether it’s technical, artistic, or just plain terrifying, Hackaday wants to see your projects!
Check out the Halloween Show & Tell with Hackaday, Friday, October 29th at 1pm PT, to show off your awesome projects entered in the contest. Don’t forget to also share your projects on social media and use the #HalloweenHackfest!
Hackaday and Digi-Key have partnered on this Halloween-themed contest to offer three winners an online shopping spree to the Digi-Key warehouse! – Hackaday and hackaday.io.
Wippersnapper Beta Continues
Wippersnapper is the Adafruit IoT solution, allowing setup without any code. It is still in a invitational public beta and you may ask to join – Adafruit Blog.
Here is a post from one user – Twitter.
Finally had a chance to try the Adafruit Wippersnapper beta. Took all of 20 minutes to hook my Funhouse LED to an existing feed from an air quality sensor. The LED now lights up when the air quality is poor. No code required!
Recreating Classic Screensavers in CircuitPython
Tod Kurt recreates two classic screensavers on microcontrollers with color displays using CircuitPython: DVD and Flying Toasters – Twitter.
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott streams his work on Unicode and error string compression.
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:
You can see all of John’s CircuitPython Parsec episodes on YouTube.
The Upcoming Pixel Pump Pick-n-Place uses MicroPython
Pixel Pump is an open source vacuum pump for manual SMT assembly. It comes with a comfortable pen, a foot pedal, RGB LED buttons, and has a variety of features that make hand assembly a lot more fun. It runs on a Raspberry Pi Pico with MicroPython. It’s listed as coming soon – CrowdSupply, YouTube and Twitter.
News from around the web!
HackSpace Magazine Issue 46: Make Music with Pico and CircuitPython – Adafruit Blog.
A Simon Says game with the MacroPad from Adabox019 – Adafruit Forums (with code) and YouTube.
A Walk/Don’t Walk wearable with Raspberry Pi Pico and CircuitPython. The project is much faster than an earlier C++ implementation with less code – Twitter.
Learning Python without downloading software via this YouTube series – YouTube.
Whipped up a quick little 3D printed test jig for Fibonacci64 Nano, using an Adafruit QT Py, pogo pins, perf board, M2 standoffs, and CircuitPython code – Twitter.
Using Adafruit Macropad as LinuxCNC Control Pendant – unpythonic.net.
Huge shoutout to the Raspberry Pi and CircuitPython teams for making microcontrollers user friendly. I just got my first Pico working with a NeoPixel strip using CircuitPython, working in a matter of minutes. Very accessible to new learners. AMAZING! – Twitter.
bad USBs are SCARY! Build one with inexpensively with a Raspberry Pi Pico and CircuitPython – YouTube and Adafruit Blog.
DIY motorized 3D printed turntable with Feather and CircuitPython – codensolder.
Adafruit’s Make your own set of keycaps with silicone molds and UV-curable resin made it to the latest Keyboard Builders’ Digest! – Keyboard Builder’s Digest.
A Simon Says game with the MacroPad from Adabox019 – Adafruit Forums (with code) and YouTube.
Maker Pi RP2040 Mobile Robot programmed in CircuitPython – Cytron Technologies and Twitter.
Highlights from the new version of Git: 2.33.0 – GitHub Blog.
Want to make terrible noises with awful flashing colors? Yeah me too. But if you want glitchy scritchy noises in CircuitPython using just PWM, here’s a little toy for the MacroPad RP2040 – Twitter and GitHub.
TensorFlow Lite for Microcontrollers in MicroPython – Adafruit Blog and GitHub.
MorphESP 240 is a ESP32-S2 dev board from Morpheans which has a high-res IPS color display, lots of GPIO, and is fully compatible with both Arduino and CircuitPython – Twitter and CrowdSupply.
Getting Started With MicroPython – Real Python and Twitter.
APA102 and WS2812 LEDs PIO-based drivers have been added into the Pimoroni Pico MicroPython distro, along with matching C++ drivers – Twitter and GitHub.
Raspberry Pi Zero waters your plants and records growth time-lapse – Raspberry Pi Blog.
Supporting the Python community by “Shifting Left” – Tech at Bloomberg.
How to build your own AI art installation from scratch with Nvidia Jetson Xavier NX and Python – GitHub.
A graphical tool to make photo collage posters in Python – Python Awesome.
Let’s Build A Simple Interpreter, a blog series – Ruslan’s Blog.
The Newline character in Python – Short Tech Tutorials.
PyDev of the Week: Paulus Schoutsen on Mouse vs Python
CircuitPython Weekly Meeting for August 23, 2021 (notes) on YouTube
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Getting started with Raspberry Pi Pico using MicroPython.
Oak Dev Tech posts their board in development – the BREAD 2040. It’s shown running CircuitPython – Twitter.
Oak Dev Tech also posts their RP2040 driven RGB matrix board, CircuitPython programmable – Twitter.
Adafruit posts: “We’ve been asked a few times to make an MCP23017 breakout board – wiring up the raw chip is a bit difficult for some. Here’s a loooooong STEMMA QT board with all 16 IO pins broken out and matching ground pads for each. It could make for an easy plug-n-play expander. With 3 address pins, you could have 8 of these on one I2C bus for 128 total GPIO” – Adafruit Blog.
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!
Numpad 4000 Mechanical Keyswitch Data Entry Device from John Park
Adafruit MCP9601 I2C Thermocouple Amplifier from Kattni
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 332!
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 revised the custom USB HID device API added in CircuitPython 7: It now allows for multiple report ID’s. Now the report ID must be supplied by the creator: we no longer renumber the report ID’s. This is the last incompatible change we were planning to make for the CircuitPython API, so we can start issuing beta releases for CircuitPython 7.0.0 now.
All the core developers are working on the remaining 7.0.0 issues. I closed a few that are now fixed, and I am working on others.
I’ve been mostly working on fixing bugs in the core, as well as helping Dan and Kattni put the audio fixes & MP3 file playback through its paces.
This week I added MP3 playback to the MacroPad guide, finding a bug in the CircuitPython core in the process. Now, in the library,
play_file() works with both WAV and MP3 files. This is in preparation for a MP3 Playback on RP2040 guide that includes playback using the MacroPad library, and playback on Pico using CircuitPython. That guide will be out soon, so if you’re interested in playing MP3s on your RP2040, keep an eye out for that.
I published the Adafruit MCP9601 I2C Thermocouple Amplifier guide. The guide covers everything you need to know to get measuring with your MCP9601. There’s an overview, detailed pinouts page, examples in CircuitPython and Arduino, and resource downloads.
I also helped with moving the Learning System Guides repo to the same version of Pylint as the libraries, which meant updating from 1.9.2 to 2.7.1. Jeff set it up so it ignores all the current code, but lints all the new code. This enables us to go through and deal with the old code at our own pace versus needing to fix upwards of 1000 linting failures all at once. Dylan has been going through and linting a few at a time, so we’ll have everything updated soon. This was a long time coming, and I’m really happy to see we finally did it.
Finally, I worked through renaming all of the remaining instances of CircuitPython files called main.py in the Learn repo to code.py to be in line with our standard naming convention. This involved updating all the relevant guides as well. Thanks to Dylan for helping out with the guide updates!
This past week, I finally have the WebSerial ESPTool more stable and as a result I was able to get the NVM Generator code going. It has been updated to fully install the WipperSnapper binary code as well as generate and write the NVM Partition onto the board. While writing this, I was inspired and came up with a simple scripting system that allowed it to create and display each of the steps that it was currently on and it works well. You can check out the tool on GitHub Pages.
This week I’ve been hunting bugs. The most time consuming is USB errors on the iMX RT that prevent USB from working. Low level USB reliability is a very tricky thing.
I also took a detour into enabling Unicode filename support to go along with Unicode being easier to enter on mobile. I’ve done most of the work but have hit an issue with making builds too large.
One other small tweak I made was to raise the public broadcasting transmit power for the BLE workflow so that it is easier to initially connect. Once connected, it broadcasts at full strength with an encrypted device id.
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.
PyCon India is the largest gathering of Pythonistas in India for the Python programming language. The 13th edition of PyCon India will be taking place online from 17th September to 20th September 2021 – PyCon India 2021.
PyGotham is a New York City based, eclectic, Py-centric conference covering many topics. PyGotham TV 2021 is an online-only edition of PyGotham being held October 1-2, 2021. The call for proposals is here. Registration is here.
Send Your Events In
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 via cpnews(at)adafruit(dot)com.
CircuitPython’s stable release is 6.3.0 and its unstable release is 7.0.0-beta.0. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20210823 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.0-rc.1.
2,551 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
Supply Chain Specialist – Modular Robotics – Adafruit Jobs Board.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 30,575 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.