View this email in your browser. Warning: Flashing Imagery
Welcome to the latest Python on Microcontrollers newsletter! This week we highlight some trends – now and into 2023. The market for chips will likely get better, but how long a wait? Python is more in demand than ever; using it for embedded programming makes perfect sense. Check out all of this week’s content and be sure to get your #CircuitPython2023 entry in (you can post your ideas about this newsletter too!) – 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 State of Tech Hiring in 2023, a CodinGame-CoderPad report published January 10, draws on a survey of 14,000 professionals and offers insights into what 2023 may hold for tech industry recruiters and job seekers. Most teams are now hybrid between remote and on-site work. Only 15% work onsite 100% of the time. Freelance developer work is becoming increasingly popular.
Why The Chips Are Down: Navigating the Global Chip Shortages and Beyond
The supply chain bottlenecks experienced across the globe start with component shortages and by far the most severe has been for certain semiconductor chips – Jabil.
Impacts from this sustained demand are primarily being felt at wafer foundries. Wafer starts are the main constraint within the chip supply chain. Even the world’s largest chip maker, TSMC — which controls 28% of global semiconductor manufacturing capacity — is experiencing ongoing shortages. To ramp up chip production, manufacturers including Texas Instruments, Intel and TSMC are investing billions of dollars into the construction of new fabs. However, this is not a complete fix in itself; these new facilities have started coming online, and openings will ramp in 2023 and beyond.
CircuitPython in 2023: Let the Devs Know Your Feelings – Last Week to do so!
As the year starts, the CircuitPython development team would like to take some time to share their goals for CircuitPython in 2023 and beyond. Just like past years (full summary 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@example.com 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.
Posts so far:
What to expect from the Raspberry Pi Foundation in 2023
The Raspberry Pi Foundation has written an article on what to expect from them in 2023 – Raspberry Pi.
The 4 Best Raspberry Pi Alternatives
History-Computer evaluates the four Best Raspberry Pi alternatives – History-Computer.
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.
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 Multi Clicks – Adafruit Blog and 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.
Project of the Week: Castle in the Sky Laputa Stone
Castle in the Sky is an iconic animated film by director Hayao Miyazaki. Set in a fictional late 19th century, it follows the adventures of a boy and girl who are trying to keep a powerful crystal from the army, a group of secret agents, and a family of pirates, while searching for a legendary floating castle, Laputa.
Steve Kasuya has recreated part of the movie in the form of a mysterious black stone with engraved glyphs. When a crystal is passed over it, it lights up strings of glyphs. It uses a Raspberry Pi Pico programmed in MicroPython – Twitter Thread.
News from around the web!
Cyberglasses: inspired by Odd Jayy, use a Raspberry Pi Pico and MicroPython – Kev’s Robots YouTube, GitHub and Twitter.
nanoGPT is the simplest, fastest repository for training/finetuning medium-sized GPTs. It is a rewrite of minGPT that prioritizes teeth over education. Still under active development. Written in Python – GitHub.
Boston College thanks CircuitPython developers Dan & Jeff for fixing an issue with MQTT an the Raspberry Pi Pico W – Twitter.
E-ink Dev board to track Fetal Development. Uses an Adafruit MagTag and CircuitPython – Petri Dish Talk via Hackaday.
12 open source projects to watch in 2023 – Voltron Data.
A stand-alone implementation of a BLE peripheral that sends angle and vector values with a joystick. Feather nRF52840 Express + CircuitPython 8.0.0-beta.6 – Twitter and Qiita (Japanese).
A CO2 sensor and air quality display with the MagTag and Adafruit SCD-41 CO2 sensor plus 3D printed case – Adafruit Blog and Printables.
An interesting box (3D printed) with a Raspberry Pi Pico, color display, GPS, click wheel and switch running CircuitPython – Twitter Thread and Blog.
Get started with Pico:ed. this video tutorial Places the first test code on a Pico:ed using CircuitPython with the Thonny (IDE) program – YouTube (Spanish with English Subtitles) and Twitter.
MicroPython: ESP32 MQTT Publish Multiple Sensor Readings to Node-Red – Microdigisoft.
I discover that customizing fonts for an e-ink display would be very hard indeed if it wasn’t for a very clever library – Mastodon and Karl Bunyan.
Send SMS with Raspberry Pi Pico W, MicroPython and Twilio – Microcontrollerslab.
MicroPython: IFTTT with ESP32 and ESP8266 to Send Sensor Readings via Email – Microdigisoft.
Was looking to modify CircuitPython displayio.Palette objects using ulab, but found they couldn’t be sliced. This is a test of a wrapper class to enable extended slicing. It randomly creates palette slices of a reference bitmap. (It uses an) Adafruit PyPortal with CircuitPython v8.0.0-beta.4 and is in the Community Bundle as cedargrove_paletteslice. An expanded version with list-like features such as insert and append is also available. Was a great introduction to using dunders – Mastodon and YouTube.
Python 3.12.0 alpha 4 released with even better error messages and removal of deprecated functions – Python Insider Blog.
I just learned about CallMeBot.com, a service that you can use to send yourself a message using various messengers like Signal. I wouldn’t use it for sensible information, of course, but for an occasional heads-up from a little IoT device it seems quite nice. MicroPython: Send WhatsApp Messages ESP32/ESP8266 – Mastodon and Random Nerd Tutorials.
Porth: a Concatenative Programming Language for Computers – GitLab.
PyDev of the Week: Tim Schilling on Mouse vs Python
CircuitPython Weekly Meeting for January 16th delayed to January 17th.
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? New Raspberry Pi autofocus camera modules.
Maker Feather AIoT S3, a board that powered by the ESP32-S3 WROOM 1 N8R8 module with Adafruit Feather form factor- Cytron and Adafruit Blog.
The 0xCB Helios is an Elite-C compatible Microcontroller that is based on the RP2040. It’s a drop-in replacement for legacy ProMicro boards and has CircuitPython support – keeb.supply.
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 was one new board 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:
New Learn Guides
16-Step Drum Sequencer from John Park
Adafruit PCA9546 4-Channel I2C Multiplexer from Liz Clark
EZ Make Oven, PR by Dan Allen
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 399!
Here’s this week’s new CircuitPython libraries:
Here’s this week’s updated CircuitPython libraries:
Library PyPI Statistics
Total Library Stats
- 104634 PyPI downloads over 306 libraries
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 16646
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 16195
- Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1508
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 1421
- Adafruit CircuitPython MCP230xx (adafruit-circuitpython-mcp230xx): 1201
- Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 1117
- Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1054
- Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 997
- Adafruit CircuitPython IRRemote (adafruit-circuitpython-irremote): 983
- Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 905
What’s the team up to this week?
What is the team up to this week? Let’s check in!
I’ve continued to work on bug fixes leading up to the CircuitPython 8.0.0 release. We have several bugs related to unreliable WiFi, including things that supposedly worked better in 7.3.3. I’ve reproduced one that is related to socket timeouts and am now debugging it.
The special CYW43 “pass-through” pins on the Pico W have limited functionality and can be confusing to use. Based on a suggestion from Jeff, I improved many of the type-checking error messages for arguments to native functions and methods.
I’m back after a few weeks off for the holidays, and I’m getting back into the swing of things. This week was a lot of catch up and sorting out a priority for what to work on. I began working on a few product guides, some of which involve updating existing guides to include the new or updated product. If you’ve picked up any of our new products in the last couple of weeks, keep an eye out for the guides, coming out soon!
This past week I’ve been working on the CircuitPython Installer. I ended up redesigning it from the ground up for the most part in order to have more of a wizard style UI. It’s taking a bit longer than anticipated, but it’s shaping up really nicely and connecting successfully to the board.
I’ve been working on the MIDI sequencer capabilities a little bit more, and starting to ramp back up on PR reviews after holiday break.
Aside from working on some bugs in CircuitPython, I also picked up a C library called PicoDVI and created a firmware based on it that emulates a SPI TFT display. With this firmware loaded on a PicoDV board, you can use any CircuitPython board with displayio to control a DVI/HDMI display with a virtual full color 400×240 framebuffer.
Right now this just exists as code in my GitHub fork of the PicoDVI project, but working with Phil B. we hope to have this “emulator” released as an example within an Arduino library with .UF2 artifacts for easy installation.
Last week I got caught up after holiday time off. This week my partner is sick so I’ve got limited time to work while the baby naps. When I am at my desk, I’m keeping caught up so I can pick up bigger tasks once my partner feels better.
After keeping caught up, I’m fixing small bugs in our 8.0.0 milestone. I fixed a bug on ESP where light sleeping after waking up from a deep sleep was broken. I’ve got changes out for 1) fixing start and end kwargs for I2C, SPI and PIO when used with an array of multi-byte values and 2) sharing the MDNS web workflow object with the user so the user can do MDNS as well.
Lastly, we’ve got just under a week before the #CircuitPython2023 deadline. I’ve got a draft started that I need to grab screenshots for and finish writing.
I returned from vacation this week and wrote up some new product guides. The first was for the 3V to 5V booster board. The second was for the PCA9546 4-Channel I2C Multiplexer, which allows you to use up to four I2C devices on the same address simultaneously. I added a new class to the Adafruit_CircuitPython_TCA9548A library for the PCA9546. The existing class for the xCA9548 chips did work with the PCA9546, but allowed for 8 devices. I thought this would be confusing for folks so the new class only allows for 4 devices.
The next MicroPython Meetup in Melbourne will be on January 25th – Meetup. Slides from the October meeting are here.
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.
CircuitPython’s stable release is 7.3.3 and its unstable release is 8.0.0-beta.6. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20230116 is the latest CircuitPython library bundle.
v1.19.1 is the latest MicroPython release. Documentation for it is here.
3.11.1 is the latest Python release. The latest pre-release version is 3.12.0a4.
3,369 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
STEAM Educator – Part Time – Scratch Coding and TinkerCAD 3D Printing – Adafruit Jobs Board.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 36,424 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.