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, 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. Let’s get started!

Adafruit Learning System Reaches 2,500 Guides

Adafruit Learning System has 2,500 guides

The Adafruit Learning System has exceeded the 2,500 guide mark! Thanks to the entire team at Adafruit who builds and makes learn.adafruit.com one of the best resources online for learning. Thanks to all the authors and contributors for putting their smarts out there for so many to build their dreams with. Thanks to the teams and friends that take photos, shoot video, write code, and helped make something so special for so many.

Most of all, Adafruit thanks the folks who read, learn, and share learn.adafruit.com and use it to help others – Adafruit Blog.

The Adafruit IoT Monthly Newsletter is out

Adafruit IoT Monthly

The Adafruit IoT Monthly Newsletter is out, full of internet of things goodness – Adafruit Blog.

Subscribe, spam free, at https://www.adafruitdaily.com/

GitHub Copilot – an AI Coding Assistant Announced

GitHub Copilot

GitHub Copilot – get suggestions for whole lines of code or entire functions right inside an editor. Trained on billions of lines of public code, Copilot “puts the knowledge you need at your fingertips, saving you time and helping you stay focused” – GitHub and Twitter.

The HP Prime G2 Calculator Supports Two Types of Python

HP Prime G2 Calculator

HP Prime G2 Calculator

Twitter user @hangyodon1123 notes the HP Prime G2 calculator (apparently a Japanese version) supports two flavors of Python. The first is t_cas01 which features Python syntax with CAS (computer algebra system) and the second being t_py01, MicroPython – Twitter.

Hardware specifications on the HP Prime G2 – cemetech.net.

From beta release notes, April 2021 – hpcalc.org (zip):

Prime now includes a Python interpreter. This interprets Python scripts using the MicroPython interpreter. However, due to the way MicroPython manages memory, the Python interpreter is started with a fixed heap and stack of respectively 1MB and 40KB. Replacing the first parameter of the Python call to a list containing 2 or 3 items allows to change this.

Some additional documentation on Python for the Prime G2 is on a French site – tiplanet.org.

See Examples of Python API Usage in New VS Code Insider’s Release

IntelliCode Insiders release for VS

A new plug-in for Visual Studio Python editing: a single click Python API example usages – Twitter and Visual Studio Marketplace.

OSH Park Adds 6 Layer PCB Service

OSH Park 6 Layer PCB Service

OSH Park, the United States PCB board house, announced Friday they are now offering their “Perfect Purple PCBs” in 6 layers – OSH Park and Twitter.

CircuitPython Deep Dive Stream with Scott Shawcroft

Deep Dive with Scott

This week, Scott streams his work on WebBluetooth.

You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.

News from around the web!

John Park’s CircuitPython Parsec

John Park’s CircuitPython Parsec: Wave Playback – Adafruit Blog and Twitter.

Macropad RP2040

A MacroPad RP2040 with multiple keymaps in CircuitPython – GitHub.

Adding Serial MIDI

Adding Serial MIDI to a toy keyboard with a Raspberry Pi Pico and CircuitPython – DIY Electronics.

Keyboard FeatherWing

The Keyboard FeatherWing is an open source QWERTY Keyboard + 2.6” LCD, accepting a microcontroller board in the Feather format. Revision 2 of the device changes the touch driver to a TSC2004 and adds an Ambient Light Sensor. Programmable in CircuitPython, Arduino, and Rust – Tindie.

The "SideKick" Liquid Handler

SideKick is a <$600 uL-precision liquid dispensing robot designed to democratize lab automation for undergraduate teaching & research, using Raspberry Pi Pico and MicroPython – Twitter Thread and YouTube.

Python Panel

A Language Creators’ Conversation: Guido van Rossum, James Gosling, Anders Hejlsberg & Larry Wall, hosted by Carol Willing, organized by CS4ALL for their fundraiser in Seattle, WA. April 2, 2019 – YouTube.

PSF FAQ

The Python Software Foundation: membership frequently asked questions (FAQ) – PSF and Twitter.

Pico AirLift NeoKeyboard

Pico AirLift NeoKeyboard – Adafruit Blog and GitHub.

74HC165

Adding Digital I/O To Your CircuitPython Compatible Board: The 74HC165 – Woolsey Workshop.

CircuitPython on the Raspberry Pi Pico

Figuring out CircuitPython on the Raspberry Pi Pico. Still learning how the PIO stuff works but I’ve got it displaying images on a screen and pretending to be a USB gamepad. – Twitter.

Pico Mouse

Mouse functionality added to a Pico HID keyboard using CircuitPython – Twitter (Japanese).

Python Best Practices

Python Best Practices for a New Project in 2021 – Alex Mitelman.

Controlling an LED from a Smartphone Using Wi-Fi

Controlling an LED from a Smartphone Using Wi-Fi – elector Magazine.

Expanding the GPIO Capability of the ESP8266

MicroPython: Expanding the GPIO Capability of the ESP8266 with a PCF8574 – profetolocka.com.ar (Spanish).

MicroPython ESP32 Synth Module

MicroPython ESP32 Synth Module: Receiving Gates – Medium.

MicroPython LAN

@xorbit1 writes “Despite what it says on the download page, the new MicroPython 1.16 does support LAN! It also has support for the RTL8201 PHY on the new upcoming revision of the wESP32. Not sure what the error is about, but as you can see it does work!” – Twitter.

