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

View this email in your browser.

Hi everyone! It’s the latest Python for Microcontrollers newsletter, brought you by the community! Find us on Discord, Twitter, and for past newsletters – view them all here. Let’s get started!

CircuitPython snakes its way to the Teensy 4.0


CircuitPython is now available for Paul Stoffregen’s Teensy 4.0. This port of CircuitPython is super-early, not optimized, cutting-edge… there is a ready-to-use HEX file to experiment with. Open it with Teensy Loader and program onto your Teensy 4.0, for CircuitPython at 600 MHz.


Join the discussion on the Teensy forums, on our Discord, and please file any and all issues here! – GitHub.

In 20 minutes, actually less than that, we were able to make an IoTeensy project. Scott and Artur have done an amazing job bringing CircuitPython to the NXP iMX RT1062. This chip holds a lot of promise! We threw together a quick IoT project to test I2C and SPI – the OLED is an I2C device, and the AirLift FeatherWing provides WiFi over SPI. This demo connects to our AP, then queries the Adafruit quote service to get an inspirational quote every 3 seconds. The JSON is parsed, split, and displayed on the OLED by scrolling. This was really fast to put together, only about 20 minutes and 100 lines of code – YouTube.

CircuitPython i.MX Feather progress

Some updated renderings – Twitter. The board also was also taken out for a nice photoshoot! – Twitter.

And hackster.io has some coverage on “Arturo182’s NXP i.MX RT10xx Port Into CircuitPython Codebase”.

Python slithers its way to Arduino


Looks like Arduino will be supporting Python in some way very soon, maybe, on their new Portenta H7 board?! In the promo video it lists “MicroPython” and on the overview page “MicroPython / JavaScript via an interpreter”. The board is available for pre-order for $99.


The Portenta H7 is a powerful STM32H747XI dual Cortex®-M7+M4 32bit chip that runs pretty fast – SDRAM was added, and flash storage. If you’re going to want to get TinyUSB running on this thing, we have support for the STM32 H7 series. The board is Feather-like, and has a STEMMA/QWIIC-like connector, that’s good to see that direction as that is where the market went.


The Portenta kinda reminds us of the Pyboard D-series with STM32F767 and WiFi/BT from MicroPython. It has similar connectors on the bottom, a fast chip, WiFi/BT, etc.

Alasdair Allan, over on hackster.io, has the best coverage so far – go check out the full article.

CircuitPython 2020, where do we want to go together?


#circuitpython2020 is our annual reflection on the state of CircuitPython. For the last couple weeks folks have sent in some wonderful stories, ideas, suggestions and more. See the kick-off post for all of the details.

Here are all the posts that came in, thank you!

News from around the web!


Joey is working on the CircuitPython version of the OpenBook – Twitter and GitHub.

Baby Yoda

Baby Yoda glows with Circuit Playground Express – Twitter.

From YouTube“If it wasn’t for CircuitPython I would of never got in to coding and would still be lost in this great and fun world of electronics with coding elements. Keep making this and everything you do great thanks again.”


The Undercroft is having a “Python & Pyportal” event on 1/29/20 at 6:30pm, BYOP, bring your own portal! – Twitter.



Through-hole Feathers from the past that Joey made – Twitter and GitHub.


Hippo is a FeatherWing, Twitter and Tindie.

Doctor Feather

Doctor Who “psychic paper” powered by a Feather – Twitter.

Ada Who

Expect some Ada overlap with Doctor Who all this year! – Twitter.


NeoPixel_HD FeatherWing: Add-On Wing for Adafruit’s Feather boards – With a maximized number of NeoPixels: A 22×9 RGB LED Matrix – Twitter and hackaday.io


Hacked / modded iPad keyboard with a Feather – Twitter.

No Step

CircuitPython Game – No Step on Snek. Help Blinka escape a variety of feet in this Frogger clone developed on the Adafruit Edge Badge – YouTube and hackaday.io

Save the world

Save the World with Code: 20 Fun Projects for All Ages Using Raspberry Pi, micro:bit, and Circuit Playground Express by Lorraine Underwood – Amazon.

CPX Scratch

Scratch 3 extension for the Circuit Playground Express. You can view the available extension blocks here – Scratch 3 OneGPIO Extensions.


GEMMA based 3D printed ring prototype – Twitter.

MagicLight BLE Bulb

MagicLight BLE Bulb Circuit Playground Bluefruit Control – YouTube.

Programmable USB Hub

