If you missed Tuesday’s Python on Microcontrollers Newsletter, here is the ICYMI (In case you missed it) version.
To never miss another issue, subscribe now! – You’ll get one terrific newsletter each Tuesday (before this post). Over 8,482 subscribers worldwide!
The next newsletter goes out in a week and being subscribed the best way to keep up with all things Python for hardware. No spam, no selling lists, leave any time.
Inauguration Day! Here’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. There is a great deal in this issue, let’s get to it.
Tracking COVID Vaccination Progress with CircuitPython
John Furcean builds two COVID-19 vaccination displays, coded using CircuitPython:
Our World in Data has aggregated massive data sets related to COVID-19. The vaccination data subset is available in a GitHub repository in CSV format. They post:
Our complete COVID-19 dataset is a collection of the COVID-19 data maintained by Our World in Data. It is updated daily and includes data on confirmed cases, deaths, hospitalizations, and testing, as well as other variables of potential interest.
More – furcean.com
Joey Castillo comes up with another beautiful large format project running CircuitPython. It features a unique capacitive touch matrix at the bottom:
Folks: meet the PyCorder! My take on a touchpad-based Sharp Memory Display gadget, in gorgeous Oshpark After Dark. More in the coming days, but I’m feeling super stoked tonight because I finally got it up and running (and made a simple input task for circuitpyui).
More – Twitter
2021 Open Hardware Summit Call for Proposals
The Open Hardware Summit (OHS) invites talk proposals for the eleventh annual summit! This year’s summit is virtual and will be held online on Friday 2021-04-09, 9:00 AM – 5:30 PM EDT.
The Open Hardware Summit is for presenting, discussing, and learning about open hardware of all kinds. The summit examines open hardware applications, practices, and theory, ranging from environmental sensors to 3D printable medical devices to open hardware processors and beyond. We are interested in open hardware on its own as well as in relation to topics such as software, design, business, law, and education. Past talks have featured topics such as advances in space propulsion, humanitarian projects, right to repair legislation, open hardware in education, and open hardware marketing. For our eleventh edition we are especially looking for speakers who can offer insights around the role of open hardware in the COVID-19 pandemic, open hardware medical devices, and related topics.
Submissions are due by Thursday 2021-02-11 at 11 PM EDT – oshwa.org
CircuitPython 6.1.0-rc.1 released
CircuitPython 6.1.0-rc.1 is the second release candidate of CircuitPython 6.1.0. If no significant issues are found within a few days, Adafruit will release this version as stable. See more – Adafruit Blog.
FIXES AND ENHANCEMENTS
- Update ulab to version 1.6.1.
- Use double-quotes in initial code.py program.
- Add len(alarm.sleep_memory) and bool(alarm.sleep_memory).
- Add native support for msgpack.
What if the Python REPL was like BASIC?
Scott experiments editing Python code like BASIC was edited. The idea is imagining this as the default mode on a Raspberry Pi 400. It’s a mix of modern and retro – GitHub.
This is in contrast to QuickPYTHON which runs on old PCs.
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott welcomes guest Dan Halbert.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
CircuitPython 2021 Entries Continue to Come In
More CircuitPython 2021 comments are coming in every day! Here are some from the past week:
Community wrapup – Adafruit Blog.
Here are some posts from the CircuitPython team:
- Scott Shawcroft, the lead CircuitPython developer – Adafruit Blog.
- Dan Halbert – Adafruit Blog.
- Melissa – Adafruit Blog.
Contribute your own thoughts to the CircuitPython team – see the kickoff post for more information.
News from around the web!
A modular CircuitPython number pad – Reddit CircuitPython Subreddit.
I made this macropad/numpad that can have any Feather-compatible board or Arduino Pro Micro as a controller. This means that you can choose if this is a wired or wireless board if you want to (there’s another, slimmer battery connector on the bottom of the board). This is compatible with the 32u4 bluetooth feather if you want QMK, or you can use any Feather that runs CircuitPython.
Working on CircuitPython support for the uDraw Wii Game Tablet (uDraw for the Wii is I2C, for PS3 and XBox it’s USB) – Twitter.
Designs for Feather format board carriers that mate with Lego blocks for quick hardware prototypes – Twitter.
A battery powered California Covid vaccination tracker based on Adafruit’s MagTag CircuitPython board and Ladyada’s COVID Tracking project (adapted to use a state-level data source) – Twitter.
Making a 30 year old SpaceOrb 360 work with retrogaming and modern gaming with Adafruit CircuitPython – Twitter.
Two new versions of ulab, a numpy-like number crunching library, have been released. These versions implements a numpy-compatible interface, and adds a couple of new functions, as well as a number of fixes for bugs while writing the manual. The change in the interface was a recurring request from the community and is meant to simplify porting of numpy code from a PC. Since CircuitPython is still using the old interface, the fixes have been backported and released as v.1.7.1. The CircuitPython-compatible version is going to stay alive on the legacy branch, and will receive regular updates and bug fixes until CircuitPython decides to adopt the numpy-compatible interface – GitHub.
The Python Software Foundation thanks the community for being an important part of their Q4 2020 fundraiser, “Rebuilding the PSF”. As of January 13, they confirm they raised more than $130,000! – Mailchimp.
Ever had to program a bazillion CircuitPython boards? CircuitPython Loader is a simple script that waits for a CIRCUITPY drive to appear, erases all files from it, then copies the contents of the ./CIRCUITPY folder. Requires Python 3.8+. Currently only tested and functional on macOS 10.15 Catalina – GitHub via Twitter.
Convert workout data from Peloton into a TCX file that can be uploaded to Garmin – GitHub.
tpy, a pet Python forked from tinypy – GitHub.
Video of a vintage NEC Spinwriter 3515 hammering out a novel with the help of some Python scripting – Twitter.
How much memory does a Python object take in memory? – towards data science.
PyDev of the Week: Claudia Regio on Mouse vs Python
In honor of Martin Luther King Jr. Day, the CircuitPython Weekly Meeting was moved to Tuesday January 19, 2021 and the video URL was not available at press time. It will be added to the CircuitPython Weekly Meeting playlist on YouTube soon.
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Wave – Realtime Web Apps and Dashboards for Python.
An I2C volume knob + class AB amplifier for one channel of differential audio. Seems handy! You can buy the Maxim DS4420 from Digi-Key. Let’s design a breakout board for it in EagleCAD – Twitter.
SHT40 Prototype Timelapse Assembly – Twitter.
LEEK! PCM1840 Quad Input Microphone I2S ADC with Hardware Pin Configuration – Adafruit Blog.
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, no new boards were 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:
- How to Add a New Board to CircuitPython
- How to add a New Board to the circuitpython.org website
- Adding a Single Board Computer to PlatformDetect for Blinka
- Adding a Single Board Computer to Blinka
New Learn Guides!
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!
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 291!
Here’s this week’s new CircuitPython 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!
In the past week I fixed many bugs in preparation for 6.1.0-rc.1, including two bugs related to time.sleep(), an AnalogOut bug on SAMD51, a SAMD PWMOut bug, and some fixes for BLE timing values. I have some other fixes in the works but will probably hold them for a 6.1.1 release so we can get 6.1.0 final out the door.
I’ve also been experimenting with very inexpensive Bluetooth thermometer/hygrometers from Xiaomi. I can connect to them and get data, and it’s also possible to install unofficial custom firmware that adds many features.
After many delays, the main branch now supports I2S audio output on the ESP32-S2. In this quick demo from Show & Tell, you can press one of the 4 buttons on this eInk display to play the associated wave file.
This week I did some general guide work, including fixing up a couple of guides that had minor issues. One needed a different schematic and fab print, and another needed an extra Fritzing diagram.
I worked with Dylan on getting the majority of libraries updated to using the latest version of Black. There were a couple of updates to the templates we use for creating libraries that needed to be applied to all libraries before they were added to the templates, so Dylan did that in the same process. This ended up involving manually adding new license formatting to all of the existing libraries, and therefore PRs for all of them. We’re still working through this project, but so far we’re over halfway through.
This week I’ve been ironing out the issues with the server bindings of the Socket layer, specifically by the receive, accept and connect functions non-blocking (so they don’t make CircuitPython hang as they run). I’ve been implementing new timeout features across the API and adding the corresponding error codes, as well as making sure that functions like recv_into and send can be used across various different kinds of sockets.
I’ve also been part of an ongoing investigation into why the ESP32-S2 has different AnalogOut behavior from the ESP32. I’d gotten some pointers from Espressif late last year, but as more people have encountered the problem it’s become clear that things are still confusing. I’m hoping to get more info from them on the specific differences between the two chip lines, and the intent behind the calibration differences I’ve seen in the IDF code.
This past week I worked with Jeff to get a workaround in place for an issue that came up with a recent kernel release for the Raspberry Pi which resulted in a garbled screen. The workaround will basically roll back the kernel to an older version before the issue came up.
I also finished a big project of getting the PyPortal refactored to use PortalBase and kept full backwards compatibility with the previous library. This is a project that I had started before the holiday break and I had to come up with some workarounds that I was getting stuck on. I ended up refactoring PortalBase slightly to make it easier, but in a way that I didn’t need to go back and update the MagTag and MatrixPortal libraries.
The other thing I did was I ported all of the WebSerial and WebBluetooth work from glitch over to GitHub pages. The repositories were all set up already, so this mostly involved enabling GitHub pages on each repo and updating the paths, though I did run into one issue where the CSS was missing. Copying it from glitch and uploading it to GitHub fixed that issue.
This week I’ve been keeping up with all of the pull request reviews and support for CircuitPython. So, lots of odds and ends.
I did my first stream of the year where we went and looked back at past CircuitPython annual plans. See the stream here. I’ll be drafting my own post this week!
Australia’s grassroots Free and Open Source technologies conference linux.conf.au is scheduled for January 23-25 2021 online/worldwide. Limor “Ladyada” Fried, electrical engineer and founder of Adafruit, will be one of their keynote speakers. In her keynote, Limor will discuss how Python is snaking its way into hardware, Linux single board computers and more.
A free virtual “Girls Into Coding” event via Zoom on Sunday, 31 January 2021 – Choose 1 of 5 workshops. There will also be lightning talks to inspire & encourage girls aged 10 -14 to get involved in tech – Eventbrite.
FOSDEM is a free and non-commercial event organised by the community for the community. Typically hosted in Brussels, Belgium, FOSDEM 2021 is taking place online February 6-7, 2021. This year, there will be a Python Developer Room. Details – Adafruit Blog.
PyCascades is a regional PyCon in the Pacific Northwest, celebrating the west coast Python developer and user community. Held online February 19th — 21st, 2021 – PyCascades.
The 2021 Open Hardware summit will be held online, Friday April 9, 2021. The summit will be livestreamed, but ticket holders will have access to additional interactive portions of the summit like meet-and-greets, workshops, and sponsor booths. Find details, including ticket and sponsorship information at 2021.oshwa.org – OSHWA.
PyCon US, the annual official annual Python gathering, has been announced to be held online May 12-15, 2021. Sprints will be held May 16-18, 2021. More information and signups at https://us.pycon.org/2021/
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.
20210118 is the latest CircuitPython library bundle.
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 – 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.
Job of the Week
Executive Director Open Source Initiative (OSI) – Adafruit Jobs Board.
The Executive Director will work with the board to build a bridge to a stronger future for OSI and the open source ecosystem. The candidate will set strategic direction and move the Open Source Initiative towards our vision, working with the staff and community to achieve measurable program outcomes. This role is ideal for the experienced executive director who can take organizations to the next level. The candidate can set strategy and translate it into programmatic results, achieved through organizational leadership and operational excellence. Additionally, they have a strong understanding of open source culture and norms as well as the Open Source Initiative’s mission and programs. Plus, the candidate excels at managing ambiguity and drives for clarity and impact.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 26,703 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 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.
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.
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.