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

Python Leads the IEEE Top Programming Languages for 2020

Python the Top IEEE Programming Language

It’s been a turbulent year since the last time IEEE Spectrum broke out the digital measuring tools to probe the relative popularity of programming languages. Yet one thing remains constant: the dominance of Python.

Our default ranking is weighted toward the interests of an IEEE member, and looking at the top entries, we see that Python has held onto its comfortable lead, with Java and C once again coming in second and third place, respectively. Arduino has seen a big jump, rising from 11th place to seventh.

One interpretation of Python’s high ranking is that its metrics are inflated by its increasing use as a teaching language: Students are simply asking and searching for the answers to the same elementary questions over and over. But Python is frequently used professionally and in high-profile realms, such as machine learning, thanks to its enormous collection of high quality, specialized libraries – IEEE.

ALICE the Robot

ALICE Robot

ALICE is a Kinect controlled FPV mini-mech powered by CircuitPython on an Adafruit Feather microcontroller. The skeleton is 3D printed on a MP Mini Delta printer – Twitter.

CircuitPython Deep Dive Stream with Scott Shawcroft

Deep Dive with Scott

This week, Scott streams his work on ESP32-S2 hardware. He gives a recap of the computer setup changes and then validates pin selections on the Saola Feather adapter.

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

CircuitPython Day is 9-9-2020

CircuitPython Day: 9-9-2020

Adafruit has chosen September 9, 2020 (9/9/2020) as the snakiest day of this year for CircuitPython Day! Much more to come on events and happenings to include a CircuitPython team livestream, collaboration with hardware and software folks, and highlighting all things Python and Python on Hardware. More information will be forthcoming. Ideas? Send them via email to circuitpythonday@adafruit.com.

Adafruit Update

Adafruit

Adafruit is shipping orders!

Production is up and now is the best time to get the Adafruit items you’ve been waiting for.

The Adafruit Discord Server Surpasses 23,000 Users!

23,114 THANKS

Adafruit Discord

The Adafruit Discord community, where we do all our CircuitPython development in the open, surpassed 23,000 members Sunday, thank you! Adafruit believes Discord offers a unique way for CircuitPython folks to connect. Join today at https://adafru.it/discord.

News from around the web!

Shop Clock

A workshop clock (with a pandemic-inspired what-is-today display), ready for its debut. No internet required and ready for the zombie apocalypse. Inspired by John Park’s Metro Minimalist Clock project. Programmed in CircuitPython – Twitter.

YouTube Matrix Sign

Maker Melissa previews her YouTube views and subscribers scrolling matrix display, powered by CircuitPython, with detail planned for release next week – Twitter.

Productivity Timer

A productivity timer using either an Adafruit Circuit Playground Express or Circuit Playground Bluefruit device, programmed in CircuitPython – GitHub and YouTube.

Another Productivity Timer

Another Pomordoro-like timer device with Adafruit Feather components – Twitter.

First time using CircuitPython and it’s awesome!

CircuitPython-powered Lego Birch Books

Lighting up a Lego Birch Books set with CircuitPython – Blog.

UF2 and CircuitPython on Serpano

Serpano, a CPY Breadboard Power Supply – Assembly and Bring-Up – Twitter and YouTube.

PyOhio

All the talks from last week’s PyOhio online conference are available in one playlist – YouTube.

Control Electronics from a Browser

Control Electronics from a Browser Using MicroPython in Jupyter Notebooks – Wonder How To, YouTube and Twitter.

Buttonboard

The CampZone2020 badge by @HackZoneNL is a buttonboard / obs remote / soundboard / streaming radio / rubber ducky. MicroPython enabled – Twitter.

I2C Bus with a Nodemcu and MicroPython

The I2C Bus with a Nodemcu and MicroPython – Micro Note and YouTube.

MicroPython’s time handling functions via utime have received some updates – MicroPython.org and Twitter.

10 Standout GitHub Profile READMEs

10 Standout GitHub Profile READMEs (a new feature quietly launched a few weeks ago) – dev.to.

Python's Built-in time Module

Mastering Python’s Built-in time Module – Real Python.

Manipulate Filesystem Paths

How To Use the pathlib Module to Manipulate Filesystem Paths in Python 3 – Digital Ocean.

