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,225 subscribers worldwide.
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, Happy New Year! We found some CSS issues in the Newsletter template, which hopefully have been corrected, making it easier to read each week. A new year brings new opportunities for using Python in innovative ways. You can steer the discourse – let the CircuitPython team know your thoughts over the next two weeks. – Ed.
Pybricks Brings MicroPython to LEGO Controllers
Pybricks is Python coding for smart LEGO® hubs. You can run MicroPython scripts directly on the hub and get full control of your motors and sensors.
Pybricks runs on LEGO® BOOST, City, Technic, MINDSTORMS®, and SPIKE®. You can code using Windows, Mac, Linux, Chromebook, and Android.
You can restore the original LEGO firmware with ease. This is very well coded and it even has a dark mode!
CircuitPython in 2023 Kicks Off!
As the year starts, the CircuitPython development team would like to take time to share their goals for CircuitPython in 2023 and beyond. Just like in past years (full summaries for 2019, 2020, 2021, and 2022), they’d like everyone in the Python on hardware community to contribute by posting their thoughts to a public place on the internet by Wednesday January 18th, 2023.
Here are a few ways to post:
- a video on YouTube
- a post on the CircuitPython forum
- a blog post on your site
- a post on Mastodon with tags #CircuitPython and #CircuitPython2023
- a Gist on GitHub
They want to hear from you. When you post, please add #CircuitPython2023 and email [email protected] to let them know about your post so they can post it on the Adafruit Blog.
The post can cover any topic related to CircuitPython. See a suggested list and more in the post on the Adafruit Blog. This includes any suggestions or comments related to this newsletter.
Developing with Pi Online Training Series
In a live video series, Digi-Key and Raspberry Pi offer insight and instruction on devices from the Raspberry Pi Foundation. The current focus is on the powerful (and available) RP2040 microcontroller and its associated boards. To get you started, they’re even sending out a free Raspberry Pi Pico with every new class registration! – Embedded Computing Design via Twitter.
Book: The Linux Command Line by William Shotts 5th Ed (free PDF available)
The Linux Command Line by William Shotts – Fifth Internet Edition Available Now!
Designed for the new command line user, this 555-page volume covers the same material as LinuxCommand.org but in much greater detail. In addition to the basics of command line use and shell scripting, The Linux Command Line includes chapters on many common programs used on the command line, as well as more advanced topics.
A Keyboard Made Entirely with Python
Python is one of the best programming languages, it can do everything. To test this, hsgw designed an entire keyboard, including the PCB, case, and firmware (KMK/CircuitPython) using only Python. No need to use Kicad and Fusion360. It is explained in a Jupyter Notebook (Google Colaboratory or binder), and it can be customized.
- Design not only the firmware, but also the schematic (netlist), PCB, and case all in Python.
- The code is explained in a runnable Jupyter Notebook (Google colaboratory) environment.
The Best Arduino Alternatives of 2022 per All3DP
Making a list of “the best” Arduino alternatives is very hard at present, as many manufacturers have compelling offerings with broad feature sets. All3DP takes a stab at it and presents their list – All3DP.
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 a Pico MIDI Sequencer – Offloading Display to another Microcontroller.
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.
Project of the Week: Gingerbread
Gingerbread is a set of Python utilities used by Winterbloom to create decorative printed circuit boards (PCBs), such as the ones used for front panels. It initially started with a command-line driven, Python implementation but eventually involved into a fully browser-based application utilizing a native library written in Zig & C and compiled to WASM – Gingerbread. GitHub and Adafruit Blog.
News from around the web!
An LCD watch using an RP2040, RTC, wireless Qi charging, a 1.3” TFT display, and 6 pins including analog ones broken out to a Hirose Mezzanine flat connector. Runs CircuitPython – Mastodon.
It lives! When it comes to interactive LED projects, it is best to go large. #NeoTrellis #CircuitPython #STEM – Twitter.
How To Monitor Temperature With a Raspberry Pi Pico and MicroPython – Tom’s Hardware.
A cuddly dumpling bot that keeps you warm! Perfect companion for the end-of-year season. Machine sewn, animated eyes with an Adafruit Monster M4sk + CircuitPython. USB-powered rechargeable hand warmers inside – Twitter Thread.
Pico Hat Pad is a Raspberry Pi Pico hat with two mechanical switches and a rotary encoder. Powered by KMK / CircuitPython. This kit aims to be a cheap (under $20 Australian including caps, keys, Pico, PCBs, header pins) macro pad and solder practice kit – GitHub, Hackaday and Adafruit Blog.
A MIDI keyboard interface, using Raspberry Pi Pico W and a Raspberry Pi 4 with CircuitPython – Twitter.
MicroPython running on an ice40hx8k FPGA with a kianRiscV SOC. 8 MBYTE PSRAM over breadboarding and qqspi all from scratch – Twitter.
CircuitPython 8.0.0-beta.6 on an Adafruit Feather nRF52840 Express. Display joystick value with BLE, receive it with the other, and display the coordinates – Twitter.
Adding NeoPixel eyes to plastic skulls with an Adafruit ItsyBitsy and CircuitPython – BlueDonkey.
HID Remapper is a configurable USB dongle that allows remapping inputs from mice, keyboards and other devices. It works completely in hardware and requires no software running on the computer during normal use – GitHub.
Investigating sleep modes in CircuitPython on a Seeed Xiao – Twitter.
How to create Google Map in Python using Gmaps – Twitter.
30 Helpful Python Snippets You Should Learn Today – morioh.com.
RISC-V timer interrupts – Daniel Mangum.
crosstalk is a bare metal Smalltalk-80 port for Raspberry Pi single board computers – GitHub.
Pyseidon: a fork-based “load-once, run many times” Python server – FGitHub.
Learn about Decorators in Python in this Twitter thread – Twitter.
PyDev of the Week: Kevin McAleer on Mouse vs Python.
Banana Pi Release New Raspberry Pi Pico Alternative – Tom’s Hardware.
Programming the Banana Pi BPI-Pico-RP2040 is a straightforward process. Officially there is the choice of MicroPython and Arduino. Being an RP2040 based board, there are other alternatives, such as TinyGo, Rust and CircuitPython. Right now there are no official versions crafted for the Banana Pi BPI-Pico-RP2040 but an eager community will soon port them.
When Adafruit saw the new “PIO” feature of the RP2040 from Raspberry Pi, they knew it would be perfect for driving huge numbers of NeoPixels. So they created the Adafruit Feather RP2040 SCORPIO specifically for NeoPixel (WS2812-compatible) control, but also good for various other PIO-based projects that want to take advantage of the Feather pinout with an additional 8 consecutive outputs (or inputs) – Adafruit Learning System.
Coming to Aliexpress January 15th – Twitter.
The tiny dev kit for M0S (BL616,#RISCV RV32GCP 384M,WiFi6,USB2.0 HS). One board for 4 Functions:
- M0S Dock: Simple dock board with 12IO
- SDebugger: CKLink/DAPLink + UART Debugger
- SUART4: USB-to-4UART, every UART up to 20Mbps
- SLogic Pico: Simple LA with [email protected]
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 three new boards added!
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 357!
Here’s this week’s updated CircuitPython libraries:
Library PyPI Weekly Download Stats
- 56973 PyPI downloads over 306 libraries
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 15126
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 14460
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 844
- Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 731
- Adafruit CircuitPython BitbangIO (adafruit-circuitpython-bitbangio): 577
- Adafruit CircuitPython MCP230xx (adafruit-circuitpython-mcp230xx): 501
- Adafruit CircuitPython BMP280 (adafruit-circuitpython-bmp280): 482
- Adafruit CircuitPython PCA9685 (adafruit-circuitpython-pca9685): 404
- Adafruit CircuitPython Pixelbuf (adafruit-circuitpython-pixelbuf): 387
- Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 372
What’s the team up to this week?
What is the team up to this week? Let’s check in!
We closed three issues for 8.0.0 but potentially have three new ones, making for six as of this writing.
I spent several days debugging a mysterious problem that caused
-O2 optimized builds to fail on SAMD builds. At first it seemed to be a USB-related problem, but it turned out that incorrect data was being reported back to the USB host, causing it to think that CIRCUITPY was much larger than it actually was, which caused a crash. After I fixed that, CircuitPython stopped crashing but the CIRCUITPY drive appeared to be corrupted and so was not mounted. I tried to narrow down the problem further, trying and discarding various theories such as delays not being correct, or variables not being
volatile. The problem turned out to be related to disabling and enabling the microcontroller’s memory cache during external flash operations. I added “memory fence” operations around the cache operations, and that fixed the problem. This was about as low level as the previous week’s difficult bug, which involved compiler assumptions about register use.
I assembled the Pico Cowbell sequencer device designed by community member DJDevon3. I’ve been working on software for it. Learning about USB MIDI output and starting to make a control scheme for choosing which notes get sent for each of the indexes in the sequence. I’ve got a few ideas in mind for adding a display to the sequencer, perhaps with a second micro-controller.
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.
20230102 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,304 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.