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

View this email in your browser.

The Python on Microcontrollers newsletter is brought you by the community! We’re on Discord, Twitter, and for past newsletters – view them all here. If you’re reading this on the web, subscribe here. What’s new? Let’s see:

Events Planning

RISC-V Summit

RISC-V Summit brings the community together to show the power open collaboration can have on the processor industry. The audience spans across industries, organizations, workloads, and geographies to learn about the technology advancements in the RISC-V ecosystem and visibility of RISC-V successes. The event is December 6 – 8, in-person in San Francisco or virtually from anywhere in the world – Linux Foundation via Twitter.

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.

An Ultra-thin, Portable Keyboard Running CircuitPython on a RP2040

Keyboard

Based on the PyKey60, this ultra-portable keyboard is inspired from Keyboardio’s Atreus but uses low profile Kailh Choc switches instead. These are lower profile than standard MX switches and even have a slightly closer pitch from switch to switch; making the keys closer to each other.

Why did I create a custom board instead of using a Raspberry Pi Pico? The Pico wouldn’t allow for the thinnest keyboard. Its position would need room below the PCB and thus would also need a bottom plate to enclose it all, defeating the whole point of an ultra-low profile keyboard.

The project uses 44 Kailh Choc Low Profile Hot Swappable key switches, a RP2040 controller, and USB-C. It runs CircuitPython – changing the keymap is as easy as changing a file on the keyboard – Reddit.

A New Boot Sequence Chart for CircuitPython 7

New Boot Sequence Chart for CircuitPython 7

A new chart diagraming the boot sequence for CircuitPython 7 has been published. Importantly, the colors of onboard LEDs has changed somewhat in the new version to aid in debugging. The chart will be incorporated into existing CircuitPython documentation soon – Twitter.

Halloween Hackfest

Halloween Hackfest

Join Hackaday, Digi-Key, and Adafruit for a Halloween-themed contest! They want to see your crazy, creepy, ghostly, spooky, and awesome projects.

If costumes are your favorite part of Halloween, then why not dress up your outfit with some hacked upgrades? You could even design a ghoulish prop to add to your home’s Halloween décor or light up a Jack-o-lantern with LEDs. Whether it’s technical, artistic, or just plain terrifying, Hackaday wants to see your projects!

Check out the Halloween Show & Tell with Hackaday, Friday, October 29th at 1pm PT, to show off your awesome projects entered in the contest. Don’t forget to also share your projects on social media and use the #HalloweenHackfest!

Hackaday and Digi-Key have partnered on this Halloween-themed contest to offer three winners an online shopping spree to the Digi-Key warehouse! – Hackaday and hackaday.io.

Hacktoberfest Begins October 1st

Hacktoberfest 2021

Hosted by DigitalOcean for the 8th year in a row, Hacktoberfest encourages participation in giving back to the open source community by completing pull requests, participating in events, and donating to open source projects.

Anyone around the globe who desires to help drive the growth of open source and make positive contributions to an ever-growing community. All backgrounds and skill levels are encouraged to participate. The first 55,000 participants can earn a T-shirt. Learn more – DigitalOcean.

For CircuitPython, issues will soon be tagged for Hacktoberfest. Good First Issues and open issues will both be featured. It is anticipated that the number of CircuitPython issues to work on will be higher this year.

October is also Open Hardware Month

Open Hardware Month

October is Open Hardware Month! The Open Source Hardware Association (OSHWA) is providing resources and asking the community to host small, local events in the name of open source hardware. See more – OSHWA.

Building a smart IoT flowerpot from scratch

Plant Watering

This project is a cute IoT flowerpot that helps you tracking the basic measures needed to take care of your favorite plants such as water, moisture, and temperature levels. You can see the measures directly on the device or on the online dashboards. This DIY project uses 3D printing and is powered by CircuitPython – Medium and Vimeo.

CircuitPython Deep Dive Stream with Scott Shawcroft

Deep Dive with Scott

This week, Scott streams his work on CircuitPython running “bare metal” on a Raspberry Pi 4.

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.

