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! What happened to having a “quiet Summer”? So much has been happening! CircuitPython 9.1.0 final is out now and packed with features, including floppy support and Bluetooth on ESP32. A big week in Arduino’s life: they embrace the industry I2C standard (great) but the embedded OS they use, Mbed, will go end-of-life (um). There is so much more, please feel free to browse through for topics of interest, and I hope you have a great week – 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:

CircuitPython 9.1.0 Released!

CircuitPython 9.1.0 Released

CircuitPython 9.1.0 is now the latest revision of CircuitPython, and is the new stable release. The added features feel like a major release (see below) – Adafruit Blog and Release Notes.

Notable changes since 9.0.0

INCOMPATIBILITY WARNINGS

  • API changes to floppyio.
  • String values in settings.toml must be quoted.

AUDIO

  • RP2040 I2SOut supports BLCK and LRCLK in either order.
  • ESP32-S3 supports audiomp3.
  • audiomp3 supports streaming from HTTP servers.

BLUETOOTH

  • BLE GATT server support on Espressif.
  • Pairing and bonding support on Espressif.

BUILT-IN MODULES

  • Enhance collections.deque functionality.
  • Add keypad_demux.DemuxKeyMatrix: use multiplexer for one side of a keypad matrix.
  • Add integration-based debouncing to keypad.
  • supervisor.Runtime.serial_bytes_available now returns a count instead of a bool.
  • Incompatible change: floppyio improvements, including API changes.
  • Espressif: microcontroller.cpu.frequency is settable.

GRAPHICS

  • fourwire.FourWire: chip_select pin is now optional.
  • picodvi now supports 640×240 and 800×240 resolutions.
  • Enable _eve on Espressif boards with more than 4MB flash.

INTERNAL

  • Espressif: update to ESP-IDF v5.2.2.
  • Espressif: Change task-switching quantum to 1 millisecond (from 10 milliseconds).

NETWORKING

  • Implement ssl module for anything that provides socket.
  • Add stream protocol support to SSLSocket.

PORTS

  • New port for renode hardware simulator.

POWER

  • Enable deep sleep on all supported Espressif chips.

SUPERVISOR

  • String values in settings.toml must be quoted.

USB

  • max3421e USB host support.
  • Allow user-specified names for usb_midi interfaces and jacks.

Arduino Embraces Maker I2C Bus Standard Connections

Arduino Embraces Maker I2C Bus Standard Connections

Arduino has joined with SparkFun, Adafruit, and others in embracing a standard connector for I2C bus connections. Called Qwiic by SparkFun and Stemma QT by Adafruit, this allows for solderless connections to dozens of compatible boards, including sensors, indicators and controls. Dubbed Modulino® by Arduino, there are a number of I2C boards coming out – Arduino Blog.

Mbed Platform End-of-Life Announced

Mbed Platform End-of-Life Announced

Arm Mbed has announced the following on the mBed OS Blog:

  • The Mbed platform and OS will reach end of life in July 2026, when the Mbed website will be archived and it will no longer be possible to build projects in online tools
  • The device software – Mbed OS – is open source and will remain publicly available, but is no longer actively maintained by Arm
  • The Mbed TLS project is unaffected by the announcement and continues to be supported as part of the TrustedFirmware community project.

Also: End of the Line for Arm’s Mbed OS, noting that Arduino was a heavy adopter of Mbed OS for its products including Nano 33 BLE – Hackster.io.

Introduction to Intermediate MicroPython

Introduction to Intermediate MicroPython

Kevin’s Intermediate MicroPython course builds on the foundations laid in the Learn MicroPython – the basics course. The course delves into more advanced topics, with the knowledge and skills to tackle complex projects with confidence – Kev’s Robots.

Understanding the Raspberry Pi Pico’s Memory Layout

Understanding the Raspberry Pi Pico’s Memory Layout

