If you missed this week’s Python on Microcontrollers Newsletter, here is the ICYMI (in case you missed it) version.
To never miss another issue, subscribe now! – You’ll get one terrific newsletter each Tuesday (which is out before this post). 10,257 subscribers worldwide.
The next newsletter goes out in a week and subscribing is the best way to keep up with all things Python for hardware. No spam, no selling lists, leave any time.
Welcome to the latest Python on Microcontrollers newsletter! The ease of use for a language often tracks the number of resources available for the language. Besides the documentation and projects available for CircuitPython, there is a milestone this week: 400 libraries. Libraries are canned routines for drivers and commonly used code and they are always outstanding, making coding so much easier. Things are pointing towards a decent 2023 in the Python and Maker communities, something to look forward to – Ed.
400 CircuitPython Libraries!
This week, CircuitPython hit a huge milestone: There are now 400 libraries available for CircuitPython. This includes Adafruit written libraries and community contributed libraries. Number 400 is DerBroader71/circuitpython_uuid4 by Tudor (DerBroader71 on GitHub), thank you Tudor for your first CircuitPython pull request and contribution! And thanks to all who contribute to CircuitPython – Adafruit Blog.
New Videos: Troubleshooting CircuitPython and more
Troubleshooting CircuitPython installation, board, and Mu issues: A Guide for New Students. Here are some of what Professor Gallaugher has seen as common issues that his students have encountered, plus solutions – YouTube.
Other Recent Videos
- Setup a Circuit Playground Bluefruit
- A first CircuitPython program in Mu: Print, Detecting Errors, Saving Backups & More!
- Light it Up! Import libraries, Light NeoPixels, Class, Object, while True loops, and more
3,000,000 THANKS! Celebrating 3 Million Orders at Adafruit – Thank You!
On January 18, 2023 11:20am ET the 3-millionth (3,000,000!) order was placed at Adafruit for a Raspberry Pi 4 Model B – 4 GB RAM by Michael from Austin, TX (We asked to make sure it was OK to post this). Michael, a real human, was able to get a Raspberry Pi, which is extra special since Adafruit worked really hard together to make sure makers, real humans, have been able to get units – Adafruit Blog.
Web Serial Terminal
Web serial terminal is a serial terminal that you can access via Chrome Browser. You can use it on your Laptop or desktop. It uses Web Serial and requires no additional software download – CAPUF Embedded.
Tiny MicroPython Robot
Meet SMARS Mini, the smallest robot Maker Kevin McAleer has ever made. It has two motors and a laser time of flight sensor to detect objects. It uses a Pimoroni Tiny2040 board programmed in MicroPython – Kev’s Robots via Twitter.
Thanks for the Python 2023 Entries
The last CircuitPython 2023 posts are being posted with Scott doing a post on this soon. Below are some additional posts – Adafruit Blog Kick-off Post.
- First #CircuitPython2023 Posts
- Scott’s #CircuitPython2023
- A few more #CircuitPython2023
- Dan’s thoughts for #CircuitPython2023
- Last day* for #CircuitPython2023
Raspberry Pi Pico vs. ESP32-S2 Speed Comparison Benchmark Using CircuitPython
So the ESP32-S2 needs 128% more current to run the script, but for 50% less time. In total, the Raspberry Pi Pico needed 10% less power to perform this task, which is not significant in my opinion. In short, the ESP32-S2 outperforms the Raspberry Pi Pico for single-core processing workloads. It costs more or less the same, it’s $1 more expensive, it has more RAM, Flash memory, and of course WiFi, which the Raspberry Pi Pico lacks. The Raspberry Pi Pico, on the other hand, has two processing cores, but I believe that in more than 90% of our projects, the use of a second core is unnecessary.
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 some Blinka_DisplayIO work then looks at EYESPI TFT displays.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
Catch all the episodes in the YouTube playlist.
The CircuitPython Show
The CircuitPython Show is an independent podcast hosted by Paul Cutler, focusing on the people doing awesome things with CircuitPython. Each episode features Paul in conversation with a guest for a short interview – CircuitPythonShow and Twitter.
Projects of the Week – Raspberry Pi Pico Power Consumption
Two articles this week on power used by the Raspberry Pi Pico:
Raspberry Pi Pico W power consumption (mA) and how to reduce it – peppe80.
The Pimoroni crew claim that their Pico W-powered color eInk screens can idle at “about 20uA”. Just how many electrons does it take to update the display? – HackSpace Magazine on Twitter.
News from around the web!
Coding Graphics with MicroPython on Raspberry Pi Pico Displays – The Pi Hut.
Open Muscle is designed to provide biometric machine learning training data for use in prosthetic technologies. It uses an ESP32-S2, a Hall Effect sensor and MicroPython – Twitter Thread, GitHub and YouTube.
Run x64 Software on a Raspberry Pi using Box64 – PiMyLife Up.
Writing a simple ray casting engine in Python and porting it to a Casio calculator running MicroPython- Twitter.
Blackberry Pi, a handheld from pdrift, is an exceptional piece of work that blends electronics and 3D printing into one mean, green machine! It uses a Raspberry Pi Zero W with a Blackberry keyboard and display – Tom’s Hardware.
ESP32 MicroPython Web Server – sensor data on webpage – HowToElectronics.
Build your own web server using a Raspberry Pi Pico W using Phew! – YouTube.
CircuitPython and MagTag reading from an adafruit.io feed from a Raspberry Pi Zero W – Twitter.
A ST7735 TFT displays a BMP image converted to 565 and saved as .b16. When dumped via SPI, it is quite fast – not as fast as I’d like but good enough for now, using MicroPython – Twitter.
Light up Godzilla with NeoPixels and CircuitPython on a Raspberry Pi Pico W – Twitter.
A fingerprint sensor programmed in MicroPython – Twitter (Portuguese).
Paper Review: “Did You Miss My Comments Or What?” Toxicity In Open Source Discussions – Tyler Cipriani.
Rock 4SE – ISS tracker in Python in a GUI and TkinterMapView and Python – YouTube.
Why it is important to close files in Python – https://realpython.com/why-close-file-python/.
How to a convert image into a sketch using Python with 5 lines of code – morioh.
All Top 40 Python Libraries EXPLAINED in 20 minutes – morioh.
PyDev of the Week: Fabio Pliger on Mouse vs Python.
New and Upcoming
Akizuki Denshi’s “AE-RP2040 [K-17542]” is a microcomputer board equipped with the RP2040 chip. All 30 pins of I/O are brought out, and with a single USB cable you can start developing in C/C++ and MicroPython.
It is smaller than the original “Raspberry Pi Pico” and has a BOOT switch and a RUN switch. It has a user-friendly design.
The microcomputer board “AE-NRF52840 [K-17484]” equipped with the nRF52840 (SoC) was designed as a simple microcomputer board, eliminating onboard sensors and charge controllers – RadioLife (Japanese).
Chris Burton is assembling a Pi “Dev Helper” board, which uses an RP2040 to control everything. It gets to “RP2 Boot” so, next up, is getting CircuitPython compiled for it – Twitter Thread.
The onboard SD can be switched between target Pi and the onboard USB card reader. The USB Type-A can be switched between target Pi (micro USB) or the USB hub and out through the “System” USB-C connector along with the card reader and RP2040. It also has a loop-through USB C at the bottom for powering the target Pi which can be turned on/off and the USB2 data can also be redirected to the onboard hub.
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 in process.
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:
- How to Add a New Board to CircuitPython
- How to add a New Board to the circuitpython.org website
- Adding a Single Board Computer to PlatformDetect for Blinka
- Adding a Single Board Computer to Blinka
New Learn Guides!
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!
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 400!
Here’s this week’s new CircuitPython libraries:
- DerBroader71/circuitpython_uuid4 (the 400th CircuitPython library!)
Here’s this week’s updated CircuitPython libraries:
Library PyPI Weekly Download Stats
Total Library Stats
- 102223 PyPI downloads over 306 libraries
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 18438
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 17245
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 1689
- Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1640
- Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1158
- Adafruit CircuitPython PCA9685 (adafruit-circuitpython-pca9685): 985
- Adafruit CircuitPython MCP230xx (adafruit-circuitpython-mcp230xx): 977
- Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 886
- Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 874
- Adafruit CircuitPython Pixelbuf (adafruit-circuitpython-pixelbuf): 774
What’s the team up to this week?
What is the team up to this week? Let’s check in!
I’m continuing on several of the last few 8.0.0 bugs we have left to fix before a release candidate. I fixed a bug that showed up when making an HTTP server on Espressif chips: we were not making a socket non-blocking internally when we expected it to be non-blocking. I researched another apparent bug that turned out to be Windows C# and PowerShell not setting DTR ready when opening a serial connection. So it wasn’t actually a CircuitPython bug. And right now I’m trying to track down some mysterious WiFi problems with very intermittent crashes.
I updated the SHT40 guide, which is now the SHT40 and SHT45 guide, to include, surprise, the SHT45! The only difference between the two breakouts is that the SHT45 chip has a higher accuracy rating. There is no difference in wiring, code, or interaction. The only way to tell which chip you have is to read the text on your breakout board! If you’ve picked up either of these chips, check out the guide!
We have been releasing new revisions of our TFT and OLED displays with a ribbon cable connector dubbed the EYESPI connector. To that end, I’m writing up a new template covering the connector, its pinout, and how it works, that will be included in each of the guide updates. There will also be updates throughout the rest of the guide to reference it. Once I’ve updated one guide to what we want it to be, Liz and I will be splitting up updating the rest of the necessary guides, and new updates moving forward. If you have one of these new EYESPI displays, keep an eye on the original display guide for these updates.
This week I’ve been continuing testing of changes in the Wiznet ethernet library. There are still a few more but we’re approaching “light at the end of the tunnel” for the PRs that were built up. I also received and soldered up an EYESPI breakout + a few displays to start trying them out with displayio.
This week I’ve been debugging the (hopefully) last few bugs before 8.0.0. The most recent was an issue with the Pico W where the web workflow wouldn’t start the first time after dragging the UF2 onto the device. This is was due to us misdetecting the reset reason as the watchdog (which occurs during an error.) Now it is detected as a software reset and web workflow will start up.
This week I published two more new product guides: the STEMMA QT version of the PCA9546 I2C multiplexer and the IoT Button with NeoPixel BFF. The IoT Button BFF is another QT Py add-on board that has a chonky button designed with simple IoT projects in mind. I wrote up quick Adafruit IO examples for both CircuitPython and Arduino for the guide demoing how you could send data to IO and use the NeoPixel as a connection status indicator.
FOSDEM is a free event for software developers to meet, share ideas and collaborate. Every year, thousands of developers of free and open source software from all over the world gather at the event in Brussels. February 4-5, 2023 in Brussels, Belgium – Fosdem.
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.
20230123 is the latest CircuitPython library bundle.
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 – Find a dream job, find great candidates!
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
CNC programmer and maker – Machine Histories – Adafruit Jobs Board.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 36,474 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.