Daily tips and tricks from the experts at Adafruit!
View this email in your browser

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:

JavaScript, Java, and Python skills top demand

JavaScript, Java, and Python skills top demand

JavaScript, Java, and Python skills are in top demand. And demand for TypeScript, Swift, Scala, Kotlin, and Go skills all exceed supply, according to CodinGame-CoderPad tech hiring report – InfoWorld.

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

Why The Chips Are Down

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!

CircuitPython in 2023

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 circuitpython2023@adafruit.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

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

The 4 Best Raspberry Pi Alternatives

History-Computer evaluates the four Best Raspberry Pi alternatives – History-Computer.

This Week’s Python Streams

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

Deep Dive

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.

CircuitPython Parsec

CircuitPython Parsec

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

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 Laputa Stone

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

Cyberglasses: inspired by Odd Jayy, use a Raspberry Pi Pico and MicroPython – Kev’s Robots YouTube, GitHub and Twitter.

nanoGPT

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.

MQTT

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

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

12 open source projects to watch in 2023 – Voltron Data.

Bluetooth joystick

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).

An e-paper CO2 display

A CO2 sensor and air quality display with the MagTag and Adafruit SCD-41 CO2 sensor plus 3D printed case – Adafruit Blog and Printables.

GPS

An interesting box (3D printed) with a Raspberry Pi Pico, color display, GPS, click wheel and switch running CircuitPython – Twitter Thread and Blog.

Using the Pico:ed

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

MicroPython: ESP32 MQTT Publish Multiple Sensor Readings to Node-Red – Microdigisoft.

eInk display fonts for MicroPython

I discover that customizing fonts for an e-ink display would be very hard indeed if it wasn’t for a very clever libraryMastodon and Karl Bunyan.

MicroPython: Send SMS with Raspberry Pi Pico W and Twilio

Send SMS with Raspberry Pi Pico W, MicroPython and Twilio – Microcontrollerslab.

MicroPython: IFTTT with ESP32 and ESP8266 to Send Sensor Readings via Email

MicroPython: IFTTT with ESP32 and ESP8266 to Send Sensor Readings via Email – Microdigisoft.

Modify CircuitPython displayio.Palette objects using ulab

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

Python 3.12.0 alpha 4 released with even better error messages and removal of deprecated functions – Python Insider Blog.

CallMeBot

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

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.

New

Maker Feather AIoT S3

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.

Helios

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

New Learn Guides

16-Step Drum Sequencer from John Park

Adafruit PCA9546 4-Channel I2C Multiplexer from Liz Clark

Updated Guides

EZ Make Oven, PR by Dan Allen

CircuitPython Libraries!

CircuitPython Libraries

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!

New Libraries!

Here’s this week’s new CircuitPython libraries:

Updated 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!

Dan

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.

Kattni

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!

Melissa

CircuitPython Installer

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.

Tim

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.

Jeff

Monitor

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.

Scott

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.

Liz

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.

Upcoming events!

MicroPython Meetup

The next MicroPython Meetup in Melbourne will be on January 25th – Meetup. Slides from the October meeting are here.

FOSDEM 2023

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

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.

Latest releases

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!

CircuitPython translation statistics on weblate

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

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.

36,424 thanks!

36,424 THANKS

Adafruit Discord

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

ICYMI

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 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.

Contribute!

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.