In updating TensorFlow Lite Micro for the Raspberry Pi Pico, Pete Warden documented the processor’s memory map after finding documentation on it incomplete – Pete Warden’s Blog.

Embedded MicroPython: MicroPython is Amazing

Embedded MicroPython

Arya Voronova provides an overview of MicroPython, its capabilities, and how its usefulness can be addictive – Hackaday.

New ViperIDE Features Added

ViperIDE is a new third-party development environment for MicroPython and CircuitPython.

ViperIDE

ViperIDE now runs the full MicroPython compiler right in the browser, thanks to WebAssembly – X.

ViperIDE

In addition to direct and remote device connectivity, ViperIDE can now run an emulated device directly in a browser. This feature is experimental, but you can try it hereX.

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 starting 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 Feather Bootloaders – Adafruit Blog and YouTube.

Catch all the episodes in the YouTube playlist.

CircuitPython Weekly Meeting

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

Project of the Week: Boris Puts Two Raspberry Pis to Work in an Industrial Home Assistant Control Panel

Industrial Home Assistant Control Panel

A high-tech panel for a Home Assistant installation is on tap this week. It uses two Raspberry Pi 3 B+ and some Adafruit I2C IO expanders to accommodate all the external inputs and outputs. It’s tied together on the panel with Python running on the Pis – hackster.io and YouTube.

“I modeled this after modern commercial jetliner cockpits, and also a little on nuclear power plant control rooms,” Boris explains of the control panel aesthetics.

Popular Last Week

What was the most popular, most clicked link, in last week’s newsletter? New Edition: Get started with MicroPython on Raspberry Pi Pico.

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.

Virtual Display Over Web Serial

Virtual Display Over Web Serial – Adafruit Playground.

CamTest

CamTest: PiCowbell Camera Breakout Demo – Adafruit Playground.

Tricorders

Tricorders, using Circuit Playground Express and CircuitPython – Adafruit Playground.

News From Around the Web

Free ESP32-C3 Book

Espressif has a free book in PDF format – ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT – Espressif (PDF) via X.

An Animated Business Card

An animated business card that recipients may actually keep, using CircuitPython – hackster.io via X.

A connected badge

How to make a connected badge that shows the latest news headlines — and looks like a floppy disk. Coded in MicroPython – Tom’s Hardware.

Better Buttons with Debouncing

Better Buttons with Debouncing, from CircuitPython School – YouTube.

Twirly Shirley

Twirly Shirley: the Pico-powered precision turntable using MicroPython – Raspberry Pi News.

Alvik

Computer vision (and more) for the Arduino Alvik robot with MicroPython – hackster.io.

Yuki-board

Yuki-board is a business card-sized capacitive touch keyboard that uses touch and swipe gestures to type. It runs CircuitPython. It is heavily inspired by the Plum Blossom Chinese IME on PPC and the Japanese Flick keyboard on Android – YouTube via X.

A Raspberry Pi Using Solar Power

How to run your Raspberry Pi using solar power – SlashGear.

Tulip

Tulip, a musical computer based on MicroPython. Conceived with a clear focus on music, it comes with an internal sequencer and software synthesizer (- framework), MIDI and audio interfaces – YouTube.

MatrixPortal

Programming a MatrixPortal M4 and two 32×16 RGB LED panels in CircuitPython – Mastodon.

Torvalds Speaks

Torvalds Speaks: The Impact of Artificial Intelligence on Programming – YouTube.

PySkyWiFi

PySkyWiFi: completely free, unbelievably stupid WiFi on long-haul flights, coded in Python – Adafruit Blog.

PythonMonkey

Python meets JavaScript, Wasm with the magic of PythonMonkey. PythonMonkey is a JavaScript runtime living inside of Python, built on top of Mozilla’s SpiderMonkey engine. Developers can use it as a Python library for running JavaScript code in Python – TheNewStack.

What's in a name?

What’s in a name? Looking at PyPi – Josh Cannon.

