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 get started!
Python on hardware in Gartner Embedded Software and Systems report! Now in the “Slope of Enlightenment”
Research firm Gartner has noted that Python on hardware has passed all the hype and now is becoming mainstream in hardware development.
“Position and Adoption Speed Justification: Python is a high-level programming language, suited to fast development and easy maintenance. MicroPython brought these advantages to an embedded environment and led to the creation of CircuitPython (which extends support to Adafruit’s popular range of embedded platforms) …”
“Python was originally heralded as an ideal language for educational applications, being selected as the default development environment for the Raspberry Pi Foundation. MicroPython provides a subset of the Python language but replicates the structure and syntax so that developers can take their skills and their applications into low-end hardware. Support for MicroPython has been steadily increasing with the processing power available in embedded systems. We also see more API libraries and peripheral support being added.”
“User Advice: Adopt MicroPython to accelerate development and reduce development costs if time to market is critical. As an interpreted language, Python requires more processing power than low-level languages, so it requires boards with 32-bit microcontrollers. This limitation has become less important as IoT increasingly adopts 32-bit microcontrollers for most applications.”
Gartner noticing Python on hardware is a big deal, and this is a report from last year, there is A LOT more that has happened and is happening now. From Python on calculators to 200+ boards Adafruit has that supports Python on hardware. It’s also worth noting that MicroPython moved to a better position in Gartner’s report year over year (2019 to 2020 too). Gartner also did a good job summarizing why Python on hardware can accelerate development and reduce development costs.
More – Adafruit Blog and Arduino Pro.
CircuitPython 6.3.0 Release Candidate 0 Now Out!
CircuitPython 6.3.0 Release Candidate 0 (6.3.0-rc.0) is the first release candidate for the stable release of CircuitPython 6.3.0. Notable changes since 6.2.0 include many new boards, many corrections to existing boards, the addition of a consistent board.LED to most boards, and a timing fix for the certain samples of RP2040 boards.
Read more in the Release Notes on GitHub and on the Adafruit Blog.
CircuitPython snakes its way to the Arduino Nano RP2040 Connect
CircuitPython now runs on the new Arduino Nano RP2040 Connect – Adafruit Blog.
Get the software now on CircuitPython.Org.
Python back at second position on the TIOBE Programming Popularity Index
Last November, Python briefly swapped positions with Java for the second position in the TIOBE index. This month Python strikes again. The difference is only 0.13%, but it is reasonable to assume that Python will keep its second position for a longer time now. It might be even heading for the first place of the TIOBE index in the next half year, because C is (just like Java) losing popularity – TIOBE.
Machine Learning on the Edge with Adafruit & Microsoft Lobe
Machine learning is a transformative tool that’s redefining how we build software — but up until now, it was only accessible to a small group of experts. Adafruit thinks machine learning should be accessible to everyone, that’s why they partnered with Microsoft and their Lobe platform for an easy to use machine learning kit using the Adafruit Braincraft hardware for Raspberry Pi, to bring people’s machine learning ideas to life – video.
Ladyada appeared in the Microsoft Build keynote with Kevin Scott, CTO of Microsoft – YouTube and more info on the Adafruit Blog
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott streams his work on BLE debugging.
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!
Catch John Park’s CircuitPython Parsec videos every Monday, and catch back episodes – YouTube Playlist.
Automating indoor air quality with Adafruit FunHouse CO2 Monitoring and CircuitPython – Digi-Key and Twitter.
“How I monitor my greenhouse with CircuitPython and open source tools” – Keep track of your greenhouse temperature, humidity, and ambient light using a microcontroller, sensors, CircuitPython and MQTT – OpenSource.
Easy rainbow gradients in CircuitPython with the built-in adafruit_pypixelbuf.colorwheel() function. Here’s it being demonstrated on an Adafruit Trinket M0, NeoPixel strip, and Perfect Circuit sticker diffuser – Twitter.
MIDIPedalBox is a USB MIDI Pedal, powered by CircuitPython and an Adafruit Trinket M0 – GitHub.
A rotating musical lithophane with 3D printing and CircuitPython – Twitter.
IoT on Raspberry Pi Pico using CircuitPython and Adafruit IO – Cytron.io, YouTube and Twitter.
Using touch+hid libraries with the Adafruit Neo Trinkey to get keyboard typing was a breeze to set up. Thank you so much for the case and the guide @videopixil @ecken and @kattni! – Twitter and GitHub.
Using a Break Beam Sensor with Python and Raspberry Pi – simonprickett.dev, YouTube, and Twitter.
Tiny MIDI controller with Raspberry Pi Pico and CircuitPython – 4dcu.be.
LEGO has released MicroPython documentation for the LEGO MINDSTORMS Inventor Hub. MicroPython can run on the Hub – LEGO GitHub.
Build A Simple Raspberry Pi Pico Robot with MicroPython – Tom’s Hardware.
Adding Digital I/O To Your CircuitPython Compatible Board: Part 1 – The 74HC595 – Woolsey Workshop.
A new Audio Shield by Atmegazero, based on the MAX98357 I2S chip. Works great with CircuitPython 6.2 – Twitter.
Hacking the Adafruit Motor Bonnet extra PWM pins to control LASER BEAMS with CircuitPython – Twitter.
Getting Started with OpenMV and MicroPython on Arduino Portenta H7 – Arduino and Twitter.
CANPico is an open-source board which adds CAN Bus to Raspberry Pi Pico. There is also an open-source MicroPython SDK as well as a pre-built firmware image, making it possible to easily control or monitor the CAN bus using Python – CNX Software.
Invasion – ArduPy Game is a small retro like game created in ArduPy / MicroPython for the Wio Terminal – GitHub, Hackaday and YouTube.
Create Mood Lighting with Block-Based Coding on Raspberry Pi Pico with BIPES, a block-based coding environment for MicroPython devices – Make Use Of.
mb_PSRAM_64Mb_SPI.py – a very simple MicroPython module/driver for Espressif/Generic 64Mbit SPI PSRAM (Adafruit product ID: 4677 or similar). Works with RP2040, should work with other MicroPython boards that have SPI – GitHub and MicroPython Forum.
Finding memory bugs with Google Address Sanitizer (ASAN) on microcontrollers – MCU on Eclipse and GitHub.
The final keynote from PyCon US 2021 was from the Python Steering Council answering questions gathered from the community about current happenings and future goals. Above is a visual recap of the address – Twitter.
Machine Learning Visualization Tools: a single Python file with some tools for visualizing machine learning in the terminal – GitHub.
NeoPill: a STM32 Blue Pill-based NeoPixel emulator – Hackaday, Hackaday.io and GitHub.
Working with files in Python – Real Python.
pyFLAC: Real-time lossless audio compression in Python – Sonos.
Making a modern Python Package with Poetry – Ari Codes and GitHub.
Find Similar Images in Python with DeepImagesearch DeepLearning based Library – Twitter and YouTube.
Why Python hasn’t taken off on mobile, or in the browser – according to its creator. Python creator Guido van Rossum reveals the strengths and weaknesses of one of the world’s most popular programming languages – ZDnet.
Introduction to Git and GitHub for Python Developers – Real Python and Twitter.
PyDev of the Week: Jaime Buelta on Mouse vs Python
The CircuitPython weekly meeting was postponed due to Memorial Day. Look for two meeting links in next week’s newsletter.
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Python snakes its way to the TI-84 Plus CE Python Graphing Calculator.
As CircuitPython emerges in its seventh iteration, join Blinka and the MicroPython mascot in this fun poster coming soon to the Adafruit shop – Adafruit.
The upcoming RP2040 Stamp on a RP2040 Carrier with a Funduino JoyStick Shield, sporting the Nokia 5110 display, getting some classic Snake action using CircuitPython – 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!
Adafruit IO IOT Hub with the Adafruit FunHouse from Dylan Herrada
Adafruit NeoKey Trinkey from Kattni
Updated Learn Guides!
Adafruit I2C QT Rotary Encoder 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 317!
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!
This week I released CircuitPython 6.3.0-rc.0, Release Candidate 0. If there are no serious bugs revealed, this release will become 6.3.0 final, which we would release early next week after the US holiday on Monday. We try to avoid doing stable releases late in the week or over a weekend or holiday so that we can be available for support. Once 6.3.0 final is released, we will start doing 7.0.0 alpha releases.
I have started to work on a native (C code) matrix keypad module, which you’ll be able to use for many kinds of keyboard scanning, including just a few buttons, macro keypads, typing keyboards, or even some kinds of music keyboards.
After taking a week off, I’m back and finishing up adding the rgbmatrix module to our ESP32-S2 boards. In CircuitPython 7, you’ll be able to do a LED matrix+WiFi project without needing an AirLift module.
This week I published the NeoKey Trinkey guide. It has everything you need to get started with your NeoKey Trinkey, including pinouts, examples and resource downloads. I also added a CircuitPython page to the Rotary QT guide.
The SAMD21 boards are up for PrettyPins, so the Neo Trinkey and the NeoKey Trinkey are done, and as time permits, I’ll continue on down that list.
Next up is the Rotary Trinkey guide. Keep an eye out for that coming soon!
This week I got bogged down with bugs in the PinAlarm module for the upcoming RP2040 sleep module, which have been causing erratic failures on the pullups, unexpected wakeups, and constant restarting after the code.py file has been saved. I’ve been working through it by building some reliable control tests and diving further into the GPIO, power and watchdog register documentation, though it wasn’t helped by getting knocked out some vaccination travel and side effects. I’m hoping to still get through all of it this week, and finally get some sleep for a little while!
This past week, I was mostly catching up on GitHub issues that had been accumulating due to all the guide writing I was doing. One of the items I was testing out was the new Beaglebone StarFive with Blinka. At this point, there’s still a lot of work to do to get it going. I also went through the boards on CircuitPython.org and updated the images as well as added a few missing boards.
This week I’ve been working on the CircuitPython side of the BLE file transfer service. This service is a core piece of the “BLE workflow” that will enable folks to program a CircuitPython wirelessly over Bluetooth Low Energy (BLE). BLE is commonly used by phones and tablets to communicate to other devices.
I’ve gotten advertising and connecting working. Now I’m working on implementing the protocol pieces. I’ve written code for each command in the protocol and my next step is to test each one. I’m also finding issues in the Glider app when doing this too and will fix them as well.
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.
Call for proposals for PyConline AU 2021 runs until June 10th, 2021 with the event held 10-12 September, 2021 – pyconlineau
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.2.0 and its unstable release is 6.3.0-rc.0. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20210531 is the latest CircuitPython library bundle.
v1.15 is the latest MicroPython release. Documentation for it is here.
3.9.5 is the latest Python release. The latest pre-release version is 3.10.0.b1.
2,455 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
Manufacturing assistant, full time – Evil Mad Scientist – Adafruit Jobs Board.
Perform light duty mechanical manufacturing and assembly tasks as needed. Operate hand tools and handheld power tools in support of those tasks. Listen to and precisely follow protocols for assembly.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 29,374 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.