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! Last week we had some significant Python on Hardware milestones. This week, one more with one hundred single board computers (SBC) compatible with Adafruit’s Blinka. RISC-V is showing up in more microcontrollers (like the Espressif ESP line) and SBCs. We look to feature significant RISC-V content to keep you informed as the industry progresses. Lots of great projects again this week with some holiday themed. We hope you’re having a great December. – 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:

100 CircuitPython Blinka Compatible Single Board Computers!

100 CircuitPython Blinka Compatible Single Board Computers

CircuitPython is a programming language designed to simplify experimenting and learning to code on low-cost microcontroller boards.

Blinka brings CircuitPython APIs and libraries to single board computers (SBCs) like Raspberry Pi. Blinka is a pip installable Python library that runs in normal “desktop” Python (the CircuitPython runtime isn’t used). CircuitPython libraries can also be installed via pip.

Interested? See the guide on how to use Blinka with supported SBCs (like Raspberry Pi, Beagle and more) – Adafruit Blog.

PyScript Technical Preview

PyScript Technical Preview

The PyScript Technical Preview website highlights the benefits of using PyScript in the browser. There are examples and a MicroPython REPL to kick the tires and learn more – PyScript Technical Preview.

RISC-V Happenings

RISC-V Open Hours

RISC-V Open Hours

Interested in learning more about RISC-V? Join RISC-V on Wednesday, Dec. 7th at 7 p.m. US Pacific Time for the final RISC-V Open Hour of the year. Come ask questions and get support on your RISC-V projects – Twitter and RISC-V.

RISC-V Book

RISC-V Book

RISC-V Assembly Language Programming using ESP32-C3 and QEMU teaches the basics of assembly using the Espressif ESP32-C3 chip. Each chapter introduces a few concepts so that you don’t need to learn too much at once. Later chapters build on previous lessons – Elektor Magazine.

The Raspberry Pi Foundation Gives Young People the Chance to Create With Technology

Raspberry Pi Foundation

The Raspberry Pi Foundation looks to reach young people who might not otherwise have the opportunities that others may have enjoyed to discover the joy and the satisfaction of creating with technology. By making a donation today, you’re helping to make sure that every young person, no matter who they are or where they come from, has the chance to learn through computing – Raspberry Pi.

Advent of Code

Advent of Code

Advent of Code is a calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like. People use them as interview prep, company training, university coursework, practice problems, a speed contest, or to challenge each other – Advent of Code.

Building A Virtual Machine inside ChatGPT

Building A Virtual Machine inside ChatGPT

A new ChatGPT assistant was made recently made by OpenAI. It has the capability to solving IQ tests, tackling leetcode problems or to helping people write LateX. It is an amazing resource for people to retrieve all kinds of information and solve tedious tasks, like copy-writing! Frederic Besse has managed to do something different, running a whole virtual machine inside of ChatGPT.

Pytorch is on version 1.12.1 in this alt-universe. Pytorch version 1.12.1 was released on the 5th of August 2022 in the virtual universe. That is remarkable, as ChatGPT was only trained with data collected up to September 2021. So this virtual machine is clearly located in an alt-universe – Engraved Blog.

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 Python integrating and testing the new core PixelMap.

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 Blink Without Delay – 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.

The show is off this week. Last week features Mark Komus, who shares his viral Monster Eyes Project, contributing to the CircuitPython core, and more. Next week Alec Delaney joins the show and talks about CircuitPython’s continuous integration – Show List.

Project of the Week: A Hanukkah Lightsaber

Hanukkah Lightsaber

Hanukkah Lightsaber

Hanukkah Lightsaber

A Hanukkah persistence of vision lightsaber:

“Toward the Jewish month Kislev, the month of light, I built a Hanukkah Lightsaber prop based on a makers project of the Adafruit company. Beside building the hardware, I made the necessary adjustments for the Hanukkah holiday. 30 colored RGB NeoPixel LEDs are connected to an Adafruit Circuit Playground board, responsible for processing a BMP image, divide it into columns, and when moved, exposes a camera with a slow exposure mode (today every cell phone have this feature), you get an image floating in space without the person in the picture. Happy holiday full of light to everyone.” – Instagram.