“81% of packages have a single prefix, which when normalized directly correlates to the package name.”

Raspberry Pi 5 cluster?

Wanna build a Raspberry Pi 5 cluster? – Raspberry Pi News.

Pyxel

Pyxel is a retro game engine for Python. Thanks to its simple specifications inspired by retro gaming consoles, such as only 16 colors can be displayed and only 4 sounds can be played back at the same time, you can feel free to enjoy making pixel art style games – GitHub.

PyInstaller

How to create a Python executable file with PyInstaller – TheNewStack.

LPython 0.22 Released

LPython 0.22 released for ahead-of-time compiling in Python – Phoronix.

Making Python Less Random – Andrew Healey.

New

n-fuse PoE HAT

The n-fuse PoE HAT Provides Power and Range of mPCIe and M.2 Storage Options to the Raspberry Pi 5. New HAT comes in mPCIe and M.2 B-key, M-key, and E-key flavors — but USB connectivity will cost one the warranty – hackster.io.

FourThirdsEye

Will Whang’s FourThirdsEye puts a Sony IMX294 sensor on a Raspberry Pi 5 or Compute Module 4 – hackster.io.

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 was one new board added this week:

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

MP3 Playback with CircuitPython from Jeff Epler

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

Updated Libraries

Here’s this week’s updated CircuitPython libraries:

Library PyPI Weekly Download Stats

Total Library Stats

  • 138249 PyPI downloads over 330 libraries

Top 10 Libraries by PyPI Downloads

  • Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 11836
  • Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 10717
  • Adafruit CircuitPython ConnectionManager (adafruit-circuitpython-connectionmanager): 9736
  • Adafruit CircuitPython Register (adafruit-circuitpython-register): 2704
  • Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 1809
  • Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1475
  • Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 1464
  • Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 1250
  • Adafruit CircuitPython Pixelbuf (adafruit-circuitpython-pixelbuf): 1236
  • Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1087

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.0 last Wednesday. Thanks to everyone who worked on this release for the past several months.

Next I’m going to work on catching us up to the latest MicroPython changes. We last merged MicroPython v1.21. MicroPython most recently released v1.23. We merge the versions one at a time to understand the merges more easily and make them smaller.

Melissa

This past week, I updated the CircuitPython Code Editor and fixed the USB Workflow to get it into a working state. In the process, I found that the REPL JS library will need to be updated to use Raw mode rather than Raw Paste mode, which will fix some of the weird issues that I’ve been seeing. I will also need to make some structural changes and will continue to working on it over the next week or so.

Jeff

I published a guide on the Adafruit Learning System: MP3 Playback with CircuitPython. This details MP3 streaming, recently added in the latest development version of CircuitPython, as well as bringing together other information about using the audiomp3 module that was previously spread across multiple guides.

Scott

This week I’m digging into the Matter IoT specification and planning to implement a portion of it in CircuitPython. There is an open SDK written in C++ but it is quite large and complex. So, I’m going to attempt to re-implement the core bits in Python instead. It is built on top of IPv6 TCP and UDP so it shouldn’t require many changes internal to CircuitPython.

Liz

This week I worked on a product guide for the IR Remote Transceiver. This breakout lets you send and receive IR remote signals. It has examples for both Arduino and CircuitPython.

I also worked on testing the Vindie S2 board. I have a spreadsheet where I can keep track of the tests I’ve tried and what’s working vs. not working in CircuitPython and Arduino. One thing that we’ll need to change on the next hardware revision is the USB port. The one we chose is mechanically strong but has slightly too much overhang on the edge, so it conflicts with the case. I found a port that has data pins without any extra mounting hardware. This seems to be rare for vertical USB C ports. I designed up a quick breakout for this new port. That should be arriving in the next few days.

Upcoming Events

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.

20240709 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.0b3.

3,966 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,124 Thanks

38,124 THANKS

Adafruit Discord

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