An interview with Simon Monk, author of Programming the Pico

interview with Simon Monk

Author and maker Dr. Simon Monk recently published the book Programming the Pico: Learn Coding and Electronics with the Raspberry Pi Pico. Adafruit asked Simon some questions about himself and the book – Adafruit Blog.

News from around the web!

Light Meter

A simple, no solder light logging sensor with an Adafruit QT Py and CircuitPython – GitHub, Twitter and Adafruit Blog.

Scramblepad

Implemented PIO-based bit-banging for the Hirsch Scramblepad protocol using CircuitPython on the Raspberry Pi Pico – Twitter Thread.

RP2040 Handheld

A CircuitPython / PyDOS / PyBasic handheld using a Feather RP2040 and Keyboard FeatherWing by arturo182/solderparty – YouTube via Twitter and GitHub.

Melopero

Melopero Shake RP2040, a new microcontroller board based on the Raspberry Pi RP2040! It features 16MB of flash memory, battery charger with low battery monitor, WS2812 RGB LED, Qwiic/Stemma QT connector, USB-C connector and more – Melopero via Twitter.

A Media Controller Knob

A version of the QTPy-knob: a simple USB knob with CircuitPython and an Adafruit QT Py, a NeoPixel Ring, a Rotary Encoder and some 3D-printed parts. It’s glowy and useful! – Elmwood Electronics.

Titano Basic

I made some progress on Basic for my Adafruit PyPortal Titano. It can read a light sensor, use NeoPixels, read touch screen, added a pause function. Need some work for sound etc. But the work is in progress – Twitter.

Where does all the effort go? Looking at Python core developer activity

Where does all the effort go? Looking at Python core developer activity – Łukasz Langa.

Halloween

I think this counts as a win… never coded in CircuitPython before. Adafruit NeoPixels, 3D printing, for a Halloween costume – Twitter.

The Micro Gherkin

The Micro Gherkin: the tiniest Pi Pico powered keypad. Both the switches and the Pi Pico are surface mounted, back to back – 40 Percent Club.

PicoSystem

MicroPython is being ported to the new Pimoroni PicoSystem – Twitter Thread.

Picomputer PICO

First steps on Raspberry Pi Pico Picomputer PICO is now chip crisis resistant and with Adafruit CircuitPython. I am totally Python beginner but all Adafruit examples and libraries works without a problem 😉 I am going to learn Python – Twitter.

PIR Movement Alarm With BBC Micro:bit and External Speaker in MicroPython

A movement alarm made with a BBC micro:bit, a mini-PIR sensor module and an external speaker on a Kitronik :CREATE Proto Board with a MicroPython program which plays short audio samples – Instructables.

Getting MicroPython working on the Espressif ESP32-S3

Getting MicroPython working on the Espressif ESP32-S3 – Twitter.

QuecPython is Quectel’s port of MicroPython for cellular modules

QuecPython is Quectel’s port of MicroPython for cellular modules – Adafruit Blog.

MIT CSAIL

This MIT CS class teaches you things that all the other classes don’t teach you, like…

  • Shell tools and scripting
  • Vim
  • Data wrangling
  • Command-line environment
  • Version control

Watch all 11 lectures for free – YouTube via Twitter.

Conventional Commits

Conventional Commits – a specification for adding human and machine readable meaning to commit messages using GitHub Actions – Conventional Commits and GitHub.

Zippy

Zippy is a treaded robot using an L298N H-bridge motor driver to operate 12 V high-torque metal gear motors, powered by an 11.4 V lithium polymer battery. It based around a Raspberry Pi Zero W programmed in Python – The MagPi.

Top 10 Python libraries for Robotics

Top 10 Python libraries for Robotics – Twitter.

Docker Best Practices for Python Developers

Docker Best Practices for Python Developers – testdriven.io.

Why you can’t switch to Python 3.10 just yet

Why you can’t switch to Python 3.10 just yet – Python Speed.

Microsoft Python Discord

The Microsoft Python Discord Server – Discord via Twitter.

