If you missed Tuesday’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,156 subscribers worldwide (we made it over 10k with your help!)
The next newsletter goes out in a week and being subscribed 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! This has been another busy week leading up to the holidays. Apple has finally performed some bug fixes for loading UF2 files onto microcontrollers, but work remains with hex files. The Adafruit PyLeap application now makes it easier to load code onto wireless microcontroller. Grab a free PDF copy of the Raspberry Pi Handbook 2023 to review the latest on their boards. And check out all the projects this week, including some very imaginative ones – Ed.
NOTE: The next issue will be delayed one day to December 28th (verses December 27th) due to the holidays.
Issue Uploading UF2 files with macOS 13.0 Ventura Fixed in Version 13.1
Uploading UF2 file issues with macOS 13.0 Ventura have been fixed in Version 13.1. Not all is perfect, though. It is still the case that UF2 uploading does not work on nRF52840 boards that use an older UF2 bootloader (versions 0.6.2 and newer work). On those boards, the bootloader appears to fail quickly. Copying a UF2 file does not work, which is indicated by the UF2 filename appearing in the BOOT drive.
The bootloader can be updated by following the directions here. Otherwise, on these nRF52840 boards, including the Adafruit Circuit Playground Bluefruit, the Feather nRF52840, and the ItsyBitsy nRF52840, the only way to load a UF2 file is to use a non-Ventura computer.
It is also still true that copying .hex files larger than 1MB does not work (e.g., on the micro:bit). See https://github.com/ARMmbed/DAPLink/issues/982 for workarounds and further investigation – Adafruit Blog and Raspberry Pi.
PyLeap Gets a Major Update – Now With WiFi Transfer and More!
A major update for PyLeap, the free Adafruit iOS app that simplifies downloading code files and assets and transferring them to Adafruit devices using BLE.
With this update, Adafruit added the ability for users to transfer files using WiFi in addition to BLE. This means that you can now transfer code and assets to your Adafruit devices even faster without having to rely on a physical connection (like USB).
They’ve also made several other improvements and enhancements to PyLeap to make it more user-friendly and efficient. Some of the other highlights of this update include:
- Enhanced transfer speeds: the transfer process has been optimized to make it even faster, so you can get your code and assets onto your Adafruit devices very quickly.
- More devices supported: added support for some new Adafruit devices, so you can use PyLeap with even more hardware.
Raspberry Pi is Supporting KiCad Open Source Design Automation Software
… We use it for some of our product designs. Dominic developed the Compute Module 4 IO board using KiCad, and the design database is free for anyone to download and use as a starting point for their own CM4 projects: you can download a zip file of the database here.
The Official Raspberry Pi Handbook 2023 is Available
Discover the true potential of Raspberry Pi with the new, official Handbook for 2023. With over 200 pages of amazing projects, fun tutorials, practical guides, and clear reviews, it has everything you need to master Raspberry Pi – Raspberry Pi.
Inside The Official Raspberry Pi Handbook 2023
- QuickStart guide to setting up your Raspberry Pi computer
- Make stuff with Raspberry Pi Pico W
- Incredible projects built by the global Raspberry Pi community
- Find the right kit and products for your dream builds
- Get creating with our comprehensive tutorials and guides
- Over 200 pages of essential advice!
Available as a book to purchase or as a free PDF download.
New 3D Printing Model Website: Printables
Many of the 3D printable cases, parts and more designed to date have been placed on Thingiverse, controlled by MakerBot. A new model aggregator has emerged, with the backing from prominent content creators including Adafruit: Printables by Prusa – Prusa.
Wouldn’t it be great, if you could download official 3D printable files with replacement parts and accessories for your home appliances? Or an official fan model from your favorite game? Today, with our partners from various industries, we’re turning this into reality and starting a revolution in how big brands approach 3D printing!
All 3D models shared on Printables.com are available for free, allowing anyone to easily download and print them at home. This opens up a world of possibilities for businesses and consumers alike. Some replacement parts can be printed locally and on-demand, eliminating the need for inventory and shipping. This also makes it easier for brands to support the right-to-repair initiative. In addition to replacement parts, businesses can also create accessories and mods for their products. This allows consumers to personalize and improve their products, making them even more valuable and unique. And for fans of popular games and movies, brands can create official fan models, such as figures, costumes, and props.
RISC-V: The background, the benefits, and the future
US developers conceived of the revolutionary instruction set architecture (ISA) known as RISC-V in 2010. Grounded in reduced instruction set computer (RISC) principles, it’s a common, open-source, and completely free ISA that can be used to develop software and hardware. These attributes are just part of what makes the architecture unique and attractive to developers and manufacturers.
While it’s far from new, momentum around RISC-V is continuing to accelerate, with various services, technologies, and products that leverage this architecture emerging in the past year alone. According to Deloitte, use of RISC-V’s open-chip processors was expected to double this year and is set to double again in 2023 – EEWorld.
What We Can Learn From Vintage Computing
Thanks to open source, no technology ever has to become obsolete, so long as a community remains to support it. You can sync Newtons and Palm Pilots with modern desktops, download web browsers for long-discontinued operating systems, replace a 6502 with a Teensy, or connect vintage computers like the Apple IIe to the modern internet via WiFi. Every year, new cartridges are released for old-school video game consoles like the Nintendo Entertainment System and Game Boy – The ReadME Project.
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 Ethernet Testing and Gradients.
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 is off this week. Catch all the episodes in the YouTube playlist.
Project of the Week: A Runner’s Headlight
The Metanerd Headlight Mk. 2
The Mk. 1 was a success in the sense that it was made entirely from leftover parts from unrelated earlier projects, but I wasn’t really satisfied with the design.
Particularly the area around the two close range LEDs bothered me and I also felt like it could be a little more compact.
Enter Mk. 2. Not only is it physically smaller and uses less power, it also looks much more professionally designed. It has the same control and the same mix of close and long range lights. Close range: 2 x 1W with 90 degree lens and angled down 15 degrees to illuminate the ground immediately in front of and around me. Long range: 1 x 3W with 5 degree lens for a focused cone of light so I can see far ahead.
Controlled by an Adafruit Trinket M0 running CircuitPython – Instagram.
News from around the web!
Boston College course Physical Computing: Art, Robotics & Tech for Good is a first course in electronics programming. Here is a look at the final Student Project Showcase for the Fall semester. All done in CircuitPython using a selection of Adafruit, Arduino, & Raspberry Pi boards – YouTube via Twitter.
A Raspberry Pi Pico powered CubeSat running MicroPython – Twitter.
A MicroPython controlled educational board game running on a Pimoroni Pico Lipo with a Raspberry Pi chip on board – Twitter.
How to design and make a robot – YouTube.
Getting the GitHub commit graph working on the Pimoroni Galactic Unicorn – Twitter.
R2D2 Robot works with Raspberry Pi Pico and a Servo, programmed in MicroPython – Twitter.
Making a mood lamp using a Pico W IoT with Anvil and MicroPython – Raspberry Pi.
A Seeed Xiao nRF52840 inside a Compact Flash card with CircuitPython – Twitter.
A LEGO Raspberry Pi Pico-powered MIDI keyboard using parts from a broken toy piano, programmed in CircuitPython with the Adafruit MIDI Library – Twitter.
Turn The Radio Volume Down For Adverts and DJs talking for a Sonos speaker using the Soco-cli Python library when Tunein is being used – Matthew Felgate.
How to Set Up a Virtual Environment in Python – and why it’s useful – freeCodeCamp.
Parallelization in Python: The Easy Way – Towards Data Science.
PyDev of the Week: Robert Smallshire on Mouse vs Python
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? 20 Best Raspberry Pi Alternatives Best Single-Board Computer To Try.
Bridgetek’s IDM2040-7A intelligent display module features a 7” 800×480 capacitive touch panel. The module carries the latest generation EVE4 controller BT817 supported by a low-cost high-performance RP2040 microcontroller. The onboard RS485 transceiver allows communication with long-distance sensor bus (LDSBus) devices or DMX512 devices through Cat 5/Cat 6 cables over an RJ45 connector.
The input power supply can be either a Type-C PD charger or a PSU via the DC jack. The Type-C PD port is controlled by FTDI’s FT232HP PD controller with a PD sink profile programmable through the FTDI utility FT_PROG. With the use of a Raspberry Pi RP2040 MCU, the IDM2040-7A module allows easy programming with various CircuitPython or MicroPython libraries – DigiKey.
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 coming soon.
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 395!
Here’s this week’s updated CircuitPython libraries:
Library PyPI Weekly Download Stats
- Total Library Stats
- 121295 PyPI downloads over 306 libraries
- Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 17800
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 17305
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 1630
- Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1136
- Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 1095
- Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 861
- Adafruit CircuitPython ESP32SPI (adafruit-circuitpython-esp32spi): 836
- Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 775
- Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 717
- Adafruit CircuitPython SSD1306 (adafruit-circuitpython-ssd1306): 687
What’s the team up to this week?
What is the team up to this week? Let’s check in!
I’ve been researching and fixing a variety of issues for the CircuitPython 8.0.0 release. Some issues were fixed easily, some were not reproducible, and some I moved forward, past 8.0.0. We have about a dozen issues open: the number goes up and down, but the trend is down!
This week I collaborated with Liz to publish the EYESPI Breakout Board guide. It has everything you need to get started with your EYESPI breakout. If you picked one of these up and need more info or a little help getting started, check out this guide!
The next guide is a scrolling countdown timer using three quad alphanumeric STEMMA QT display backpacks, and a QT Py ESP32-S2. You can customise it for any event you would like to count down to, and it scrolls the time left until that event, as well as displaying any message you choose when the event starts.
I’ve been out most of the past week due to the death of a close friend. Prior to that I was working on updating code.circuitpython.org and rewriting the USB workflow to make use of the File System Access API. The initial pull request was merged in and I have been working on polishing the changes up to make the USB workflow even more usable.
I have been working on helper functions that generate lists of colors representing a gradient between two or more given input colors. I’ve implemented 3 different types of increasing complexity: linear, polylinear, and bezier gradients. I have experimented with visualizing with displayio and vectorio. I’m hoping to use the gradients with neopixels and led_animation ultimately as well.
settings.toml change I mentioned in the last newsletter has finally been merged, and will be in beta.6 and newer! Aside from that, I worked on some hidden problems with building CircuitPython that was a pre-existing problem that was exposed when a new version of isort was released.
Here’s a quick tutorial on
- Just like the removed
.envsupport, these values are used e.g., to set up the web workflow, or can be retrieved with a call to
- CircuitPython supports a subset of the full toml syntax.
- It supports simple string and integer values
- It supports comments which start with “#”
- Each line should be of the form “NAME=value”.
- String values have to be enclosed in double quotes (
NAME="string value"). You can directly use non-ASCII characters like œ or 🎉 as long as you save in UTF-8 format. Or, you can use non-ascii characters with a
- Integers must not be quoted. They may be in decimal or hexadecimal format only. (
- A non-supported value type that is written on a single line will not cause a compatibility problem. However, trying to retrieve the value will generally result in an exception
- A non-supported value that is written on multiple lines (like triple quoted strings) can cause a problem if one of the contained lines looks like a supported
- Parsing ends at a line that starts with
We’ll be updating our guides and sample code that referred to
.env to reflect the new
settings.toml way of doing things shortly after the release of beta.6.
This week I’ve continued working on the coprocessor/ULP support for the ESP32-S2 and S3. I’ve been testing a ULP program that reads a pin input and then wakes up the main core when the pin goes low. It now works during pretend deep sleep but not full deep sleep. Once I get that working, I hope to send out the pull request.
I worked on the EYESPI breakout board guide with Kattni. It gives a basic overview on how to use the EYESPI breakout and EYESPI connector port on the newer SPI displays in the shop. I’d always avoided SPI displays in the past because of the wiring but this breakout with the FPC cable makes everything a lot simpler. I think folks will especially find this standard to be especially useful for cyberdecks.
I also worked on the MOSFET Driver Learn Guide. This breakout has the MOSFET diode circuit that is needed for driving things like high power LED’s, motors and solenoids. The terminal block onboard is very fancy and provides a sturdy connection.
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
As for other events, with the COVID pandemic, most in-person events are postponed or held online. If you know of virtual events or upcoming events, please let us know on Twitter with hashtag #CircuitPython or email to cpnews(at)adafruit(dot)com.
20221219 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.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 36,188 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.