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! Midsummer is a time when Americans bake in the sun and Finns bask at a cottage by the lake. No matter how you are handling the season, you can leisurely browse this issue. We reported not long ago that Mbed OS was end of life and that left Arduino in a lurch. No more, as Arduino just announced their embrace of Zephyr OS, a good choice. A new maintenance release of CircuitPython is out now. And this issue focuses on cool projects in the summer heat. – 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:

Arduino to Switch From Arm Mbed to Zephyr Real-Time Operating System (RTOS)

Arduino to Switch

Following Arm’s decision to stop supporting Mbed from July 2026 onwards, Arduino has now decided to use Zephyr RTOS instead of Arm Mbed for Arduino boards that rely on the latter including Arduino GIGA, Arduino Nano 33 BLE, Arduino Nano RP2040 Connect, as well as Arduino PRO boards/solutions such as the Portenta, Nicla, and Opta families. Arduino plans to release the first beta of their solutions by the end of 2024, with a rollout for various boards starting in 2025 – CNX Software and Arduino.

CircuitPython 9.1.1 Released

CircuitPython 9.1.1 Released

CircuitPython 9.1.1 is the latest bugfix revision of CircuitPython and is a new stable release – Adafruit Blog and GitHub Release Notes.

FIXES AND ENHANCEMENTS

nordic
Fix BLE MTU negotiation.

RP2040
Check that all busio.UART pins are valid before claiming any.

SAMx
SAMD51: fix PWMOut by reverting #9343: symptoms included no backlight on boards with displays.

MicroPython Simulation With Proteus

MicroPython Simulation With Proteus

Proteus VSM for MicroPython provides system level simulation of an embedded design centered around a processor running MicroPython code. Users design the hardware directly on a schematic, choosing from thousands of embedded peripherals and placing and wiring them to the microcontroller board – Proteus via X.

Teardown 2024 – Prototype to Product with MicroPython: Faster and Happier Embedded Systems Development – Ned Konz

Teardown 2024

Ned Konz’ talk at Teardown 2024 “Prototype to product with MicroPython: faster and happier embedded systems development” is now available online – YouTube.

Constant Current Circuits for Flexible Filament LEDs

Constant Current Circuits for Flexible Filament LEDs

Kevin J. Walters shows how to power flexible “filament” LEDs and vary their brightness using a microcontroller and CircuitPython. A simple transistor-based circuit is used to provide a constant current to drive each LED with a microcontroller providing pulse-width modulated control to vary the brightness – Instructables.

Checkout Challenge

Checkout Challenge

Checkout Challenge is a shopping trolley racing game made for the Adafruit PyBadge with CircuitPython, inspired by popular racing games – hackster.io and GitHub.

“With an Adafruit PyBadge I had stored away for a few years, and with the advent of AI accelerating code development and generating impressive artwork, I realized it was the perfect time to start working on this game.”

Saxophone Changes Color on Every Note

Saxophone changes colour on every note

This Pi Zero 2 W build uses an Adafruit NeoPixel ring and Python to show the colors of notes as they’re played – Raspberry Pi News.

PSF: Python’s Supportive and Welcoming Environment is Tightly Coupled to Its Progress

Python’s Supportive and Welcoming Environment is Tightly Coupled to Its Progress

Python is as popular as it is today because folks have gone above and beyond to make this a welcoming community. We believe to be “welcoming” means to do our best to provide all participants with a safe, civil, and respectful environment when they are engaging with our community – on our forums, at PyCon events, and other spaces that have committed to following our Code of Conduct. We have a moral imperative – as one of the very best places to bring new people into tech and into open source – to keep being good at welcoming new people – Python 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

Last Friday, Scott streamed work on CircuitMatter cryptography.

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 touchio proximity – Adafruit Blog and YouTube.

Catch all the episodes in the YouTube playlist.

CircuitPython Weekly Meeting

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

Project of the Week: Implementing DDP in MicroPython

Implementing DDP in MicroPython

scy on Mastodon was looking at using either Art-Net or Distributed Display Protocol (DDP) for a project. After looking at the specs, he chose DDP – Mastodon.

DDP is so simple that I wrote a hacky, rudimentary server for it in about 50 lines of MicroPython, from scratch, in about an hour. Uploaded it to an ESP32, pointed a WLED controller at it and everything worked on the first attempt.

Popular Last Week

What was the most popular, most clicked link, in last week’s newsletter? How to write code for your Raspberry Pi Pico in your web browser with ViperIDE.

New Notes from Adafruit Playground

Adafruit Playground is a new place for community members 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.

BLE Gamepad with QT Py ESP32-S3

A BLE Gamepad with QT Py ESP32-S3 – Adafruit Playground.

Using multiple WiFi network credentials in Adafruit IO WipperSnapper firmware

Using multiple WiFi network credentials in Adafruit IO WipperSnapper firmware – Adafruit Playground.

Heat Flow Visualiser

Heat Flow Visualiser: Visualise the Invisible with NeoPixels and the RP2040 Scorpio – Adafruit Playground.

News From Around the Web

I built a custom Lite Brite using the Matrix Portal, and now it plays Tetris

I built a custom Lite Brite using the Adafruit Matrix Portal and CircuitPython, and now it plays Tetris – Reddit.

You're Electric Capacitive Touch CircuitPython School

You’re Electric: Capacitive Touch with Circuit Playground Bluefruit and CircuitPython – YouTube.

Greenhouse IoT cloud project

Greenhouse IoT cloud project bears results via MicroPython – BlueSky.

MatrixPortal M4 scrolls text sent over Telegram

