Daily tips and tricks from the experts at Adafruit!
View this email in your browser

View this email in your browser.

Welcome to the latest Python on Microcontrollers newsletter!

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:

Raspberry Pi OS 64-bit is Out of Beta

Raspberry Pi OS 64-bit

Over the past year, Raspberry Pi has been trialling a beta of Raspberry Pi OS 64-bit. Last week it finally came out of beta. – Raspberry Pi.

“The ARMv8-A architecture, which encompasses the 64-bit AArch64 architecture and associated A64 instruction set, was first introduced into the Raspberry Pi line with Raspberry Pi 3 in 2016. From that point on, it has been possible to run a full 64-bit operating system on our flagship products, and many third-party operating systems are available. However, we have continued to build our Raspberry Pi OS releases on the 32-bit Raspbian platform, aiming to maximise compatibility between devices and to avoid customer confusion.

there are reasons to choose a 64-bit operating system over a 32-bit one. Compatibility is a key concern: many closed-source applications are only available for arm64, and open-source ones aren’t fully optimised for the armhf port. Beyond that there are some performance benefits intrinsic to the A64 instruction set: today, these are most visible in benchmarks, but the assumption is that these will feed through into real-world application performance in the future.

A more theoretical concern is that 32-bit pointers only allow you to address 4GB of memory. On Raspberry Pi 4, we use the ARM Large Physical Address Extension (LPAE) to access up to 8GB of memory, subject to the constraint that any process is limited to accessing 3GB. Some use cases will benefit from being able to allocate the entire memory of an 8GB Raspberry Pi 4 from a single process.

33,000 Members on the Adafruit Discord

33,000 THANKS

Adafruit Discord

The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 33,000 humans this week. Thank you! Adafruit believes Discord offers a unique way for Python on hardware folks to connect. Join today at https://adafru.it/discord.

See the announcement post with a chart of the server growth – Adafruit Blog.

A CircuitPython Pull Request to Add Split Screen Capabilities

Split Screen

Split Screen

