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! I’m finishing up the newsletter Friday while half the world is hating the effects of the Crowdstrike update. No worries, your crafty editor fired up her IBM PC/AT to ensure your issue is out on time. Speaking of older computers, Jeff Epler’s talk on connecting modern peripherals to old computers with CircuitPython is out. Do you want to try out the new browser-based ViperIDE? Les Pounder’s new tutorial is fab.

For a number of weeks, the key to Python was buried in a Docker image, thank goodness the vulnerability was found. And you might find more Raspberry Pi silicon chiplets embedded in other folks’ chips with efforts now being made. This and much more in this packed issue. Try to stay frosty. – Anne Barela, Editor

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:

Connecting Old to New with CircuitPython: Retrocomputer Input Devices on Modern PCs

Connecting Old to New with CircuitPython

PyCon 2024 has published CircuitPythonista Jeff Epler’s talk on Connecting Old to New with CircuitPython: Retrocomputer Input Devices on Modern PCs – PyCon US 2024 YouTube.

“The input devices of decades past hold nostalgic value for many folks. But they don’t need to merely sit on a shelf as museum objects—they can be reverse engineered and then adapted to modern computers without modifying the original hardware. CircuitPython… is an excellent language for projects like these, thanks to native USB Human Interface Device (HID) support and the ability to ‘bitbang’ archaic interfaces, combined with the fast development cycle of an interpreted language, as you’ll learn in case studies adapting keyboards & mice.”

Tutorial: Writing MicroPython For Your Raspberry Pi Pico In a Web Browser With ViperIDE

ViperIDE Tutorial

Les Pounder walks through the steps of using the new ViperIDE web code editor to utilize MicroPython on a Raspberry Pi Pico – Tom’s Hardware.

“You are not limited to just these two selections. ViperIDE also works with CircuitPython, and ESP boards, Adafruit, Seeed, and micro:bit microcontrollers.”

A GitHub Token Leak Could Have Put the Entire Python Language At Risk

GitHub Token Leak

Cybersecurity researchers discovered a GitHub Personal Access Token in a public Docker container hosted on Docker Hub, which granted elevated access to the GitHub repositories of the Python language, Python Package Index (PyPI), and the Python Software Foundation (PSF) – TechRadar Pro.

“According to PyPI, the token was issued before March 3, 2023, but the exact date is impossible to determine since the logs only last for 90 days. PyPI Admin Ee Durbin was notified on June 28 this year, after which the token was revoked.”

Nordic nRF54H20 SoC Now Sampling

Nordic nRF54H20

Nordic is now offering samples of its new nRF54H20 chip. The device has multiple Cortex M33 processors, up to 320 MHz, and multiple RISC-V coprocessors (similar to Raspberry Pi PIO), Bluetooth, Thread, and Matter along with high-speed USB, CAN and I3C – Nordic via X.

Python Editor in Excel is Coming to More Users

Python Editor in Excel

With the Microsoft Excel Python Editor gaining traction among customers, Microsoft is integrating it directly into Excel as an in-the-box option, rather than an add-in – XDA.

“In this latest release, the Redmond firm has improved some productivity features and the appearance of the IDE too. For those who haven’t used Python Editor before, each cell in the sheet is treated like a separate code block, similar to Jupyter Notebook.”

WIZnet Incorporating an RP2040, 2MB Flash and Ethernet Into One Chip

ioNIC

WIZnet has been posting on X/Twitter about their new ioNIC chip which incorporates an RP2040 processor, 2MB flash and an Ethernet NIC+Phy into a single chip. WIZnet confirmed they are buying RP2040 wafers from Raspberry Pi – hackster.io.

The Linux Kernel 6.10 Has Officially Been Released

Linux Kernel 6.10

The Linux Kernel 6.10 has been officially released which introduces several new features and improved hardware support. Linux kernel 6.10 improves hardware support by adding new drivers or updating existing ones. Notable highlights include support for the Radxa ROCK 3C development board – 9to5Linux.

Fractal Releases The 3D Print Files For Their North Pi Case

North Pi Case

Fractal Design has decided to release the 3D files for their concept North Pi case (which fits a Raspberry Pi 3, 4, or 5) for hobby use – Fractal Design.

Jeff Geerling

Jeff Geerling discusses the file release and how he printed out a case – Jeff Geerling.

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

Last Friday, Scott streamed more work on CircuitMatter.

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 settings TOML – Adafruit Blog and YouTube.

Catch all the episodes in the YouTube playlist.

CircuitPython Weekly Meeting

CircuitPython Weekly Meeting for July 14, 2024 (notes) on YouTube.