An Adafruit MatrixPortal M4 project to display scrolling text on an LED matrix with messages fetched from a Telegram bot, written in CircuitPython – GitHub via X.

ESP-Box MSFS2020 flight data (Circuitpython script)

ESP-Box MSFS2020 flight data (Circuitpython script) while aircraft passing over UTC longitude in the UK – X.

ViperIDE now highlights warnings and errors

To celebrate 300 ⭐️ on GitHub, ViperIDE now highlights warnings and errors in code, thanks to Ruff – an innovative Python linter, analyzer, and formatter – X.

The Engineer’s Guide to RF Cable Assembly Selection and Use

The Engineer’s Guide to RF Cable Assembly Selection and Use – DigiKey.

Raspberry Pi Pico Traffic Light Simulation

Raspberry Pi Pico Traffic Light Simulation – YouTube.

This Raspberry Pi DinkyDash family dashboard helps track chores, birthdays, and more

This Raspberry Pi DinkyDash family dashboard helps track chores, birthdays, and more – Tom’s Hardware and GitHub.

How to auto-generate Python type hints with Monkeytype

How to auto-generate Python type hints with Monkeytype – InfoWorld.

How To Navigate the Filesystem with Python’s Pathlib

How To navigate a filesystem with Python’s Pathlib – KDnuggets.

10 tips for speeding up Python programs

10 tips for speeding up CPython programs – InfoWorld.

Full Guide to Building a Professional Portfolio with Python, Markdown, Git, and GitHub Pages

Full Guide to Building a Professional Portfolio with Python, Markdown, Git, and GitHub Pages – Medium.

Logging in Python

Logging in Python – Real Python.

New

FutureBoard

FutureBoard is a main control board designed for STEM education in the future. It has many built-in sensors just like the micro:bit, but unlike the micro:bit, FutureBoard features a TFT screen capable of displaying full colors. It supports MicroPython coding, allowing for more advanced learning – hackster.io.

Flipper Zero hacking tool gets CAN bus add-on board for vehicle diagnostics and security research

Flipper Zero hacking tool gets CAN bus add-on board for vehicle diagnostics and security research – CNX Software.

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 7 microcontrollers and 12 new single board computers added!

Blinka (SBCs)

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

ESP32-S3 BLE iOS Media Controller from Liz Clark

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!

Updated Libraries

Here’s this week’s updated CircuitPython libraries:

Library PyPI Weekly Download Stats

Total Library Stats

  • 242516 PyPI downloads over 331 libraries

Top 10 Libraries by PyPI Downloads

  • Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 21618
  • Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 21587
  • Adafruit CircuitPython ConnectionManager (adafruit-circuitpython-connectionmanager): 19779
  • Adafruit CircuitPython Register (adafruit-circuitpython-register): 2655
  • Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 2213
  • Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 2134
  • Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 1802
  • Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 1737
  • Adafruit CircuitPython ESP32SPI (adafruit-circuitpython-esp32spi): 1718
  • Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1687

What’s the CircuitPython team up to this week?

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

Dan

I released CircuitPython 9.1.1 last week to fix a problem with the display backlight not illuminating on SAMD51 boards like the PyPortal. The release also includes a few other fixes.

I’m continuing to fix bugs in the 9.1.x milestone and I’m also continuing the merge from MicroPython v1.22.

Melissa

This past week I set up a beta website for code.circuitpython.org. The URL for the new site is https://code-beta.circuitpython.org if you would like to give it a try. Currently though, it contains the same code as code.circuitpython.org, but the plan is to push changes there first to avoid breaking code.circuitpython.org.

Tim

I’ve been working on fixing a few displayio driver libraries that have compatibility issue with the latest version of Blinka_Displayio. I’ve also started switching library repos to use Ruff instead of pylint and Black. I’m making that swap on libraries as I come across them reviewing other changes or working on other things. I chased down an issue with SAMD51 devices that have built-in displays to find the specific commit where the problems began.

Jeff

This week my work to add support for IPv6 on most Espressif boards was merged into to the very latest versions of CircuitPython. For now, the documentation is shoe-horned into the “Internet Test” page on Learn. The tl;dr is: wifi.radio.start_dhcp_server(ipv6=True) and then create sockets with AF_INET6.

Libraries that build on socketpool, like adafruit_requests and adafruit_ntp will require their own updates to work with IPv6, because they always request IPv4 sockets via AF_INET.

You won’t see any updates from me over the next few weeks, as I’m taking a vacation!

Scott

This week I’ve continued working on CircuitMatter. I’ve reconnected things to the network and have successfully replied to the controller! The next task is to implement the cryptography functions used to establish a secure message channel. I’m testing with a test controller on my desktop now and can also record and replay packets on the Python device side.

Liz

This week I worked on a fun project with the Ruiz brothers to showcase BLE on ESP32-S3: the ESP32-S3 BLE iOS Media Controller. This project uses an ESP32-S3 Feather with a TFT FeatherWing to display and control Apple Media services over BLE.

I also worked on two product guides. The first was the CH334F USB Hub Breakout. This breakout lets you easily build a custom USB hub, no code required. The second was for the USB Type C Power Delivery Switchable Breakout. This board is a remix of the original HUSB238 breakout in the shop. This version features DIP switches to select the PD voltage instead of solder jumpers. Working on the original breakout got me very interested in weird USB power methods so I’m excited to have a version that doesn’t require soldering.

Upcoming Events

MicroPython Meetup

The next MicroPython Meetup in Melbourne will be on August 28 – Meetup. You can see recordings of previous meetings on YouTube. The video from July 24th is here.

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

20240723 is the latest Adafruit CircuitPython library bundle.

20240725 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,973 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,186 Thanks

38,186 THANKS

Adafruit Discord

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