View this email in your browser. Warning: Flashing Imagery
Welcome to the latest Python on Microcontrollers newsletter! Some anticipated software dropped in the last few days – the Raspberry Pi Pico software developer kit finally has Bluetooth Low Energy support for the Pico W. And KiCad, the free design software package, added a bevy of new features. Lots of hardware also – the Tulip MicroPython computer and the upcoming Adafruit iMX RT1011 microcontroller board in a Metro form factor running at a blistering 500 MHz. There is so much in this issue, I hope you enjoy it – Ed.
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 Raspberry Pi Pico Software Developer Kit Version 1.5.0 Released
The official C++ Raspberry Pi Pico Software Developer Kit Version 1.5.0 has been released. While there are many, many fixes and enhancements, the standout is Bluetooth BLE support for the Raspberry Pi Pico W – GitHub.
Per Tom’s Hardware, “With Bluetooth support, the Pico W can be used to create a wireless mouse, wireless keyboard or other peripheral (Bluetooth audio does not appear to be supported). So you can just imagine creating your own DIY mouse jiggler, but operating over Bluetooth instead of USB.”
The CircuitPython development team states this will allow CircuitPython to also support Pico W Bluetooth but no estimate when this may happen. At the moment, MicroPython also does not support Bluetooth for the Pico W but it is also likely in the future.
Tulip is a Complete Computer Running MicroPython
The Tulip Creative Computer (aka Tulip, aka Tulip CC) is a self contained portable creative computer, with a display and keyboard and sound. It boots instantaneously into a MicroPython prompt. Tulip is not a shell on top of another operating system. The entire system is dedicated to code, the display and sound, running in real time, on specialized hardware – GitHub.
You can build your own Tulip CC for about $25 plus the cost of a display ($50) and USB keyboard. The hardware for revision 4 of Tulip CC is based on the ESP32-S3 dual core microcontroller running at 240MHz. This single inexpensive chip can support all of Tulip’s functionality at low power use. It can last on any USB battery pack or LiPo battery for many hours. The display we use is a 10.1” 1024 x 600 RGB dot clock color LCD with capacitive touch support. Tulip’s sound system is a full featured 32-voice synthesizer with a stereo line-out / headphone jack. You can use speakers or other connectors instead.
KiCad Version 7.0.0 Released
The KiCad project is proud to announce the release of version 7.0.0. KiCad 7 is a significant upgrade from KiCad 6 and comes with a number of exciting new features as well as improvements to existing features – Adafruit Blog and KiCad.
Also in KiCad news, the KiCad to Unicode Renderer takes KiCad source files and translates them to unicode text drawings – GitHub.
Embedded.fm Interviews Adafruit’s Liz Clark
In the latest embedded.fm podcast #442, Elecia & Christopher White interview Liz Clark, who is a member of the CircuitPython team at Adafruit, discussing “I do like musical robots”. Liz speaks on MIDI, music, and tutorials – embedded.fm and transcript.
MicroPython Talks from FOSDEM Posted
Two talks relating to MicroPython have been posted to the web. Wouter van Ooijen presented an introduction to MicroPython – fosdem.org.
Mat Booth presented Realtime 3D Graphics on a MicroPython ESP32 – Hacking the EMFCamp Conference Badge – fosdem.org.
GitHub Claims Source Code Search Engine is a Game Changer
GitHub has a lot of code to search – more than 200 million repositories – and says last November’s beta version of a search engine optimized for source code has caused a “flurry of innovation.” GitHub Engineer Timothy Clem delved into the technology used to scour just a quarter of those repos, a code search engine built in Rust called Blackbird. Blackbird currently provides access to almost 45 million GitHub repositories, which together amount to 115TB of code and 15.5 billion documents – The Register and GitHub Blog.
Google Python Style Guide
The Google Python Style Guide. Python is the main dynamic language used at Google. This style guide is a list of dos and don’ts for Python programs – GitHub.
The Wokwi Simulator is Available in the VS Code Store
Wokwi is an embedded system and IoT simulator supporting ESP32, Arduino, and the Raspberry Pi Pico. Your code never leaves your computer – Wokwi runs the simulation inside VS Code, using the firmware binaries from your project. It is now available in the Visual Studio Code Marketplace – Visual Studio Marketplace.
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 work on core argument validation.
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 Noise – Adafruit Blog and YouTube.
Catch all the episodes in the YouTube playlist.
Project of the Week
Kevin McAleer has been making a very special robot: Bubo. Bubo is an anamatronic owl and can move its mouth and eyelids. The eyes each have a NeoPixel LED ring and a camera. Movement is programmed with a Pimoroni Servo 2040 programmed in MicroPython – Twitter.
News from around the web!
A 2D noise library for CircuitPython, added to the Community Bundle, by Tod Kurt – Mastodon Thread.
Monocle is a tiny AR heads-up display which clips onto existing eyewear. It’s customizable with MicroPython – Adafruit Blog and Brilliant Labs.
Tweaking the visual outputs on the Raspberry Pi Pico to show the voltage generated by a wind turbine by adding a 24 LED NeoPixel from Adafruit and an LCD display, all with CircuitPython – Twitter.
One of the best Python 3 “Cheat Sheets” – GitHub via Mastodon.
Professor Eric Lengyel has made a binary fundamentals chart for students – Terathon via Twitter.
Neo Trinkey: an updated CircuitPython lights and keys program using capacitive touch – Joe Freeman and YouTube.
Hackaday reviews the new MPY-Jama IDE for MicroPython – Hackaday.
Work with IoT devices on a standard computer using CircuitPython and the Adafruit MCP2221 breakout board – Joe Freeman.
Using an ESP32-S2 based S2 mini with CircuitPython with the IRRemote library default examples to read IR pulses – Twitter.
Adventures into Badger2040 hacking – Facelesstech.
“I made a small macro keyboard using Cherry MX style switches, 3D printing and an RP2040 based controller running Circuitpython” – Instagram.
pyCirclize: Circular visualization in Python – GitHub.
A Python audio spectrogram generator – GitHub.
Understanding all of Python, through its builtins – sadh.life.
A new Python apparel store from Mouse vs. Python – Mouse vs. Python.
How to install DietPi, a lightweight and highly optimized operating system, on your Raspberry Pi – peppe80.com.
MyPi 1.0, an optional static type checker for Python, has been released – The Mypy Blog.
PyDev of the Week: Eric Mendes on Mouse vs Python
CircuitPython Weekly Meeting for February 13th, 2023 (notes) on YouTube
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? ESP32 Buyer’s Guide.
Adafruit demonstrates a new Metro form factor microcontroller board featuring the M7 iMX RT1011 – Adafruit Blog and 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 some are being worked on!
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!
NeoPixel Novelty Cufflinks with Scrolling Text from Erin St. Blaine
CircuitPython OctoPrint Controller and Monitor from Liz Clark
LED Rocket Lamp from Noe and Pedro
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 405!
Here’s this week’s new CircuitPython libraries:
Here’s this week’s updated CircuitPython libraries:
Library Weekly PyPI Download Statistics
Total Library Stats
103189 PyPI downloads over 306 libraries
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 17408
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 16493
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 1550
- Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1443
- Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1279
- Adafruit CircuitPython DisplayIO Layout (adafruit-circuitpython-displayio-layout): 888
- Adafruit CircuitPython RGB Display (adafruit-circuitpython-rgb-display): 861
- Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 788
- Adafruit CircuitPython PCA9685 (adafruit-circuitpython-pca9685): 780
- Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 695
What’s the team up to this week?
What is the team up to this week? Let’s check in!
I released CircuitPython 8.0.0 final on February 6. Thank you everyone who worked on 8.0.0, reported issues, and tried out the early releases!
I’m now working on safemode.py, which will run if you go into safe mode, so you can recover programmatically instead of having to press the reset button. The code is fairly simple, but I will test it in practice to see exactly what semantics are best.
This week I put together the Adafruit ESP32-S2 Reverse TFT Feather guide. It’s essentially the same as the TFT Feather, but the display is on the bottom of the board, and there are two extra buttons for use as inputs. The display on the bottom makes it great for projects where you want to mount it with the display facing out, without dealing with all of the other components found on the Feather. The guide covers everything you need to get started with your Reverse TFT Feather. Check it out!
I also have a time-lapse setup running on a Raspberry Pi Zero 2 W with the Raspberry Pi HQ Camera, to watch a plant bloom. This is an extra special blooming, as it is an air plant, and this type only blooms once. Once I have the photo series, I will be writing up a guide on how to do this process from start to finish. Barring some quirky issues I ran into during Pi set up, it’s pretty simple to get going. Keep an eye out for that sometime in March!
This past week I took a bit of a detour and updated the drivers and guide for the 0.96” Mini TFT Breakout. I also fixed an issue with the driver for the Crickit HAT for the Raspberry Pi because it was having an issue with driving stepper motors due to a bug in one of the dependencies. Once that was out of the way, I continued working on the CircuitPython installer and hope to finish that up soon.
This week I worked on testing some PRs for the HTTPServer library and a few other small ones. I’ve also been working on adding argument validation inside of the core to displayio classes to more gracefully handle when the user passes values that are not possible or valid.
I’ve fixed a couple of bugs reported by users of 8.0.0:
- On all RP2040 boards, reduced the drive strength of PIO output pins. This fixed a USB CDC disconnect bug on Scorpio.
- Fixed a problem with chained exceptions, generator.close(), and auto-reload
We’ll keep making the 8.0.x release series the best CircuitPython ever!
This week I’ve continued working on pysigrok. I’ve added analog support, board pin names and trigger support. I’m working on adding protocol decoding to sigrok-cli in addition to the existing test harness.
This week I published the CircuitPython OctoPrint Controller and Monitor guide. The project uses MQTT to send and receive messages to OctoPrint via two plugins with Adafruit IO acting as the broker. For hardware, I used the new ESP32-S2 Reverse TFT Feather. The orientation of the screen makes it easy to panel mount for projects, so I tried to show that off with the octopus-themed case that I designed.
The next MicroPython Meetup in Melbourne will be on February 22nd – Meetup. Slides from the October meeting are here.
Unlock the Power of MicroPython on an Arduino: Join a Live Webinar March 9, 2023 – Elector.
Hackaday Berlin 2023 has been scheduled for Saturday, March 25 – Adafruit Blog and announcement.
PyCon US 2023 will be April 19-17, 2023, again in Salt Lake City, Utah USA – PyCon US 2023.
Send Your Events In
If you know of virtual events or upcoming events, please let us know via email to cpnews(at)adafruit(dot)com.
CircuitPython’s stable release is 8.0.0. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20230213 is the latest CircuitPython library bundle.
v1.19.1 is the latest MicroPython release. Documentation for it is here.
3.11.2 is the latest Python release. The latest pre-release version is 3.12.0a5.
3,392 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 36,733 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.