A viable solution for Python concurrency – lwn.net and news.ycombinator.com.

PyDev of the Week: Talley Lambert on Mouse vs Python

CircuitPython Weekly Meeting for October 18, 2021 (notes) on YouTube

#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Python #1 on the TIOBE Index.

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 was one boards added:

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

Adafruit EyeLights LED Glasses and Driver from Kattni and Phil Burgess

Contribute to the Adafruit Learning System with Git and GitHub from Anne Barela

Capturing Camera Images with CircuitPython from Jeff Epler

OSHWA Project Display With Adafruit MagTag from Dylan Herrada

Pico Four Keypad from John Park

CircuitPython Project Bundle

BundleFly

When you get to the CircuitPython code section of an Adafruit Learn Guide, sometimes things can get a bit complicated. You not only have the code you need to upload to your device, but you likely also need to add some libraries that the code requires to run. This involved downloading all the libraries, digging through to find the ones you need, and copying them to your device. That was only the beginning on some projects, as those that include images and/or sound files required further downloading and copying of files. But, not anymore!

Now, with Project Bundles, you can download all the necessary code, libraries and, if needed, asset files with one click! We automatically check which libraries are required for the project and bundle them up for you. No more digging through a huge list of libraries to find the ones you need, or fiddling with looking for other files or dependencies. Download the Project Bundle, copy the contents to your device, and your code will simply work. We wanted to make this the easiest way to get a project working, regardless of whether you’re a beginner or an expert. We’ll also be adding this feature to popular IDEs as an add-on. Try it out with any Circuit Python guide on the Adafruit Learning System. Just look for the ‘Download Project Bundle’ button on the code page.

To download and use a Project Bundle:

In the Learning System – above any embedded code in a guide in the Adafruit Learn System, you’ll find a Download Project Bundle button.

Project Bundle download button

Click the button to download the Project Bundle zip.

Project Bundle zip downloaded

Open the Project Bundle zip to find the example code, all necessary libraries, and, if available, any images, sounds, etc.

Project Bundle unzipped

Simply copy all the files over to your CIRCUITPY drive, and you’re ready to go!

If you run into any problems or bugs, or would like to submit feedback, please file an issue on the Adafruit Learning System Guides GitHub repo.

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 channel 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 337!

New Libraries!

Here’s this week’s new CircuitPython libraries:

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 have gotten boot keyboard support to work in CircuitPython. It’s necessary to turn off most or all of the other USB devices to ensure that HID is the first device interface listed. That matches the expectations of the BIOS and similar software. After some more testing on a Mac, I’ll turn this into a PR.

My attempts at simplifying the Windows 7/8.1 drivers failed. Ideally, I’d like anything identifying as a CDC serial device to use the USB serial driver. That is what is built in to Windows 10. But as a third-party driver provider in Windows 7/8.1, I am not permitted to provide a “class driver”, that is, a driver that matches all devices of a particular class. So instead I will automate the current manual process of adding boards to the Windows drivers.

Jeff

I’ve continued working on support for the OV5640 camera. After a few enhancements, refresh rate of the camera preview to the Kaluga’s LCD display is over 15FPS, up from less than 2 a week ago.

Kattni

This week saw the publishing of the Adafruit EyeLights LED Glasses and Driver guide, which was a collaboration between me and our very own Dragon, Phil B. This guide has everything you need to get started with your EyeLights Driver and LED Glasses panel including detailed pinouts, CircuitPython and Arduino setup instructions for the driver, and a bunch of starter projects for the LED glasses. When you get your new LED Glasses and Driver, check out this guide!

Next up is the guide for the ATtiny8x7 breakout with seesaw and STEMMA QT. This guide will have a number of examples for seesaw in both CircuitPython and Arduino, as well as look at the seesaw API. If you picked up one of these nifty little boards, keep an eye out for this guide!

Melissa

Melissa

