View this email in your browser. Warning: Flashing Imagery
Welcome to the latest Python on Microcontrollers newsletter! We all know Python runs faster on better hardware, but how fast? One example this week, the iMX.RT1011 vs. Raspberry Pi Pico, is interesting. Do you want to let the CircuitPython team know your priorities for this year and beyond. Keep an eye out for CircuitPython 2024. A new year and new software is coming out, check out what’s new and upcoming. – Anne Barela, 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:
Benchmarking the Adafruit Metro M7 vs. Raspberry Pi Pico in CircuitPython
Philip Gutjahr was interested in the performance gains that an Adafruit Metro M7 NXP i.MX RT1011 (500MHz) could provide compared to a Raspberry Pi Pico M0+ (125MHz), especially its hardware acceleration for float operations. Tests in CircuitPython are shown (along with an Intel i7 for giggles). The M7 was 4 to 25 times faster in various operations – Reddit and results – GitHub.
CircuitPython in 2024 – Participate Now
With the new year, it’s time to share goals for CircuitPython in 2024 and beyond. Just like in past years, the CircuitPython team would like like everyone in the Python on hardware community to contribute by posting their thoughts to some public place on the internet. See this post from Scott Shawcroft and post your thoughts on the social media platform of your choice with hashtag #CircuitPython2024 by January 31st. P.S. your thoughts on this newsletter would be appreciated in your post also.
The CircuitPython 9 Poster Has Dropped
The official poster art for CircuitPython 9 was discussed on the Adafruit Ask an Engineer show last Wednesday. Paper posters have been announced for the Adafruit shop, coming soon – Adafruit Store.
Python 3.13 Alpha Gets a JIT
CPython core developer Brandt Bucher has submitted a pull-request to the Python 3.13 branch adding a JIT compiler. JIT, or “Just in Time” is a compilation design that implies that compilation happens on demand when the code is run the first time. It’s a very broad term that could mean many things. Technically the Python compiler is already a JIT because it compiles from Python code into Bytecode. What people tend to mean when they say a JIT compiler, is a compiler that emits machine code.
Initial benchmarks show something of a 2-9% performance improvement. However, think of this JIT as being the cornerstone of a series of much larger optimizations. None of which are possible without it – tonybaloney.github.io.
What I Learned from Using a Raspberry Pi 5 as my Main Computer for Two Weeks
Andrew Cunningham wanted to take another crack at trying to use a Pi as an everyday general-purpose desktop computer. The Raspberry Pi operating system has always included many of the tools needed to do this, including a lightweight desktop environment and web browser options – Ars Technica.
Linux Kernel 6.7 Officially Released — And It’s a Big One
The Linux 6.7 kernel is now officially released — and it’s hefty one packed with an assortment of new features, new hardware enablement, and more.
By commit size alone, Linux 6.7 is one of the largest in recent history – an indicator of just how much effort has been poured into honing the latest release – OMG Ubuntu and ZDnet.
NumPy 2 is Coming
NumPy 2 is a new major release of the number crunching Python library. A release candidate is coming out February 1st, and a final release a month or two later. Importantly, it’s backwards incompatible; not in a major way, but enough that some work might be required to upgrade. And that means you need to make sure your application doesn’t break when NumPy 2 comes out – Python Speed.
This Week’s 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
Last Friday, Tim streamed work on Library PRs and setting up Webhooks.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
John Park’s CircuitPython Parsec this week is on List Comparison – Adafruit Blog and YouTube.
Catch all the episodes in the YouTube playlist.
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 – CircuitPython Show.
The latest episode was released January 15th and features CircuitPython core developer Jeff Epler. Jeff discusses his role as a core developer, adding
jpegio support to CircuitPython, and the recent addition of over 2000 new fonts to CircuitPython.
CircuitPython Weekly Meeting
CircuitPython Weekly Meeting for January 8, 2024 (notes) on YouTube.
Project of the Week: A Raspberry Pi Pico HAM Transmitter
Jon Dawson has created a HAM radio transmitter with a Raspberry Pi Pico. Dawson can transmit single-sideband, AM, FM, and even CW. It has a supported range of between 500 KHz and 30 MHz. The software for this Raspberry Pi project was created from scratch by Dawson and is written in both Python and C++ – Tom’s Hardware, GitHub and YouTube.
Popular Last Week
What was the most popular, most clicked link, in last week’s newsletter? Comparing the 1970’s Cray-1 Supercomputer Against the Raspberry Pi Single-Board Computer Range.
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.
WaveViz: Plot a synthio Wave Table – Adafruit Playground.
Raspberry Pi Stats Display with CircuitPython – Adafruit Playground.
News from Around the Web
i75W MVG Farhinfo is Micropython code for Pimoroni’s Interstate 75w RP2040 board to display departure times of Munich public transport. It uses MVG API to fetch departure information for a predetermined set of stations – GitHub.
GitHub Universe attendees were treated to custom RP2040 Badgers running MicroPython – Raspberry Pi News.
5 ways to use the new Raspberry Pi 5: fun beginner projects – Pocket-lint.
The top 30 GitHub Python projects at the beginning Of 2024 (paywall) – Towards Data Science.
The Tom’s Hardware Pi Cast (1/9): PyScript with Nicholas Tollervey (principal author of Mu) – YouTube via X.
Guide to Getting a Raspberry Pi 5 Talking in USB Gadget Mode – Ben’s Place and hackster.io.
A Parylene vapor coating lets electronics (like Raspberry Pi) run under water (without being slimy) – Tom’s Hardware.
The top 10 best programming languages for programming AI and machine learning (slideshow) – Tazaakhbar.
The counter-intuitive rise of Python in scientific computing (FORTRAN vs. Python) – The COOP Blog and Fortran Discourse.
Use Excel spreadsheets in Python With openpyxl – Real Python.
EDATEC Raspberry Pi 5 Cases Review: Passively Cool – Tom’s Hardware.
Introduction to Git and GitHub for Python Developers video course – Real Python.
Hacking BLE with Python to liberate your exercise equipment – Hackaday.
SIMD in pure Python – vidbuchanan.co.uk.
Is MIPS poised to take the RISC-V world by storm? – Electronic Engineering Journal.
Renesas GreenPAK SPLDs, a good fit for Stemma QT/Qwiic – Adafruit Blog.
Espressif introduces the ESP32-C61 microcontroller for cost-focused WiFi 6 IoT devices. TheESP32-C61 includes a RISC-V core, WiFi 6, Bluetooth 5, security features, and software dev support for Matter applications – hackster.io.
The NanoPi R2S Plus dual GbE SBC and router gets 32GB flash, USB-C debug port, and a M.2 socket for WiFi – 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 no new boards added but several are in the pipeline.
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
Bluetooth-Controlled Matrix LED Sign using Bluefruit Connect from Trevor Beaton
Updated Learn Guides
Adafruit MEMENTO Camera Board
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 474!
Here’s this week’s new CircuitPython libraries:
Here’s this week’s updated CircuitPython libraries:
Library PyPI Weekly Download Stats
Total Library Stats
- 78077 PyPI downloads over 323 libraries
Top 10 Libraries by PyPI Downloads
- Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 8068
- Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 7932
- Adafruit CircuitPython Register (adafruit-circuitpython-register): 2758
- Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 1020
- Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 944
- Adafruit CircuitPython PCA9685 (adafruit-circuitpython-pca9685): 876
- Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 872
- Adafruit CircuitPython Pixelbuf (adafruit-circuitpython-pixelbuf): 803
- Adafruit CircuitPython ServoKit (adafruit-circuitpython-servokit): 787
- Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 774
What’s the CircuitPython team up to this week?
What is the team up to this week? Let’s check in:
This past week I worked on testing various pieces of hardware on the Raspberry Pi 5 including the Speaker Bonnet, Voice Bonnet, and BrainCraft HAT. I updated scripts and guides to reflect any changes that were needed to get the hardware functioning. I’m also working with maintainers of some of the drivers to fix issues that I found during my testing.
This week I’ve been testing and reviewing library PRs. The most substantial of the ones I looked into is a proposed refactoring of the network management helper code to further simplify the user code for networking operations between microcontrollers with built-in WiFi vs. ones with an ESP32SPI coprocessor. I’ve been continuing my effort to update the
PyGameDisplay library to work with the latest versions of
I’ve been working on a pull request to add image filtering to CircuitPython. This will ultimately allow images—especially those captured on the Memento camera board—to be filtered with effects such as blur, sharpen, sepia, and tone mapping. The pull request is open now, and I’m working on writing tests for each kind of operation.
I was able to take the past two weeks off to rest and recharge. I did work on some electronics projects though while I was out. I built a plant grow light for my mom. This involved building a wooden flower box to hold the plants. The lights are 6000K DotStar LEDs that are connected to a QT Py ESP32-S2 running WipperSnapper firmware that turns the lights on and off at a scheduled time. It was my first time using WipperSnapper for a project and it was incredibly easy. Since this project is running at my mom’s house, I can also monitor it via my Adafruit IO account for troubleshooting.
I finally got around to starting to mod a Meowsic cat piano that I had found on the side of the road. I followed JP’s guide on adding a line out. Additionally, I took out the very corroded battery compartment and installed an HUSB238 so that it can be powered by USB-C. I also added a power indicator LED. I’m hoping to write both of these up as Playground Notes.
The next MicroPython Meetup in Melbourne will be on January 24th – Meetup.
PyCascades 2024 is back in Seattle, Washington, USA and online, April 5-8th at the University of Washington’s Kane Hall. – PyCascades.
PyCon US 2024 Launches – May 15-23, 2024 in Pittsburgh, Pennsylvania US – PyCon US.
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.
CircuitPython’s stable release is 8.2.9 and its unstable release is 9.0.0-alpha 6. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20240109 is the latest Adafruit CircuitPython library bundle.
20240111 is the latest CircuitPython Community library bundle.
v1.22.1 is the latest MicroPython release. Documentation for it is here.
3.12.1 is the latest Python release. The latest pre-release version is 3.13.0a2.
3,787 Stars Like CircuitPython? Star it on GitHub!
Call for Help – Translating CircuitPython is now easier than ever
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.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 38,466 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
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 Reels), 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.
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.