Programmable USB Hub by Capable Robot Components is a USB hub with per-port power and data disconnects + dev board + I2C, GPIO, and SPI bridges, and it works with CircuitPython! Here is the latest update – Crowd Supply.


Playing with Adafruit Circuit Playground Bluefruit – robotsandphysicalcomputing and YouTube.


Adafruit PyPortal from Twitter to weather – robotsandphysicalcomputing.


Just in time for #OrcaCon! Kaltazar’s electronic communication badge, made with Circuit Playground Bluefruit, TFT Gizmo, and a 3D printed lanyard clip – Twitter.

Did you know that PyCascades 2020 in Portland is just a month away? Nina made a PyPortal countdown! – Twitter and GitHub.

Here’s a CircuitPython Driver for the SDS011 Pollution Sensor – GitHub.

PyBadge Serial

pybadge-as-serial-plotter – Twitter and GitHub.

Sister Night

We’ve been posting a bunch of “top 10” lists of 2019, and the decade on Adafruit for the new year. The number one download from Thingiverse, one of the places we host our 3D files, was the Watchmen NeoPixel Goggles! Powered by CircuitPython, NOTHING EVER ENDS – Adafruit.


Also in the top 10 for 2019 in video, the Adafruit PyGamer! – Adafruit.


For the Top Ten New Products of 2019, as expected, the CircuitPython based products topped the list with Circuit Playground Bluefruit – Bluetooth Low Energy coming in number one – Adafruit.

Tooling Tuesday

Tooling Tuesday: Tio – bigl.es. Works with CircuitPython too!


From Discord

“Ease of getting up and running with CircuitPython left everyone awestruck.”

pymata-cpx and FirmataCPx: Remotely Monitor And Control. An Adafruit Circuit Playground Express using Python.


The latest ESP 32 datasheet has been posted – ESPRESSIF.


The first ESP32 non-MicroPython File manager A-Explorer – M5Stack Community.


$2 Wemos W600-PICO WiFi IoT Board Ships with MicroPython Firmware – CNX.


Rafael made a small 3D print model for the Huzzah ESP8266 to keep the jumper wires in a row – thingiverse.com


OpenCTD Project switches to Feather for its oceanographic data loggers – hackster.io

USB Host

Add USB Support to any project using Bitluni’s cheap USB host microcontroller – YouTube.


Rocking out the NeoPixel suit at the Media Art Festival in Otaru, Japan – Twitter.


NeoPixel-based “Madonna” inspired bra – Twitter.

CES2020: Primordial Soup of Innovation – Learning by Shipping.

Printing on PCBs

Full-color printing on flexible circuit boards – Twitter.

11 top open-source API testing tools: What your team needs to know – TechBeacon.


Ferus Festival: Sister Sylvester “The Eagle and the Tortoise” – Adafruit.

Qt for MCUs 1.0, runs on the NXP i.MX RT1050 and STM32F769i – Qt Blog.


This project aims to bring Swift to the world of embedded systems and IoT. It enables using Swift on microcontrollers with no operating system and with minimal resources available – GitHub.


Here’s a Playdate December 2019 update – play.date

Zephyr Tutorial: Bluetooth Low Energy Development – novelbits.io

Real Python

Python args and kwargs: Demystified – Real Python.

30 Python Best Practices, Tips, And Tricks – Towards Data Science.

Slither Into Python

Slither Into Python: An Introduction to Python for Beginners – free to read online.

Considering Python’s Target Audience – 2017.

20 best Python questions at stackoverflow in 2019 – Python Weekly reports.


Embed any image into a prime number – primify.


Creator of Python Programming Language, Guido van Rossum, Oxford Union – YouTube.

Top 5 GUI

5 Python GUI Frameworks for Developers in 2020 – morioh.

Build Third Party Applications APIs with NoCode – NoCodeAPI.

LE Audio

LE Audio: The next generation of Bluetooth audio – bluetooth.com and 4 features developers can expect from LE Audio.

Bluetooth LE Audio could be the biggest news out of CES 2020 – Techradar.

Nordic announces its entry into the Bluetooth audio market with a platform supporting the forthcoming LE Audio specification for high-quality wireless audio – Nordic.

Roadmap for Makerspaces – makerbit.com

How to get kids to love to write – WaPo.

#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? What do you want from CircuitPython in 2020?.

CircuitPython Weekly for January 13th, 2020 on YouTube.

PyDev of the Week: Tyler Reddy on Mouse vs Python

Coming soon