This past week I have been making use of the new functionality I added to the JavaScript BLE File Transfer library. Since the files are communicated through Web Bluetooth, I was not able to make use of any standard file UI elements and needed to create a new one from scratch. I took inspiration from some existing ones, but also opted for a simpler interface so it would be faster to develop. Right now I’m only working on the basic functionality of choosing files and may go back later and add functions such as creating, deleting, and renaming files and folders to make file management possible without a computer.

At this point, I have basic file navigation working nicely. I have the file dialog displaying as a modal and I’m making use of font awesome for the icons and showing different icons based on file type. You can also navigate into subfolders and back up.

Scott

This week has been more plugging away at TinyUSB on the Raspberry Pi. I made good progress getting interrupts to work but then hit a wall getting USB itself going. I haven’t been able to find clear examples of using the USB peripheral in device mode which has made it difficult to determine what I need to change. So, if you know anything about the Broadcom chips and the DWC USB core please reach out to me.

In the meantime, I’ve switched gears to getting CircuitPython going over UART. Hopefully it’ll be in a good state once USB gets going and it’ll be fast to put the two together.

Upcoming events!

PyCon Sweden

PyCon Sweden 2021 will be held on 21-22 October, online for free – more.

PyCon Chile

PyCon Chile is coming November 5, 6 and 7th online – one day of workshops and Sprints, two days of talks! – more.

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 Discord or on Twitter with hashtag #CircuitPython.

Latest releases

CircuitPython’s stable release is 7.0.0. New to CircuitPython? Start with our Welcome to CircuitPython Guide.

20211015 is the latest CircuitPython library bundle.

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

3.10.0 is the latest Python release. The latest pre-release version is 3.11.0a1.

2.625 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

Enrollment Director – Bluestamp Engineering – Adafruit Jobs Board.

31,364 thanks!

31,364 THANKS

Adafruit Discord

The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 31,364 humans, thank you! Adafruit believes Discord offers a unique way for CircuitPython folks to connect. Join today at https://adafru.it/discord.

ICYMI – In case you missed it

ICYMI

The wonderful world of Python on hardware! This is our Python video-newsletter-podcast! The news comes from the Python community, Discord, Adafruit communities and more and is reviewed on ASK an ENGINEER Wednesdays. The complete Python on Hardware weekly videocast playlist is here.

This video podcast is on iTunes, YouTube, IGTV (Instagram TV), and XML.

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.

And lastly, we are working up a one-spot destination for all things podcast-able here – podcasts.adafruit.com

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 the leading manufacturer in STEAM electronics, Adafruit Industries, to create a coding course, “Learn Hardware Programming with CircuitPython”. The course is now available in the Codecademy catalog.

Python is a highly versatile, easy to learn programming language that a wide range of people, from visual effects artists in Hollywood to mission control at NASA, use to quickly solve problems. But you don’t need to be a rocket scientist to accomplish amazing things with it. This new course introduces programmers to Python by way of a microcontroller — CircuitPython — which is a Python-based programming language optimized for use on hardware.

CircuitPython’s hardware-ready design makes it easier than ever to program a variety of single-board computers, and this course gets you from no experience to working prototype faster than ever before. Codecademy’s interactive learning environment, combined with Adafruit’s highly rated Circuit Playground Express, present aspiring hardware hackers with a never-before-seen opportunity to learn hardware programming seamlessly online.

Whether for those who are new to programming, or for those who want to expand their skill set to include physical computing, this course will have students getting familiar with Python and creating incredible projects along the way. By the end, students will have built their own bike lights, drum machine, and even a moisture detector that can tell when it’s time to water a plant.

Visit Codecademy to access the Learn Hardware Programming with CircuitPython course and Adafruit to purchase a Circuit Playground Express.

Codecademy has helped more than 45 million people around the world upgrade their careers with technology skills. The company’s online interactive learning platform is widely recognized for providing an accessible, flexible, and engaging experience for beginners and experienced programmers alike. Codecademy has raised a total of $43 million from investors including Union Square Ventures, Kleiner Perkins, Index Ventures, Thrive Capital, Naspers, Yuri Milner and Richard Branson, most recently raising its $30 million Series C in July 2016.

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 our Discord or post to the forum for any further questions.