News from around the web!

Plex Server

A 3D printed case and display accompanies this CircuitPython-powered Raspberry Pi Plex Media Server – Chebe.

PyGPSClient

PyGPSClient is a multi-platform graphical GNSS/GPS testing, diagnostic and UBX © (u-blox™) device configuration application written entirely in Python and tkinter. Runs on any platform which supports a Python 3 interpreter (>=3.7) and tkinter (>=8.6) GUI framework, including Windows, MacOS, Linux and Raspberry Pi OS – GitHub.

PicoTouchSynth

“First light on PicoTouchSynth and the capsense pads work better than the PicoTouch board! And the reverse-mount NeoPixel LEDs are totally awesome. The test code is in CircuitPython” – Mastodon.

Raspberry Pi Pico Color OLED (SSD1331) display tutorial using CircuitPython

Raspberry Pi Pico Color OLED (SSD1331) display tutorial using CircuitPython – Adafruit Blog and YouTube.

ARMACHAT

“My unique touch matrix, scanned by the amazing CircuitPython touchio library, really works. No special chip, just amazing software from Adafruit using only 13 GPIO on a Raspberry Pi Pico for 30 keys. I proudly present the PICOmputer TOUCH ARMACHAT” – Instagram.

circuitpython-upload

A simple script to upload changed files to a CircuitPython board that supports web workflow – GitHub via Mastodon.

Microsoft Office office assistant office lamp

Microsoft Office office assistant lamp with NeoPixels and CircuitPython – Twitter.

Microcontroller music player

A microcontroller music player for a child with Adafruit PyBadge and CircuitPython – GitHub via Mastodon

Interview

Raspberry Pi’s Eben Upton features on the Cambridge Tech Podcast. He tells the story of ‘sticking with it’, offers a decades-worth of insights, and shares the weird and wonderful uses of a Raspberry Pi – Cambridge Tech Podcast.

Pico Battery

An interesting Twitter thread on powering a Raspberry Pi Pico, running CircuitPython, with a 3V coin cell – Twitter Thread.

WiFi Capture

Setting up a Raspberry Pi Pico W as a captive access point to capture WiFi details from a user then connect to their network. Using MicroPython and Pimoroni Phew! framework – YouTube via Twitter.

A CircuitPython macro pad made for gift exchange

A CircuitPython macro pad made for a gift exchange – Mastodon.

Substring words

What is the fastest way to check if a substring is in a string as an entire word or term, like RegEx with boundaries? – StackOverflow Thread.

Making a RISC-V Core on an FPGA

Making a RISC-V Core on an FPGA – GitHub.

File Creation

You can open a file in Python with ‘x’ (exclusive creation) to prevent overwriting it if it already exists – Twitter.

How to Get a List of All Files in a Directory With Python

How to Get a List of All Files in a Directory With Python – Real Python.

Microsoft Graph Python SDK

Microsoft Graph Python SDK is now available for public preview – Microsoft Dev Blog.

Modern Graphical User Interfaces in Python – YouTube.

PyDev of the Week: Miroslav Sedivy on Mouse vs Python

CircuitPython Weekly Meeting for December 5th, 2022 (notes) on YouTube

#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? What is a Real-Time Operating System (RTOS)?.

New on the Market

128Mb Ox64 SBC

The 128Mb Ox64 is a low-cost Raspberry Pi Pico-sized single board computer (SBC) from Pine64 – Pine64.

M0sense

M0sense is a fingertip-sized RISC-V tinyML board. BL702 (144M RV32 + BLE) + MIC + 6-axis IMU + LCD connector. Low cost – Twitter and AliExpress.

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:

New Learn Guides!

New Learn Guides

ScoutMakes FM Radio Board STEMMA I2C from Lalindra Jayatilleke

Adafruit 5×5 NeoPixel Grid BFF from Liz Clark

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

New Libraries!

Here’s this week’s new CircuitPython libraries:

Updated Libraries!

Here’s this week’s updated CircuitPython libraries:

  • There are too many to list this week!