AR (Augmented reality puppet with Circuit Playground Bluefruit – Adafruit.

Testing out the TensorFlow micro speech demo on Adafruit CLUE – Adafruit.

micro:bit + Feather = match made in heaven – Adafruit.

On-device Magnetometer Calibration with CLUE – Adafruit.

New Learn Guides!

Adafruit MCP4728 I2C Quad DAC from Bryan Siepert

PiTFT Python + Pillow Animated Gif Player from Melissa LeBlanc-Williams

PyPortal MQTT Sensor Node/Control Pad for Home Assistant from Richard Albritton

Updated Guides – Now With More Python!

You can use CircuitPython libraries on Raspberry Pi! We’re updating all of our CircuitPython guides to show how to wire up sensors to your Raspberry Pi, and load the necessary CircuitPython libraries to get going using them with Python. We’ll be including the updates here so you can easily keep track of which sensors are ready to go. Check it out!

Keep checking back for more updated guides!

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 drivers, download the Adafruit CircuitPython Library 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! 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. Feel free to contact Kattni (@kattni) with any questions.

You can check out this list of all the CircuitPython libraries and drivers available.

The current number of CircuitPython libraries is 205!

New Libraries!

Here’s this week’s new CircuitPython libraries:

Updated Libraries!

Here’s this week’s updated CircuitPython libraries:

PyPI Download Stats!

We’ve written a special library called Adafruit Blinka that makes it possible to use CircuitPython Libraries on Raspberry Pi and other compatible single-board computers. Adafruit Blinka and all the CircuitPython libraries have been deployed to PyPI for super simple installation on Linux! Here are the top 10 CircuitPython libraries downloaded from PyPI in the last week, including the total downloads for those libraries:

Library Last Week Total
Adafruit-Blinka 2214 39657
Adafruit_CircuitPython_BusDevice 1113 23357
Adafruit_CircuitPython_NeoPixel 408 5188
Adafruit_CircuitPython_MCP230xx 271 9098
Adafruit_CircuitPython_Register 255 4947
Adafruit_CircuitPython_RGB_Display 234 1673
Adafruit_CircuitPython_PCA9685 156 3064
Adafruit_CircuitPython_Motor 141 3223
Adafruit_CircuitPython_ServoKit 110 2950
Adafruit_CircuitPython_MotorKit 91 1786

What’s the team up to?

What is the team doing? Let’s find out!


I’m testing the BLE bonding code. Some lower-level code needs to change because the bonding event handlers need to live past the lifetime of the CircuitPython virtual machine; Scott had to do something similar already and was helpful on this. I got tired of adjusting the volume on my computer’s speakers by mouse-clicking, and built a mash-up of the Media Dial and Rotary Encoder Learn Guide projects to send Consumer Control HID codes to my computer (volume up, down, and mute). I 3-D printed a simplification of the Medial Dial from Thingiverse, did a little code hacking, and it’s working just fine. One issue is that since it’s CircuitPython, it shows up as CIRCUITPY and as a serial device whenever it’s plugged in. Since I want to leave it plugged in, and I’m constantly debugging other CircuitPython boards, I built a special version of CircuitPython with the mass storage and serial USB devices turned off. I can’t edit on the board anymore, but I added a reset button so I can always go back to the bootloader, reload regular CircuitPython, and work on the program again.


This week I’ve been continuing the work to migrate our 200+ CircuitPython libraries to GitHub Actions. It’s a big project! The end is in sight, but there’s still a notable amount of work to go. It’s not a flashy set of features or new release but it is an important step in making such a large number of projects manageable. Along a similar vein, I also did some work to update some existing libraries to support additional similar libraries, as well as assisting on moving some Arduino libraries to Actions. True, I haven’t worked on any new boards so far this week but there are plenty in the pipeline!


Over the past week I have been picking up a lot of miscellaneous items, such as missing features in DigitalIO for seesaw I/O expander boards, a lockup that can occur when using bitmaps or audio files from SD cards together with SD accesses from other CircuitPython code, and crashes when requesting lots of bytes (or -1 byte!) from os.urandom. Yes, I literally worked on random bugs.


This week I finished up the CircuitPython Made Easy on Circuit Playground Express and Bluefruit and it is finally ready to go. If you’re looking for the simplest way to use CircuitPython with either the Circuit Playground Express or Bluefruit, check out this guide. It includes the new Bluefruit-only features as well! I spent the day going through all the open PRs on all the CircuitPython libraries. We have some very old PRs that needed attention. If you submitted a PR to any of the libraries over the last year that we missed, please check your email or GitHub for updates or possible change requests. If you have an open PR that we still need to address, please don’t hesitate to let us know via GitHub or Discord. Thank you for all your contributions! Other than that, I’m planning to finish up my CircuitPython 2020 post, and a few miscellaneous things that came out of the Circuit Playground library update; there’s an example that needs to be updated, some cleaner error handling added, as well as the README needing both an update and an explanation of how the library works. Once that’s done, it’ll be on to something new!


This past week I finished up the Animated Gif Player and its associated learn guide. You can check out the learn guide. Since I thought it would be fun, I created an animated gif of the player playing an animated Gif. I also wrote up an epic Blog post for my thoughts on CircuitPython 2020 as well as my story about how I started at Adafruit. You can check out the Blog post. I have been also picking up on working on the Blinka project, the CircuitPython compatibility layer for Raspberry Pi and other Single Board Computers. There has been some extra activity from community member contributions and that has been excellent to see.


On the first of 2020 we kicked off the #circuitpython2020 planning. I’ve been posting all of the awesome responses on the Adafruit Blog. Our end date is January 13th’s CircuitPython Community meeting (join Discord for details). I’ve also been wrapping up BLE work on packet aware protocols like the Apple Media Service and BLE MIDI. We swapped the CircuitPython HID library to take in a list of devices as well so that BLE HID devices can be used in place of USB HID devices. I’ve been meaning to write my own #circuitpython2020 post and talk about the need for focus, buuuuuuuttt I got distracted by @arturo182’s PR for iMX RT support in CircuitPython. It is very exciting, the chips are faster and some have more RAM (1MB!). In my distraction, I’ve added support for more dev boards including the Teensy 4!

Upcoming events!


Scott is speaking at PyCascades about Python’s Next Decade and Us. It is on February 8th and 9th, 2020.

“PyCascades is a two-day, single-track Python conference. We previously hosted PyCascades in Vancouver and Seattle. For our third iteration in 2020 we’ll be in Portland, Oregon USA. PyCascades is organized by members of the Python communities in Vancouver, Seattle, and Portland. We aim to bring together Python users and developers from both the Pacific Northwest and around the world.”


PyLadies Melbourne Monthly Meetup – MicroPython beginner workshop January 19, Melbourne, Australia. Matt, Oliver and Rose return for the second MicroPython beginner workshop and the first PyLadies Melbourne event for 2020. No experience necessary – Get started with hardware hacking thanks to MicroPython! – Meetup.

Pycon 2020

April 15-23, 2020, Pittsburgh, Pennsylvania, USA – The PyCon 2020 conference, which will take place in Pittsburgh, is the largest annual gathering for the community using and developing the open-source Python programming language. It is produced and underwritten by the Python Software Foundation, the 501(c)(3) nonprofit organization dedicated to advancing and promoting Python. Through PyCon, the PSF advances its mission of growing the international community of Python programmers – PyCon 2020.

Latest releases

CircuitPython’s stable release is 4.1.2 and its unstable release is 5.0.0 beta.3. New to CircuitPython? Start with our Welcome to CircuitPython Guide.

20200111 is the latest CircuitPython library bundle.

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

3.8.1 is the latest Python release. The latest pre-release version is 3.9.0a2.

1,560 Stars Like CircuitPython? Star it on GitHub!

Call for help – CircuitPython messaging to other languages!

Hello world

We recently posted on the Adafruit blog about bringing CircuitPython messaging to other languages, one of the exciting features of CircuitPython 4.x is translated control and error messages. Native language messages will help non-native English speakers understand what is happening in CircuitPython even though the Python keywords and APIs will still be in English. If you would like to help, please post to the main issue on GitHub and join us on Discord.

We made this graphic with translated text, we could use your help with that to make sure we got the text right, please check out the text in the image – if there is anything we did not get correct, please let us know. Dan sent me this handy site too.

jobs.adafruit.com – Find a dream job, find great candidates!


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, Microcenter, Raspberry Pi and more.

15,839 thanks!


Adafruit Discord

The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 15,839 humans, thank you! Join today! https://adafru.it/discord

ICYMI – In case you missed it


The wonderful world of Python on hardware! This is our first video-newsletter-podcast that we’ve started! The news comes from the Python community, Discord, Adafruit communities and more. It’s part of the weekly newsletter, then we have a segment on ASK an ENGINEER and this is the video slice from that! 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.


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