LED Matrix

Driving an LED matrix display with a Raspberry Pi Pico and MicroPython – Twitter.

Using The Things Network

Using The Things Network with ATOM Lite and LoRaWAN Unit, learn how to send messages to The Things Network with MicroPython – hackster.io.

Pico Interrupts

Processing Raspberry Pi Pico switch input via interrupt in MicroPython – note.com (Japanese).

ZeroBug

ZeroBug – 3D-Printed Micro Servo Hexapod powered by a Raspberry Pi (with Python) and STM32 – hackster.io.

ohd – Over Head Door Garage Door Monitor using Raspberry Pi and Python – GitHub.

Mute Button

On a Raspberry Pi – “Wrote a prototype Python app that interacts with a button – press the button to mute or unmute my receiver in Zone 2 over the network in another room. Now to program volume control” – Twitter.

AY-3-8910 Speech Synthesis

AY-3-8910 Speech Synthesis – a Python library to control a General Instrument AY-3-8910 sound generator and make it speak – hackster.io.

Bitcoin

Create, digitally sign, and broadcast a Bitcoin transaction in pure Python, from scratch, and with zero dependencies – GitHub.io.

__all__

Automatically manage the __all__ variable in Python modules – GitHub.

Python ML Programs

Machine Learning Algorithms with Python – The Clever Programmer.

Python Inner Functions

Python Inner Functions – Real Python.

Protocol Types in Python 3.8

Protocol Types in Python 3.8: a quick introduction to the new Protocol class in Python 3.8 and how it enables structural typing – auth0.

Commit Often, Perfect Later, Publish Once: Git Best Practices – GitHub.io.

#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Git Cheat Sheet.

Coming soon

New Seesaw

A new seesaw board from Adafruit using the modern ATtiny8x7 chip – Twitter.

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 development.

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

Kitty Toe Bean Keypad with Color TFT from Noe and Pedro

Adafruit NeoKey 1×4 QT I2C Breakout from Kattni

Keypad and Matrix Scanning in CircuitPython from Dan Halbert

Capturing Camera Images with CircuitPython from Jeff Epler

CircuitPython Rotary Trinkey Brightness Crank from Tim C

Adafruit MacroPad RP2040 from Kattni

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

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 wrote a Learn Guide for the new keypad module.

I’ll be making the CircuitPython 7.0.0-alpha.4 release shortly.

I’m back to looking at RP2040 audio problems, which are fairly mysterious at first glance. Both I2S and PWM audio are affected, in different ways.

Jeff

It’s felt like a long path, but last week the guide for Capturing Camera Images with CircuitPython went live on the Learn system. This follows several weeks of both implementing the ParallelImageCapture class in the CircuitPython core as well as libraries for configuring the OV7670 and OV2640 cameras.

Like most of the fun stuff we’ve been talking about lately this is going to be available in CircuitPython 7! But you can grab the latest builds and try it out today.

Kattni

This week I published the MacroPad RP2040 guide. It has plenty to get you started with your new MacroPad including pinouts, CircuitPython and Arduino examples, and downloads resources. If you managed to snag a MacroPad, and you’re wondering where to begin, this guide is for you.

I also started work on a MacroPad CircuitPython library that will make using the MacroPad even simpler. Keep an eye out for that!

Melissa

This past week, I worked on an NVS Partition Generator that will allow us to take user supplied data and generate a partition for the ESP32 so that WipperSnapper will be able to work on the ESP32 chips, which don’t have native USB.

Once I got that working, I realized there were some issues with the WebSerial ESPTool with the ESP32 and will be working on some stability improvements.

Scott

BLE file transfer code has been merged in. Now the challenge is to provide ways to use it. I’ve gotten sucked into using web Bluetooth to communicate with a CP device from Chrome. I’m making pretty good progress and hope to provide a FileTransferClient Javascript library that folks can use. I also hope to use this in a web editor for CircuitPython that is somewhere on circuitpython.org.

I’ve also got pending BLE serial code that is nearly ready for pull request review. I’ll polish it up soon and get it merged in.

Lots of good progress! Stay tuned via Show and Tell and my own Deep Dive streams.

Upcoming events!

EuroPython 2021

EuroPython, the largest conference for the Python programming language in Europe, will be held online July 26 – August 1, 2021. More information at https://ep2021.europython.eu/

PyOhio

PyOhio 2021 is a free event on July 31, 2021 – PyOhio.org via Twitter.

PyConline AU

PyConline AU will be held 10-12 September, 2021 – pyconlineau

Kiwi PyCon XI

Kiwi PyCon XI, Ōtautahi Christchurch, 17th, 18th, & 19th of September 2021 and CFP ends July 16th – python.nz.

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 6.3.0 and its unstable release is 7.0.0 Alpha 3. New to CircuitPython? Start with our Welcome to CircuitPython Guide.

20210705 is the latest CircuitPython library bundle.

1.16 is the latest MicroPython release. Documentation for it is here.

3.9.6 is the latest Python release. The latest pre-release version is 3.10.0b3.

2,490 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

Research Technician – Westat – Adafruit Jobs Board.

29,779 thanks!

29,779 THANKS

Adafruit Discord

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

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.