Setting Up Python for Machine Learning on Windows

Setting Up Python for Machine Learning on Windows – Real Python.

Dealing with legacy code

Dealing with legacy code – Women Who Code.

Job as a Python developer

How to get a job as a Python developer in 2020 – YouTube and Twitter.

How does % work with decimals, for instance why is 10 % 2.2 not equal to 1.2 – learnpython subreddit.

The Learning Python Roadmap (below) – Twitter.

Python Learning Roadmap

#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? EuroPython 2020 Schedule.

PyDev of the week: Carlton Gibson on Mouse vs Python

CircuitPython Weekly Meeting for July 27, 2020 – (notes) YouTube

New Boards Supported by CircuitPython

The number of supported microcontrollers and Single Board Computers (SBC) grows every month. This section outlines which boards have been included in CircuitPython or added to CircuitPython.org.

There were no new boards added this week but some are in process.

Looking for adding a new board to CircuitPython? It’s highly encouraged! Adafruit has four guides to help you do so:

New Learn Guides!

New Adafruit Learning System Guides

Light-Up Reactive Ukulele from Erin St. Blaine

Adabox 015 from John Park

Bluetooth Restroom Key Proximity Tracker from rdagger

CircuitPython Day 2020 Countdown Clock from Anne Barela

Raspberry Pi E-Ink Event Calendar using Python from Melissa LeBlanc-Williams

Adafruit PMSA003I Air Quality Breakout from Kattni

Adafruit BH1750 Ambient Light Sensor from Bryan Siepert

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

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:

Keep checking back for updated download stats coming soon!

What’s the team up to this week?

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

Bryan

The AS7341 is done, at least for now; The CircuitPython library has been released and is available in the bundle and via pip, and the Arduino library should be added to the library manager soon. It has been an interesting sensor to work on, and I’m interested to see what people do with it.

One thing I’ve been pondering lately is the value of documentation. When a device is poorly documented or there are large pieces of documentation just missing, it’s not unlike losing your keys: You know you what you’re looking for, but you just can’t find it. Good documentation on the other hand removes the friction that comes when just trying to find the thing you know you need to know. Stellar documentation (see Texas Instruments and Analog Devices) goes a step further and calls your attention to information that you didn’t know you needed.

Bad documentation is like a bad community: it’s just not enjoyable to work with, and makes one turn to more pleasant alternatives.

Dan

I’m continuing a re-implementation of CircuitPython _bleio that supports the HCI (Host Controller Interface) Bluetooth adapter protocol. HCI is a serial protocol available on ESP32, used on our AirLift boards. I’m now working on the ATT (attribute) protocol, which exchanges information about what kind of data is available from a peer device, and sends the data back and forth. Sadly, this protocol is not implemented directly in the high-level HCI protocol, so I must provide it. I’m converting the ArduinoBLE library ATT code from C++ to C and using its basic structure.

Jeff

Jeff

Jeff

Recently I dabbled in the Libraries side of CircuitPython. You can now fine tune the frequency of the crystal into DS3231 to make it keep even more accurate time. These chips were quite accurate to begin with, gaining or losing just a few seconds per month at most, but it’s good to know that with care and the right test equipment you can improve them to be accurate to within just a few seconds per year.

Kattni

This week, I published the PMSA300I air quality sensor breakout guide. The PMSA300I is similar to the PM2.5, but instead of UART, it uses I2C! This breakout comes with STEMMA QT connectors, so it’s super simple to get started, with no soldering necessary. The guide covers all the details about the sensor, including pinouts and resource downloads. There are wiring diagrams and usage examples for both Arduino and CircuitPython. The CircuitPython section uses the fancy new Adafruit CircuitPython PM25 library, which makes getting particle data super simple. If you’re looking to get started with your PMSA300I, check out this guide.

I also updated the PM2.5 guide to use the fancy new PM25 library – both sensors use the same code, with a simple change in set up.

I’ve been helping @fede2 with translating Adafruit Learn guides. This week, in preparation for translating the Circuit Playground Express guide, Àlvaro published Makecode para la Circuit Playground Express, and he’s currently working on the CircuitPython Made Easy on CPX and Bluefruit guide which is linked to from the CPX guide. Àlvaro has been putting so much work into translations – it’s amazing to see and we really appreciate it!

