View this email in your browser.
Welcome to 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.
CircuitPython Day is in one week! September 9th, 2020 (9-9-2020)
September 9, 2020 (9/9/2020) is the snakiest day of this year so it’s been designated CircuitPython Day! The day includes CircuitPython livestreams highlighting all things Python and Python on Hardware.
You can see the latest developing schedule and add your event via a Pull Request on GitHub.
CircuitPython fans in Central America are planning additional activities.
Costa Rican artist isabelootag was commissioned to create a mascot for this event, taking into account our roots and culture as Central Americans. You may already know Blinka, the snake mascot Adafruit has chosen for CircuitPython. With his talent, he has created one we are sure will be loved by all. I present to you Quetzalblinka.
See their website (in Spanish) for their planned activities – DiaCircuitPython.org.
This year CircuitPython Day is being dedicated to Lamba Labs Makerspace, who are helping during the Beirut disaster.
The Bornhack Badge
The BornHack hacker camp still happened this year and they once again they provided an electronic badge to all attendees – the 2020 BornHack badge!
Similar to the last couple of years, this badge has an ARM Cortex M0+ as the main controller, but on this badge it’s the SAMD21 from Microchip, with 4 times as much flash and RAM compared to the chips from the previous badges. This makes it possible to run Adafruit CircuitPython, which lowers the bar for how easy it is to get started hacking on the badge.
Read more – Hackaday, GitHub and YouTube.
The tiny book touch
Joey Castillo posts a Twitter thread about his development of the
tiny book touch, a small epaper reader with screen touch sensing. In
bringing it up, he wrote a demo in CircuitPython with the
Adafruit_FocalTouch library – he says it just worked! The device
includes STEMMA ports, GPIO and I2C.
He also posts:
So I’m realizing: I need to redesign this as a Feather board. Either SAMD51J or ESP32-S2. Imagine using this with a LoRa wing for radio stuff, or controlling a power relay. So many options! And if I can keep it simple, maybe this is a gadget that I could look into having manufactured.
More – Twitter.
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott streams his work on adding a new ESP32-S2 board to CircuitPython.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
Scott will be presenting a special Deep Dive live on CircuitPython
Day, 9/9/2020, from 5 to 7 pm US Eastern Time – come join the stream!
Adafruit is shipping orders!
Adafruit is stocked and shipping orders!
Now is the best time to get orders in for your favorite products, including items for students.
Science is fun and educational when using Adafruit parts and free, easy to follow tutorials in the Adafruit Learning System.
Shop Adafruit now
PyConAU This Week
PyCon AU is happening online this week, from 4–6 September – pycon.org.au and Twitter.
As a preview, Rowena Stewart made a pentatonic python with CircuitPython and an Adafruit Circuit Playground Express. If you’d like to find out how to make your own, see her PyCon AU talk on 5th September – Twitter.
News from around the web!
A BMP280 barometric (pressure) sensor placed into an inflated
balloon. The color indicate the pressure level (green=low red=high).
Inside the balloon a Feather nRF52840 Sense from Adafruit – Twitter and GitHub.
The Getting Started With CircuitPython On Compatible Microcontroller Boards guide is now available to help people get up and running with CircuitPython – Woolsey Workshop and Twitter.
The micro:bit Remote Learning Course provides video learning about the micro:bit and MicroPython – Google Sites.
GardenPi, powered by Neptune.py is designed to manage, monitor and
control a series or sprinkler valves and a multitude of sensors for
pretty much any sized irrigation / hydroponic / aquaponic project. It
can be scaled from 1 to 32 zones for water and 7 zones for power. It is
built almost entirely in Python3 for the Raspberry Pi 4 – GitHub.
The 7 Top Programming Languages To Learn Before The End of the 2020s – Hackernoon.
Anime2Clothing – a Pytorch official implementation of Anime to Real Clothing: Cosplay Costume Generation via Image-to-Image Translation – GitHub.
python-poppler is a Python binding to the poppler-cpp library. It allows to read, render, or modify PDF documents – GitHub.
Watch the Chicago Python Lunch Break for August 2020 – YouTube and Twitter.
Python Tea #11: Nina Zakharenko and special Guest Tania Allard on
Scientific Computing in Python, Mechanical Keyboards, Dev Advocacy – Twitch and Twitter.
Rich is a Python library for writing rich text (with color and style)
to the terminal, and for displaying advanced content such as tables,
markdown, and syntax highlighted code – bigl.es.
Pippi is a library of computer music modules for Python. It includes a
few handy data structures for music like SoundBuffer & Wavetable,
which are operator-overloaded to make working with sounds and control
structures simpler. It also includes a lot of useful methods for doing
common and not-so-common transformations to sounds and control
structures – GitHub and Documentation.
Practical Natural Language Processing, a Comprehensive Guide to Building Real-World NLP Systems – GitHub.
High Demand for Python-Driven Machine Language Tools to Boost Robot Farming – Fintech Demand.
An interactive HTML Bill of Materials (BOM) plugin for KiCad – GitHub.
MicroRuby: run Ruby code on an embedded microcontroller – MicroRuby.
PyDev of the Week: Connor Ferster on Mouse vs Python
CircuitPython Weekly for August 31, 2020 notes and video on YouTube.
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Programming Books Humble Bundle.
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 we had three new boards added!
Looking for adding a new board to CircuitPython? It’s highly encouraged! Adafruit has four guides to help you do so:
New Learn Guides!
NeoPixel Flame Torch from Noe and Pedro
Bitcoin Value RGB Matrix Display from John Park
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 267!
Here’s this week’s new CircuitPython 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!
This pass week has been busy with development, primarily on the
BNO080 but also a new project! The work on the BNO080 has been
attempting to get the SPI mode working correctly and reliably. The I2C
mode has been working excellently and without issue, however it seems
that the sensor is less willing to work without issue when the
user/developer hasn’t quite gotten everything correct with SPI. My
testing leads me to believe that the issue is due to responding to
packets being received correctly, however I can’t confirm it.
Taking a break from the SPI support, I was able to do some
refactoring and cleanup the code, which allowed me to relatively easily
add support for new sensor report types. In BNO080/Hillcrest Labs speak,
a sensor report is a packet of information that represents a
measurement from a sensor or sensor fusion algorithm. I’ve added the
gyro, magnetometer, and linear acceleration (acceleration with the
gravity offset removed), in addition to the rotation vector quaternion.
There are still a few remaining report types to include in addition to a
multitude of configuration options, so it’s not quite done yet but it
is progressing well.
To take a break from the BNO which had been monopolizing my time, I
switched gears to getting the latest revision of the CAN FeatherWing up
and running. After a bit of wrangling, I was able to get a Feather M4
Express, Feather Sense, and a Edge Badge all talking to each other on a
shared bus. For now they’re only sending simple messages to each other,
however it should be enough to allow me to start working on
CircuitPython support for the MCP2515 CAN controller that it uses. I
also spent some time working with Jeff on brainstorming about CAN APIs
so that we can ensure a common interface for native and SPI CAN
I finished debugging HCI _bleio and submitted a PR. I had to use a Saleae (see above), and add code to output extra data on a spare pin to see what was going on internally. Scott has reviewed the PR, and I’m now making a few fixes. The PR should be merged within a few days.
The next CircuitPython 6.0.0 alpha release, 6.0.0-alpha.3, is nearly ready, and by the time you read this, it should be out. The release after that we hope will include both HCI _bleio and also Scott’s Wifi support for the ESP32-S2, so watch for that soon.
I’ve been trying to automate or at least facilitate the data-gathering we do to prepare the release notes for each CircuitPython release. Right now it’s pretty much done by hand. To this end, I’ve been trying out the GraphQL interface to GitHub, which facilitates some but not all of the queries I want to do.
New project time, which means a new rats nest of wires on my desk.
We’re starting on CAN bus support in CircuitPython. The first hardware we’ll add it to is the SAM E54 Xplained board, because the E54 microcontroller has a built in CAN peripheral. However, my testing network here consists of two STM32F405 Feathers running MicroPython, which has its own implementation of CAN.
CAN is interesting because it is used inside of automobiles but can also be used as a small network between microcontrollers. If you have any use cases for CAN bus, let us know on Discord #circuitpython so we can keep them in mind as we create this API.
I finally finished the Fritzing object for the BrainCraft HAT. That
one was a beast, including a fix to the board file, updating some of the
sub-components, and bringing in parts from other objects. But it’s
done! It looks great.
I finished the library pull request sweep, and have been following up
with replies to my comments and messages. It was good to go through
everything and make sure we hadn’t missed anything.
I did a bunch of misc that had been assigned to me over time. I
tested a PR to Adafruit CircuitPython Motor. I updated the MotorKit
guide to show how to use multiple I2C devices. I followed up on GitHub
assignments. I update the RGB Matrix FeatherWing guide with the new nRF FeatherWing and reviewed various PRs.
Spent some time updating the LIS3DH guide to include the new STEMMA
QT version, so whether you have the original or have gotten your hands
on one of the new versions, you’ll know how to wire it up and get it
Next up is updating some motor driver guides to include CircuitPython usage.
This week I’ve been working on fixing a variety of bugs across
multiple ports. I started out with a bug that was crashing the Meowbit
at startup, which turned out to be multiple issues related to low power,
displayio changes, and pulseio pointer problems. I also revisited some
older issues on the STM32 which were simply out of date, having been
fixed a long time ago by wider-scale improvements to the port.
I’ve been spending time on a variety of problems on the ESP32-S2 and STM32, including fixing the TRNG module across both ports, debugging a crash related to DisplayIO on the ESP32, dealing with problems related to Makefile comment style, and logging some potential issues with the filesystem. It’s somewhat scattered work, but it’s good to make
sure that major bugs don’t linger in the issues list for too long, and I’ve often found that investigating an issue in one port turns up undocumented problems in others.
In my off time, this past week I finished a breakout FeatherWing for the Dynamixel AX-12 servo motor to go with my library.
I’ve been meaning to get back into making my own hardware, and it seems
like the assembly options for PCBs have gotten a lot cheaper recently,
which really lowers the barrier to entry for my projects. I’m excited to
see how these ones turned out when they arrive this week.
This past week I took a little time off, so I only ended up working a
couple of days. I was doing a bit of catching up, so I had a mix of
small projects. I wrote a basic weather demo that uses the MatrixPortal
library. I also wrote another quick demo to display some information
about the phase of the moon. I updated some GitHub issues and tested
out some code. Finally, I started creating a library to contain some
shell scripting functions to make it easier to convert some of our
Raspberry Pi Installation scripts over to Python.
I’ve finally gotten a pull request (PR) out for native WiFi support on the ESP32-S2! I also sent out a PR for PSRAM support as well. So, things are picking up. We’re going to be finding and fixing bugs as folks test all of this new stuff.
This coming week I’ll be refining the open PRs to get them merged and
also working to get PRs out for my improvements to the Requests
library. The improvements tweak the API to work with the native WiFi
support and reduce the memory overhead of loading JSON.
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.
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
The Hackaday Remoticon will take place everywhere November 6th – 8th,
2020. It’s a weekend packed with workshops about hardware creation,
held virtually for all to enjoy – Hackaday.
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.
CircuitPython’s stable release is 5.3.1 and its unstable release is 6.0.0-alpha.3. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20200829 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.0rc1.
1813 Stars Like CircuitPython? Star it on GitHub!
Call for help – Translating CircuitPython is now easier than ever!
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 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.
The Adafruit Discord community, where we do all our CircuitPython
development in the open, reached over 24,718 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
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. Kattni turns the weekly news into video form for ASK an ENGINEER and Adafruit social media. 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, 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. You may also tag your information on Twitter with #CircuitPython.
Join our Discord or post to the forum for any further questions.