Project of the Week: Measuring Power Usage on the RP2040 Chip Running CircuitPython

Power Usage on the RP2040

Bradán Lane writes about power usage of the RP2040-based eChallenge coin running CircuitPython – X.

“By eChallengeCoin standards this (2.77mA) is horrible for deep sleep mode but for an RP2040 running CircuitPython and having a bucket full of attached hardware, this is impressive! Digging deeper, Adafruit measures the CircuitPython deep sleep on a PICO at 1.4mA. The accelerometer I am using for the Magic 8-Ball needs 1.5mA. Together, this measurement is in the ballpark.”

Popular Last Week

What was the most popular, most clicked link, in last week’s newsletter? Introduction to Intermediate MicroPython.

New Notes from Adafruit Playground

Adafruit Playground is a new place for the community to post their projects and other making tips/tricks/techniques. Ad-free, it’s an easy way to publish your work in a safe space for free.

AIO+ Weather

AIO+ Weather: A Premium Alternative for Local Observations – Adafruit Playground.

"Top-Secret" lunchbox

Building a “Top-Secret” lunchbox – Adafruit Playground.

News From Around the Web

MIT OpenCourseWare

MIT OpenCourseWare: MIT 6.100L Introduction to CS and Programming using Python, online – YouTube Playlist.

RP2040 CMSIS Pack

Raspberry Pi has announced their CMSIS Device Family Pack (DFP) with support for Raspberry Pi Pico and Raspberry Pi Pico W. The new DFP allows use of boards with all of Arm’s CMSIS tools, including µVision – Raspberry Pi News.

Free-threaded CPython

Free-threaded CPython is ready to experiment with – Quansight Labs and GitHub.

LoRa Class

Kodi writes on X:

“At my first LoRa class ever, I taught students how to send messages with Adafruit CircuitPython and our new LoRa breakout. I was really nervous it would be too difficult, but students were broadcasting LoRa packets repping our village way before the class was over!”

Controlling NeoPixels with MicroPython

Controlling NeoPixels with MicroPython – hackster.io.

Python 3.13.0 beta 4 released

Python 3.13.0 beta 4 released – Python Insider Blog.

Pico NeoPixel Matrix

X user NerdyMark makes a NeoPixel LED matrix driven by a Raspberry Pi Pico W. Running CircuitPython, it’ll have a web interface to change modes and parameters. It’s currently running Conway’s Game of Life – X.

Spin

Spin: the death metal disco player with Raspberry Pi and Python – Raspberry Pi News.

"Fox Hint" badge

A rot13labs “Fox Hint” badge from 2023 is converted to run CircuitPython – X.

Get pied with this triple Pi(e) game

Be careful or you’ll get pied with this triple Pi(e) game, using Raspberry Pi Pico and MicroPython – Raspberry Pi News.

Constant Current Circuit for Flexible Filament LEDs Using Cytron Maker Nano RP2040 With PWM Brightness Control

A CircuitPython program running on a Cytron Maker Nano RP2040 controlling six flexible 3V “filament” LEDs (Adafruit nOOds) with PWM brightness control and a simple transistor-based constant-current circuit – Instructables.

Electronic Paper for Raspberry Pi Pico

Electronic Paper for Raspberry Pi Pico programmed in MicroPython – X (Japanese).

Using Python to Access NASA's Astrophysics Archives

Using Python to access NASA’s Astrophysics archives – YouTube.

Storyteller AI LLM

Course on GitHub: LLM101n: Let’s build a Storyteller AI LLM using Python, C, and CUDA – GitHub.

Google Calendar management system with Python

How I made a smart Google Calendar management system with Python – XDA.

New

Radxa Computer X4

Radxa X4 is a credit card-sized Intel Processor N100 single board computer (SBC) that costs almost the same as a Raspberry Pi 5 with the 4GB RAM model going for about $60 and the 8GB RAM variant around $80 – CNX Software and Radxa Product Page.

“The x86 SBC offers many of the same features as the Raspberry Pi 5 including dual micro HDMI output, four USB 3.2/2.0 ports, Ethernet and WiFi networking, and the 40-pin GPIO header handled through a Raspberry Pi RP2040 microcontroller. Networking is better with 2.5GbE and WiFi 6, M.2 SSD support is built-in and four to eight times faster compared to PCIe HAT for the Pi 5, and the USB 3.2 ports are capable of 10 Gbps speed.”

Pineboards HatDrive! Nano

The Pineboard HatDrive! Nano Review: A low-cost, high-speed storage solution for your Raspberry Pi 5 – Tom’s Hardware.

Kickstarter: Stacky Fi

