View this email in your browser.
As we head into the back to school season, we present this week’s Python on Microcontrollers newsletter! We’re on Discord, Twitter, and for past newsletters – view them all here. If you’re reading this on the web, subscribe here. Here are this week’s headlines:
Building With CircuitPython Podcast
The Real Python Podcast presents Building With CircuitPython & Constraints of Python for Microcontrollers with the lead developer of CircuitPython, an interview with Scott Shawcroft at Adafruit – Real Python Podcast.
Can you make a version of Python that fits within the memory constraints of a microcontroller and have it still feel like Python? That is the intention behind CircuitPython. This week on the show, we have Scott Shawcroft, who is the project lead for CircuitPython.
We talk about all things CircuitPython. While working with the language on several projects I have developed many of my own questions to ask Scott. Scott answers my questions about boot loaders, packages, the bundle, and Bluetooth low energy (BLE).
He also talks about the struggle of fitting the language and board specific libraries within tiny memory constraints. We discuss projects and boards for beginners, and many resources to learn more.
Linux Turns 30
On August 25th, Linux, the ubiquitous operating system, turned thirty years old, dated from a post graduate student Linus Torvalds made on the comp.os.minix newsgroup. – Adafruit Blog.
Linux turns 30: Linus Torvalds on his “just a hobby” operating system, an interview with Linus Torvalds – ZDNet.
Arduino Embraces Python
Power of Python for Arduino Nano RP2040 Connect and Nano 33 BLE – Arduino Blog and the Adafruit Blog.
Python support for three of the hottest Arduino boards out there is now yours. Through our partnership with OpenMV, the Nano RP2040 Connect, Nano 33 BLE and Nano 33 BLE Sense can now be programmed with the popular MicroPython language.
Halloween Hackfest
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 décor 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.
Ten Beginning CircuitPython Education Courses
Professor John Gallaugher has released ten new CircuitPython School videos for his Fall course. They are tutorials for beginners. The first videos use the Adafruit Circuit Playground Bluefruit/Express. He states the videos are free to share with educators and newbies.
Check out the first video which describes the series and see the whole playlist.
The Python on Microcontrollers Reaches 150 Issues
This is the 150th Python on Microcontrollers Newsletter! A huge thank you to the community and the approximately 9,000 subscriber base for all the support provided over nearly three years! – Anne Barela, Editor
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott streams his work on an Epic Memory Bug.
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!
Displaying phases of the moon on an Adafruit MagTag in CircuitPython – Twitter.
The MTA Portal shows the train arrival times for selected stations – Adafruit Blog and GitHub.
A glowy Tic-Tac-Toe game for the Adafruit MacroPad. It has nice RGB Cherry MX style keys and an RP2040 programmed in CircuitPython – Twitter and GitHub.
My Adafruit PyGamer has just been upgraded to CircuitPython 6.3 and Vacuum Invaders from Deshipu still works like a charm! Who said CircuitPython could not be used for video games? – Twitter.
Using Adafruit Blinka and CPython to prototype a driver for a display prior to implementing a native driver on an FPGA – Twitter.
Made two versions of the Noe & Pedro 8×8 display so I could show students Black Acrylic diffusion (right) vs no acrylic (left). Coded in CircuitPython, of course. From the Adafruit guide – Twitter.
Using the Solderparty Keyboard FeatherWing and a Feather S2 with CircuitPython. Control brightness of keyboard and screen – Twitter.
Geek Mom Projects has built a linked bracelet in which tiny (10mm x 8mm) metal hinges provide both structural and electronic connections between segments. The controller is an SMT soldered Adafruit QT Py running CircuitPython – Twitter Thread.
Testing APA102, WS2812 RGB LEDs with Pimoroni Plasma 2040. This was very easy thanks to CircuitPython – Twitter.
A distance and gesture sensor display for outside my office door. Classes start next week and I want the Physical Computing students to be able to compare parts for their projects. All coded in CircuitPython using an orchard of Adafruit devices – Twitter.
Brandon Satrom will be presenting a talk entitled “Exploring the Wonderful World of Python on Devices” with demos featuring Adafruit CircuitPython, Raspberry Pi Pico with MicroPython and the Blues Wireless Notecard at the arm DevSummit October 19-21, 2021 – Twitter.
Hackaday’s Keebin’ with Kristina: The One with the Index Typewriters – The New Hotness: Adafruit’s RP2040 MacroPad – Adafruit Blog and Hackaday.
PR to add the ability to run MicroPython while having the console over USB – Twitter and GitHub.
GitHub CLI 2.0 is out! It includes support for extensions, allowing you to create and share custom commands like:
💭 gh user-status
🌳 gh branch
🖥️ gh screensaver
More – GitHub Blog and Twitter.
A Python Data Scientist’s Guide to the Apple Silicon Transition – Anaconda.
A mini Raspberry Pi bar top game machine – Twitter.
Magicbit is a wire-free, modular STEM education platform which runs MicroPython – CNX Software and YouTube.
Automatic indoor garden watering with M5Stack and MicroPython – hackaday.io.
The Merlin Camera packs a Raspberry Pi providing a Python-powered custom handheld camera – Twitter and hackster.io.
Automatically Light Up a Sign When Your Webcam is in Use with Python – Fedora Magazine.
Pico8lisp is a small lisp interpreter built on PICO-8 virtual machine – lexaaloffle.com.
A Python module for creating Excel XLSX files – Python Awesome and Twitter.
MPIRE for Python: MultiProcessing Is Really Easy – an introduction to MPIRE, the lightning-fast and most user-friendly multiprocessing library for Python – Towards Data Science.
PyDev of the Week: Joshua Ebner from Mouse vs Python
CircuitPython Weekly Meeting for August 30th, 2021 on YouTube and notes
Programming Note for the Discord CircuitPython Weekly Meeting – Monday September 6th is a US holiday. The meeting will be held Tuesday September 7th, same time, 1 pm Eastern US time.
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? YouTube video: You need to learn Python RIGHT NOW!.
Coming soon
Espressif writes:
ESP-Box is our soon to be open sourced 3D printing project with ESP32-S3, dual core processor with AI instructions, 16 MB RAM, WiFi+BLE, LCD touch screen, dual mics for AI speech interface, speakers, 22.4° magic angle aligned docking station – Twitter.
In the thread, Espressif is asked about ESP32-S3 availability and the answer is “Now, Please Write to us (Espressif)”.
Unexpected Maker states “My new FeatherS2Neo is getting super close to being let out into the world!” – Twitter.
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 six 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!
There were no new Learn guides this week. Keep an eye out here for more lovely guides next week!
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 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 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!
Updated 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!
Dan
Last week I improved audio playing on SAMD chips, adapting the changes I had made to improve RP2040 audio. The way DMA works on the two chips is quite different, but in the end I was able to figure out how to get the information I needed about which DMA transfer had just completed.
I released CircuitPython 7.0.0-beta.0 on Monday, August 23. Immediately someone found a usb_hid bug for me to fix, but it was quick to find the solution. We expect to be issuing another beta soon. We only have about ten issues to resolve for 7.0.0, down from about two dozen the previous week.
Jeff
It’s been more bug squashing. In the past week, the bug I was happiest to squash was one which limited the usability of the microcontroller.nvm
on esp32-s2 boards. Before, the module didn’t quite behave the same as on other boards, could only store a few hundred bytes, and you could even get stuck without the ability to update the contents of nvm! now, you can store 8kB and should never get stuck without the ability to update.
The downside is that any nvm settings from 6.3 will be lost when you upgrade to 7.0, and 6.3 won’t be able to read settings stored by 7.
Kattni
This week I’ve been working on two guides. One for the SCD-4x CO2 sensors, and one for MP3 playback on RP2040. Expect to see both of those completed very soon.
Next up after that is updating the INA219 guide for the STEMMA QT revision of the board, and a guide for the PAM8302 amplifier, which won’t be out until the MP3 guide is out because the example in that guide will be used in the PAM guide.
I also did a lot of testing with the CO2 sensors to verify they work properly on Raspberry Pi, CircuitPython and Arduino. The sensors work great. My air quality? Apparently not so great.
Melissa
This past week I focused on implementing a new interface for the CircuitPython Code Editor. Getting the initial look implemented was pretty straight forward, but learning the intricacies of the JavaScript based controls enough to style and manipulate them has been the bigger challenge. Also, working on a design that functions in both the desktop and mobile environments was a bit challenging as well. It should be in a state for people to play around with soon.
Scott
This week I did some testing of the BLE workflow. I made two tweaks to it as a result. First, I changed directory delete to be recursive. This makes it much quicker to delete a non-empty directory. Second, I changed the auto reload to wait after a write so that the BLE client has a chance to start a second command before the BLE connection is reset.
Besides that I’ve been bug hunting.
- I enabled Unicode filename support in CP and tweaked string repr to print emojis instead of escaping them.
- I fixed USB on iMX RT which was broken due to sleeping while we needed to do something for USB.
- I fixed I2C allocation on RP2040 so that pins don’t need to be next to one another.
- I added multiple status DotStar support (useful for Funhouse.)
- I fixed an ESP32-S2 crash when using an I2CDisplay.
This next week will be a similar mix of BLE work and bug hunting.
Upcoming events!
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
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.
Latest releases
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.
20210827 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.0rc1.
2,556 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
Exhibit Maintenance Technician – Adafruit Jobs Board.
30,677 thanks!
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 30,677 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
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 our Discord or post to the forum for any further questions.