kmatch98 has a new PR in (#5954) that exposes the CircuitPython REPL’s display group elements, allowing relocation of the REPL and making thinks like split screens possible without breaking the existing displayio structure – Twitter and GitHub.

Recorded video livestream of Tim/@foamyguy demonstrating this capability – YouTube.

Piku: a small command line utility for managing CircuitPython projects

Piku is small command line utility for managing CircuitPython projects. With Pikuyou can make creating a CircuitPython project, installing packages, deploying, and connecting to a CircuitPython device easy to do from the command line – Adafruit Forums, PyPI and GitHub.

I am sure there are other tools out there but I tried to pattern piku after other package management tools i had used like poetry and npm. The tool makes it easier to create a project, add modules from the official and community bundles, deploy the project to the device, and connect to the device’s serial port. I hope that in the future it will have similar functionality to other similar tools like poetry and npm. I have tested it lightly and it seems to work on Ubuntu and Windows and it may work on macOS (I don’t have one to test on).

Piku can be installed using pip. I only have a few devices to test on, but it has really helped me iterate faster on my personal project. I hope it is helpful to someone else who likes a command like workflow like me. I would also love help improving it if anyone feels so inclined. You can check the docs on pypi or github. Feedback welcome.

CircuitPython2022 Wraps Up – Thank You

CircuitPython2022 Wraps Up

Scott posts: “Thank you to the 24 folks who posted for #CircuitPython2022! Thank you for all of the different ideas. I hope that folks collaborate to make these ideas a reality. Thank you to those whose ideas have been guiding principles over the years. We wouldn’t be here without you.”

“As Kattni points out in her #CircuitPython2022 post, don’t hesitate to let us know what you’d like to see from CircuitPython and the community throughout this year. Feel free to give us more ideas on the Adafruit Discord, Adafruit CircuitPython forum and CircuitPython issue tracker” – Adafruit Blog.

CircuitPython Deep Dive Stream with Scott Shawcroft

Deep Dive with Scott

This week, Scott streams his work on Bluetooth Low Energy (BLE) GATT on ESP32-S3.

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:

Catch all the episodes in the YouTube playlist.

The CircuitPython Show

The CircuitPython Show

The CircuitPython Show is a new independent podcast, hosted by Paul Cutler, focused on the people doing awesome things with CircuitPython. Each episode features Paul in conversation with a guest for a twenty to thirty minute interview – CircuitPythonShow, Blog Post and Twitter.

Listen to the Season 1 Trailer now – CircuitPython Show

The first episode is scheduled to air on March 1st and will feature an interview with Kattni Rembor as the first guest.

Late Breaking: Intel Corporation has joined RISC-V International

Intel Corporation has joined RISC-V International

Intel Corporation has joined RISC-V International at the Premier membership level – RISC-V.

“Intel is pleased to join the community in RISC-V International. A rich open source software and hardware ecosystem is critical for accelerating the growth and adoption of RISC-V and fully unlocking value for chip designers. Intel is delighted to support the growth of the free and open RISC-V instruction set architecture. We look forward to optimizing IP for Intel process technologies to ensure that RISC-V runs best on Intel Foundry Services (IFS) silicon across all types of cores, from embedded to high-performance.”

Project of the Week

Word Game for CLUE

Word Game for CLUE

We expect a number of microcontroller ports with similar looks to the New York Times Wordle game. Here is one by Michael Lacock done on an Adafruit CLUE board in CircuitPython 7 with or without a keyboard – GitHub.

Upgrade your CircuitPython Version on the Raspberry Pi Pico Without Access to the BOOTSEL Button

Upgrade your CircuitPython Version on the Raspberry Pi Pico

Upgrade your CircuitPython version on a Raspberry Pi Pico without access to the BOOTSEL Button – Rob Miles.

You can use a couple of Python statements to get your Pico to reboot into firmware mode so that you can drop in a new version of CircuitPython (or anything else). You can issue the commands down the terminal connection. I used the Thonny program which provides a REPL connection to my CircuitPython powered CheeseBox (or Crackers Controller).

microcontroller.on_next_reset(microcontroller.RunMode.UF2)

This is the first command you type in. It tells your device to reset into UF2 mode next time it is reset.

microcontroller.reset()

This is the second command. It resets the device and makes it appear as as storage device into which you can load the firmware.

News from around the web!

Daft Punk Word Clock

Daft Punk Word Clock – NYCResistor and YouTube.

Best RP2040 Boards 2022

Tom’s Hardware has released their list of the best RP2040 boards for 2022, all of which can run CircuitPython – Tom’s Hardware

Adafruit WipperSnapper

Adafruit has released support for additional I2C sensors (such as the BME280 and DPS310) to Adafruit IO WipperSnapper, the no-code IoT interface for Adafruit IO. You can now pull data from these sensors straight into Adafruit IO in less than five minutes – Adafruit Blog.

Compact Thermal Camera

Compact Thermal Camera – Thingiverse via Twitter.

WordPortal

A Word Game clone on Adafruit PyPortal in CircuitPython with a pop-up touch screen – YouTube.

Bouncing Ball

Okay, physics time! Calculating vector using numpy (ulab module) in CircuitPython to bounce a ball at the round edge of the screen – Twitter.

Note: Some ball ghosting in the GIF above is due to conversion from the original video.

More NeoPixels

Secrets of MicroPython: More Fun with NeoPixels! – Bhavesh Kakwani via Reddit.

Rain Effect

It’s like raaaaaaiiiiiin on your ESP! This little demo shows that MicroPython now works very nicely with the NeoPixels on the bedazzled ESP32-C3, thanks to a speedy assist from
@matt_trentini and @damienpgeorge – Twitter.

Keyboards

Two board concepts that minimize finger movement and use CircuitPython – reddit and Keyboard Builder’s Digest.

FeatherWing Refactor

Another refactored FeatherWing project. This time it’s an I2C brushed DC motor controller with an analog current monitor on a perfect purple Oshpark board. A custom device driver for CircuitPython is already waiting in the wings – Twitter.

MIDI Router

Raspberry Pi Pico Multi MIDI Router – Part 2 – with MicroPython – DIYelectromusic via Twitter.

Beat Box

Beat box with CircuitPython on an Adafruit Circuit Playground Express – Twitter.

Air Quality Chart

I’ve been using the PMSA003I (for air quality monitoring). I log to the web via an ES32-S2 running CircuitPython. I can’t speak to the absolute accuracy, but I see PM spikes when I cook that make sense to me. I like that it is quiet – Twitter Thread.

Cytron Maker Nano RP2040 Review

Cytron Maker Nano RP2040 Review on Tom’s Hardware, with tests in MicroPython and CircuitPython – Tom’s Hardware.

Raspberry Pi Pico connected to a TM1637 4-digit LED display

Raspberry Pi Pico connected to a TM1637 4-digit LED display, programmed in MicroPython – RP2040 Learning.

Learn MicroPython

Getting Started With MicroPython (video lessons) – Real Python via Twitter.

Tiny Core Linux 13.0

Tiny Core Linux 13.0 – full Linux desktop in 22 MB. – The Lunduke Journal of Technology.

Free Icons

Handcrafted 3D Icons, Fully Customizable Online. Free for commercial and personal use – vertex.im.

7 Steps to Mastering Machine Learning with Python in 2022

7 Steps to Mastering Machine Learning with Python in 2022 – KD Nuggets.

Reso

Reso: A visual circuits programming language using pixels – GitHub.

Split Keyboard

A split keyboard with Adafruit KB2040 microcontrollers using PRK firmware based on PicoRuby – Twitter.

Guido van Rossum

The creator of Python likes Python on Hardware – Twitter.

Django cheatsheet

This is a Django cheat sheet I created for myself for when I create a new Django project – LinkedIn.

Open Source Alternatives

Open Source Alternatives has 200+ curated open source alternatives to tools that businesses require in day-to-day operations – BTW.

PyDev of the Week: Batuhan Taskaya on Mouse vs Python.

CircuitPython Weekly Meeting for February 7th, 2022 (notes) on YouTube.

#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? xkcd Python comic.

Coming soon

Unexpected Maker

The new ESP32-S3 boards from Unexpected Maker – esp32s3.com.

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

CircuitPython Neko Kitty with Displayio from Tim C

NeoPixel Mini VU Meter from Noe and Pedro

May Pad Macropad with the KB2040, KMK, and CircuitPython from Eva Herrada

Adafruit LED Arcade Button 1×4 STEMMA QT from Kattni

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

Updated Libraries!

Here’s this week’s updated CircuitPython libraries:

What’s the team up to this week?

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

Dan

I fixed some Espressif I2C issues last week, and also fixed a problem that caused SAMD builds to crash immediately.

We wanted to be able to host free versions of “a certain word game” on CircuitPython boards, and discovered there was no simple HTTP web server written for ESP32-S2 boards. I found an initial version someone had created and rewrote it to be more general. The code will be a library and will be shown in a guide soon.

I am researching how to provide async versions of HTTP clients and servers. There is a nice library, aiohttp, used with CPython, but it is large and comprehensive. I am looking at some other smaller libraries, such as asks and httpx, and will see whether we can created a limited adafruit_ version of one of these, as we did with adafruit_requests.

Jeff

While my main work continues to be on floppy drives, I’ve put in a few pull requests to CircuitPython as well. One will update the “SDK” we use for RP2040 boards to the current version, and another starts to add “mdns” support to the Espressif port. This latter feature will allow you to use a hostname to connect to an Espressif device (e.g., qtpy.local) instead of an IP address. Hopefully this will dovetail with some work that Dan has been doing to create a CircuitPython web server.

Kattni

This week I published the Arcade QT guide. This board has been out for a bit, but other things took priority over the guide. Folks have been asking for examples, so I put together the guide this week. It has everything you need to get started with your Arcade QT board. Check it out!

Melissa

This past week I made some really good progress on porting LittleFS to JavaScript. I found a nice online C compiler that really helped out because I could paste snippets of code to test along with the appropriate includes and test the output of code as easily as I could test JavaScript making comparing some of the low level functions very easy. It turns out there were a few functions that were returning different results than I expected and once I got the same outputs for the same input, I was able to get the rest of the code working very well. I now have it outputting a very similar file to what I was expecting and just have a little more debugging to do.

Scott

This week I hit my first bump on the BLE on ESP journey. The NimBLE stack that the ESP-IDF uses relies on defining all of the services to serve up front. On nRF and in our API, we’re able to add services after the stack has started. This works well for CircuitPython where the user code can add more Services as needed. Thankfully, NimBLE is open source and we can modify it to handle adding Services later.

I’ll start on that work after I test and propose the other changes I made this week. They lay out much of the code needed to talk to services served by the other device. This is known as the client role. It will allow CircuitPython to connect to other devices and read the data that they make available. Doing the work in stages is a best practice because it 1) minimizes how much code is on one person’s version of CircuitPython and 2) allows others to use and test the newer code.