A new Kickstarter: StackyFi ESP32-S3 board features camera connector, 40-pin GPIO header for Raspberry Pi HATs – CNX Software and Kickstarter.

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.

There were no new boards this week but there are seven in the queue.

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:

CircuitPython Libraries

CircuitPython Libraries

The CircuitPython library numbers are continually increasing, while existing ones continue to be updated. Here we provide library numbers and updates!

To get the latest Adafruit libraries, download the Adafruit CircuitPython Library Bundle. To get the latest community contributed libraries, download the CircuitPython Community Bundle.

If you’d like to contribute to the CircuitPython project on the Python side of things, the libraries are a great place to start. Check out the CircuitPython.org Contributing page. If you’re interested in reviewing, check out Open Pull Requests. If you’d like to contribute code or documentation, check out Open Issues. We have a guide on contributing to CircuitPython with Git and GitHub, and you can find us in the #help-with-circuitpython and #circuitpython-dev 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 489!

New Libraries

Here’s this week’s new CircuitPython libraries:

Updated Libraries

Here’s this week’s updated CircuitPython libraries:

Library PyPI Weekly Download Stats

Total Library Stats

  • 136519 PyPI downloads over 331 libraries

Top 10 Libraries by PyPI Downloads

  • Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 13384
  • Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 13380
  • Adafruit CircuitPython ConnectionManager (adafruit-circuitpython-connectionmanager): 12078
  • Adafruit CircuitPython Register (adafruit-circuitpython-register): 2448
  • Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 1761
  • Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 1749
  • Adafruit CircuitPython framebuf (adafruit-circuitpython-framebuf): 1509
  • Adafruit CircuitPython RGB Display (adafruit-circuitpython-rgb-display): 1379
  • Adafruit CircuitPython Pixelbuf (adafruit-circuitpython-pixelbuf): 1320
  • Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1312

What’s the CircuitPython team up to this week?

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

Dan

I’m merging MicroPython v1.22.2 into CircuitPython, so we can pick up recent changes. After that, we’ll do v1.23 and v1.24 if it arrives soon.

I’m also debugging some BLE issues. The first bug I’m looking at is an interoperability problem that’s showing up when using the standard Nordic (BLE) UART service. If both boards are nRF or both Espressif, it works fine. But if the peripheral is Espressif and the central is nRF, it does not work. I have packet traces from over the air, and am now debugging with print statements inside the nRF implementation.

Melissa

This past week, I worked on updating the CircuitPython Code Editor to make USB Workflow even more stable. I rewrote the REPL JavaScript library to use Raw Mode and with improved mode awareness. I also updated it to now work with MicroPython. The update is currently live.

Jeff

I created a draft pull request to add ipv6 support to circuitpthon. It needs further work before it can be merged.

Scott

This last week I’ve been working on CircuitMatter. It is a pure Python implementation of some of the Matter IoT spec. Our goal is to have it portable between CircuitPython, CPython and (probably) MicroPython. I’m still working on the foundational packet handling and using unit tests to check my progress.

Liz

This week I worked on a few product guides. The first was for the RS-232 Pal. This breakout lets you interface with RS-232 hardware via UART with 3-5V logic. I wrote some demo code for both CircuitPython and Arduino that lets you type commands into the serial console to communicate with your RS-232 device. I used an HDMI switcher for testing. When I worked as an AV tech, I always saw those ports on equipment but never really knew what their purpose was.

I also worked on the HDC3021 temperature and humidity sensor. This sensor has a CircuitPython library that I worked on. This sensor is really interesting because you can set high and low threshold alerts, as well as auto polling for reading the temperature and humidity.

Upcoming Events

MicroPython Meetup

The next MicroPython Meetup in Melbourne will be on July 24 – Meetup. You can see recordings of previous meetings on YouTube. The June 2024 Meeting Notes and Video.

PyOhio 24

PyOhio is being held July 27-28, 2024 in Cleveland, Ohio – PyOhio.

Espressif DevCon24

Espressif DevCon24 will be held Sep 3-5, 13:00-18:00 CEST. Call for presentations now – Espressif.

Maker Faire Bay Area

Maker Faire Bay Area returns to Mare Island Naval Shipyard on October 18-20, 2024 – Maker Faire.

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 9.1.0. New to CircuitPython? Start with our Welcome to CircuitPython Guide.

20240716 is the latest Adafruit CircuitPython library bundle.

20240625 is the latest CircuitPython Community library bundle.

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

3.12.4 is the latest Python release. The latest pre-release version is 3.13.0b4.

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

38,141 Thanks

38,141 THANKS

Adafruit Discord

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

Contribute

The CircuitPython Weekly Newsletter is a CircuitPython community-run newsletter emailed every Monday. 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.