Finally, I’ve been doing plenty in Fritzing land. I put together wiring diagrams for a couple of guides, and have been creating Fritzing objects for some new and it’s-not-out-yet-don’t-ask products. If you want a sneak peek at upcoming products, check out the Adafruit Fritzing library for recent additions!

Lucian

Lucian

This week, I worked on the implementation of PMWOut on the ESP32-S2, enabling PWM frequency and duty cycle modulation for LEDs and servo motors. It’s been a breath of fresh air working with the ESP32, after coming from STM32 and NXP. Both of the latter companies have powerful chips, the also have very technical and sometimes convoluted documentation – Espressif clearly puts a lot of care into their API docs and examples to make them readable, and it shows. It’s always nice to see hardware producers take extra steps to make high quality documentation and raise the standard for the rest of the industry.

I also worked on reviews for the STM32 F1 implementation, and the upcoming STM32 SDIO module, alongside preliminary work for the rest of ESP32-S2 PulseIO. The ESP’s interface has been inspiring me to think of ways to use it in my own projects – though it’s regrettable that the Bluetooth was cut to make room for native USB. I’m impatient for the day that we finally get our 500MHz Wifi/Bluetooth FS USB chip for under a dollar… but my fantasies for capable computing will have to wait.

Melissa

Melissa

Melissa

This past week, I started out by looking at the Arduino ImageReader library because a user had pointed out that they were not able to get the example working on an M0 processor. It appears the result was due to an incomplete implementation on my part. So I dove in and started working on converting a similar class written for TFT displays to work on the eInk displays. As I went along, there were various states of success as it got closer to completion. Eventually, I got it drawing correctly and it’s now integrated into the Arduino library.

After I finished the eInk displays, I moved over to writing a library that makes use of the RGB Matrix and Metro M4 Airlift Lite to provide a library to make using the Matrix with the internet as easy as the PyPortal library makes using the PyPortal. I decided to part from the way that PyPortal works and provide more of a library of functions which initializes the function rather a monolithic library that does one thing very well. I have decided to call the library MatrixPortal and am continuing to add functionality. Be sure to keep an eye out for it.

Scott

Last week I had a variety of tweaks to CircuitPython out for PR including switching to PyStack, adding memorymonitor, removing the existing network APIs and adding .find to bytearray. They’ve been merged and we’re due for another release.

Yesterday, I continued work on the ESP32SPI and Requests libraries to optimize them for memory use. I was testing an unreleased PyPortal project to see if it can work. Memory use does look better but is still a challenge.

The end of this week I’m switching gears a little bit to add networking support to the ESP32-S2 and also verifying some hardware design assumptions.

Upcoming events!

PyLadies Miami

PyLadies Miami hosts DataBasement: Data Privacy in the Real World with Claire McKay Bowen, PhD on August 3, 2020 – Meetup and Twitter.

PyCon Australia 2020

PyCon AU has announced they are holding PyConline AU, an online event, from 4–6 September 2020 – pycon.org.au.

PyGotham TV

PyGotham is a New York City based, eclectic, Py-centric conference covering many topics. PyGotham TV taking place October 2-3, 2020 with a single track of talks presented online – Event Website and Call for Proposals.

PyCon India 2020

PyCon India 2020: the premier conference in India on using and developing the Python programming language. Held online October 3-5, 2020. A call for proposals is now open through August 14, 2020. – Website and Twitter

Meetup Groups

Meetup Groups

Data Science using Python is a consortium of 970 Meetup groups with over 700K members. There are meetings being held worldwide, see their main page for details – Meetup.

PyData is a consortium of 175 groups with about 170K members, and provides a forum for the international community of users and developers of data analysis tools to share ideas and learn from each other – Meetup.

PyLadies has 28 groups with over 28K members. Find out what’s happening in PyLadies Meetup groups around the world and start meeting up with the ones near you – Meetup.

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 5.3.1 and its unstable release is 6.0.0-alpha.2. New to CircuitPython? Start with our Welcome to CircuitPython Guide.

20200727 is the latest CircuitPython library bundle.

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

3.8.5 is the latest Python release. The latest pre-release version is 3.9.0b5.

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

ICYMI – In case you missed it

ICYMI

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.

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.