Library PyPI Weekly Download Stats

  • Total Library Stats
    • 184148 PyPI downloads over the Adafruit CircuitPython libraries
  • Top 10 Libraries by PyPI Downloads
    • adafruit-circuitpython-busdevice: 20408
    • adafruit-circuitpython-requests: 19808
    • adafruit-circuitpython-typing: 19631
    • adafruit-circuitpython-register: 2184
    • adafruit-circuitpython-ssd1306: 912
    • adafruit-circuitpython-dht: 837
    • adafruit-circuitpython-bme280: 834
    • adafruit-circuitpython-bmp280: 779
    • adafruit-circuitpython-neopixel: 766
    • adafruit-circuitpython-ahtx0: 759

What’s the team up to this week?

What is the team up to this week? Let’s check in!

Dan

I am continuing to fix more bugs for the CircuitPython 8.0.0 release. I fixed a SAMD51 that caused buzzing noises when playing mono files as stereo. I’m also reviewing other folk’s PR’s and investigating bug reports. I expect to make another 8.0.0 beta release soon, but this will probably not be the last beta release, as there are still over two dozen issues to address before the final release.

Kattni

This week I started on a quick guide that is an introduction to the Mastodon API, including CircuitPython examples of reading from (tracking a hashtag), and writing to (posting a toot) Mastodon. It covers the steps you need to follow to get an API token, which is necessary for both examples. If you’re interested in dipping your toes into the Mastodon API, keep an eye out for this guide!

Melissa

This past week I continued working on rewriting the USB workflow on code.circuitpython.org. It’s coming along, but the closer I keep getting, the more bugs I keep discovering. Some of it is edge cases that most users wouldn’t do, but as I try out new things I uncover the issues.

I also helped with getting some more boards added to Blinka and we are now up to over 100 boards. A lot of the work is thanks to all of the community members that have helped contribute to the project. I believe that with the Raspberry Pi shortages, many users have turned to alternative boards and out of necessity have added support to Blinka for those boards.

Tim

I have continued working on two efforts in the core. First displayio API changes, I’ve been restoring backwards compatibility for one behavior that lost it, and addressing other feedback from review. Second, the PixelMap class that has had parts of it moved into the core for added efficiency.

Work from community member Mark Gamblor has been incorporated to implement the getter function for slices inside the core. The core changes were merged this week, the Python library that uses was also published this week. In the coming week I’ll finish a few more changes and address any issues reported or revealed by additional testing.

Jeff

I’ve been working on some issues blocking the 8.0.0 release. It’s mostly been smaller stuff, but it did include fixing a long-standing problem with the sdioio module on the Grand Central M4. I also made some small improvements to name resolution on Espressif microcontrollers, and reviewed PRs.

Scott

This week web workflow support on Pico W was merged in! It should be in the next beta. I also fixed deep sleep on the ESP32-S3. Next I’m refining a couple APIs (audiobufio and coproc) that were added when I was out on paternity leave.

Liz

This week I worked on a guide for the 5×5 NeoPixel Grid BFF. The grid configuration of NeoPixels is just enough to make some interesting projects. I’m excited to see what folks do with it.

I also wrote code for a getting started with the Mastodon API and CircuitPython. You can use the CircuitPython requests library to access the Mastodon API. I’ll be working on this guide with Kattni and we’ll include examples on sending a post via the REPL and following a hashtag.

Upcoming events!

RISC-V Summit

RISC-V Global Summit, December 12-15, 2022 San Jose, California US – Linux FoundationYouTube via Twitter.

MicroPython Meetup

The next MicroPython Meetup in Melbourne will be on December 28th – 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

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.

Latest releases

CircuitPython’s stable release is 7.3.3 and its unstable release is 8.0.0-beta.4. New to CircuitPython? Start with our Welcome to CircuitPython Guide.

20221130 is the latest CircuitPython library bundle.

v1.19.1 is the latest MicroPython release. Documentation for it is here.

3.11.0 is the latest Python release. The latest pre-release version is 3.12.0a2.

3,299 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.

36,100 thanks!

36,100 THANKS

Adafruit Discord

The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 36,100 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.