Upcoming events!

MicroPython Meetup

The next MicroPython Meetup in Melbourne will be on February 23rd – Meetup. See info and the slides of the February 2nd meeting.

PyCon US 2022

PyCon US 2022 planning is underway. The team is planning to host the event in person with an online component. April 27, 2022 – May 5, 2022. Head over to the PyCon US 2022 website for details about the conference and more information about the sponsorship program – PyCon Blog.

PyCon IT 2022

PyCon Italia is the Italian conference on Python. Organised by Python Italia, it is one of the more important Python conferences in Europe. With over 700 attendees, the next edition will be June 2-5, 2022 – Ticket Registration.

SciPy 2022

SciPy 2022, the 21st annual Scientific Computing with Python conference, will be held in Austin, Texas, USA from July 11-17, 2022. The annual SciPy Conference brings together attendees from industry, academia, and government to showcase their latest projects, learn from skilled users and developers, and collaborate on code development. The full program will consist of 2 days tutorials (July 11-12), 3 days of talks (July 13-15) and 2 days of developer sprints (July 16-17) – SciPy 2022.

Send Your Events In

As for other events, with the COVID pandemic, most in-person events are postponed or cancelled. If you know of virtual events or events that may occur in the future, 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.1.1 and its unstable release is 7.2.0-alpha.2. New to CircuitPython? Start with our Welcome to CircuitPython Guide.

20220207 is the latest CircuitPython library bundle.

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

3.10.2 is the latest Python release. The latest pre-release version is 3.11.0a5.

2,795 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.

Job of the Week

Arduino Uno R3 Code Composite for Water Control – MB Associates – Adafruit Jobs Board.

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.