View this email in your browser.
Hi everyone! 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. Time to dive in!
ESP32-S2 Hack Chat with Adafruit
Announced in September 2019, the ESP32-S2 is finally making it into hobbyist’s hands. With WiFi, a much faster CPU, scads of GPIO, ADCs, a RISC-V co-processor, native USB, and the promise of very low current draw, the ESP32-S2 may prove to be popular with hobbyists as it becomes established.
To talk through the new chip’s potential, Limor “Ladyada” Fried and Scott Shawcroft, both of Adafruit Industries, will join Hackaday.io on the Hack Chat. Learn everything you need to know about the ESP32-S2, and how to put it to work for you.
Tune in on Wednesday, May 6, 2020 at noon US Pacific Time – Hackaday.io.
CircuitPython Version 5.3.0 Stable is Available
CircuitPython 5.3.0 Stable is the latest minor revision of CircuitPython. This release adds support for 3 new boards, adds the RGBMatrix driver for RGB LED matrices, and more.
New features and improvements since 5.2.0
- Add support for RGB Matrix display
- Add a fill method to displayio.Bitmap
- Make the colors used by the stage library compatible with those used in the displayio library
- Multiple improvements to the STM32 port
- Improvements to the litex port
- Improvements to ulab
- Use “checkout@v2” in the CircuitPython build process
- Fix the maximum keycode in keyboard HID descriptor
- Fix bad submodule patk
- Add the NFC Copy Cat board
- Use Sphinx 3 to build the documentation
3 New boards since 5.2.0
See the release page for additional information – GitHub and the Adafruit Blog.
An MQTT-based CircuitPython Library for Azure IoT
As a Hackathon exploration, Microsoft adapted an IoT Central Python library to create an MQTT-based CircuitPython library for Azure IoT. CircuitPython, Adafruit’s version of Python for embedded development, is easy to use and significantly lowers the barrier of entry for building cool IoT solutions. This library has been tested with the PyPortal device (which has a broad set of capabilities, including a TFT touchscreen display) and a PyBadge. Both of these devices are able to connect via an ESP32 serving as a WiFi co-processor – Microsoft Tech Community Blog.
Microsoft asks interested parties to check it out and provide feedback – GitHub.
If you’re interested in seeing more of CircuitPython or MicroPython in Azure IoT, let them know by filling out a quick form.
This project follows work by Brent Rubell at Adafruit in creating the Adafruit_CircuitPython_AzureIoT library – GitHub.
The Adafruit Internet of Things Monthly Newsletter
The May issue of the Adafruit Internet of Things Monthly Newsletter is out with a great number of CircuitPython-related topics. You can catch the ICYMI version – Adafruit Blog.
With over 1,400 subscribers, this monthly newsletter keeps you informed on IoT. Subscribe spam free – Adafruit Daily.
Adafruit Industries continues to run with 100% of employees being paid and continuing to work. Most are working remotely, with some working in the Manhattan, New York factory as an essential service and business under NYC Executive Order 202.6 Capabilities. Adafruit was deemed an essential service to distribute/make some PPE (Personal Protection Equipment) such as face shields, and manufacturer electronics for essential life-saving/preserving equipment and development which is needed in New York and beyond – Blog.
Some weekly highlights:
400+ Textbooks made free for download
MIT CSAIL posts that “Springer just made 400+ textbooks free to download, including CS books on Python, deep learning, data science & AI.”
Great timing! If you are looking for some programming books in general and Python programming information specifically, this is great! – Twitter and Springer.
Adafruit hardware being certified Open Source
Adafruit has always been an open source hardware company, predating the Open Source Hardware Association (OSHWA) certification process. They have begun submitting all of their hardware to OSHWA for certification as Open Source. This week 161 new boards were certified including:
News from around the web!
The Evo M51 Module is a Feather-sized board featuring both a Microchip SAMD51 microcontroller and a MAX 10 FPGA. The board is designed to support CircuitPython and is also programmable with the Arduino IDE – Alorium Technology and YouTube.
The Melbourne MicroPython Meetup presents their March-April News Roundup, discussing the latest MicroPython news. This issue has a shout out to Adafruit and Scott Shawcroft on CircuitPython: “Especially loving the inspiring way that you folks are running the business in such a difficult time. Stay safe and keep up the amazing work!” – Twitter and GitHub.io.
A follow-up to last week and the PlasticLogic ePaper displays. They have two new video demonstrations featuring display updates via Bluetooth. First with text and GFX graphics, second with bitmap files. Check out the repo for their code and details – GitHub.
The Fluff M0 is the simplest, least expensive board in the Feather form factor with a Microchip SAMD21 processor – Hackaday.io and Twitter.
The Lego SPIKE Prime controller runs MicroPython inside. This makes for some interesting projects like a Star Wars X-Wing Robot – Twitter, Blog, YouTube and general information on SPIKE and MicroPython via Instructables.
Using an Adafruit CLUE and a Kitronik Ziphalohd as a temperature monitor – Twitter.
Build a simple USB HID Macropad using Seeeduino Xiao and CircuitPython – Make Andy Make.
Controlling a USB powered disco light from Bluetooth – Twitter.
Building a work-from-home “On Air” light with Circuit Playground Express – GitHub.
Program Lattice MachX02/3 FPGAs with CircuitPython. It works over I2C or SPI, no JTAG required – GitHub and Twitter.
An I2C OLED display working with CircuitPython and the Robo HAT MM1 automation controller – Twitter.
Python’s migration to GitHub: A Request for Project Manager Resumes – Python Blog.
Should all strings become f-strings? – Python Blog.
Microsoft Windows 10, May 2019 Update, installs a Python command to redirect users to download a version from the Windows Store: good, yes? It is reported that this puts the redirect ahead of any actual CPython installed on the machine , not desirable. The simple fix is to turn off the application alias using the “Manage app execution aliases” in settings – Microsoft, Twitter Issue and Twitter Fix.
COVID-19: Face Mask Detector with Python, OpenCV, Keras/TensorFlow, and Deep Learning – PyImageSearch.
Open Source Spatial Analysis Tools for Python: a quick guide – makepath.
Chris put in a FOIA request to the United States NSA for their Python training materials and got back a 400-page printout of their COMP 3321 training course – PDF. Some takeaways from it – Post.
PyDev of the Week – Samuel Hinton on Mouse vs Python
CircuitPython Weekly Meeting for May 4th, 2020 on YouTube and on diode.zone
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Harvard Online Learning Catalog.
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 another new board 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!
PyPortal Quarantine Clock from Brent Rubell
CircuitPython CLUE I Ching Caster from Carter Nelson
Pulse Oximeter Wireless Data Logger from John Park
UTi165 Thermal Fever Scanner Camera from Ladyada
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 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 227!
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 an eye out here for more download stats coming soon!
What’s the team up to this week?
What is the team up to this week? Let’s check in!
The highlight of this week has been working on a project to add the joy of clacky keyboards to the Trellis family! I’m working on a board that has the same 60x60mm dimensions and tessellated I2C pads as the Trellis, NeoTrellis and NeoTrellis M4. This one will be different from the other members of the Trellis because I’ve replaced the elastomer buttons with mechanical keyboard switches!
Instead of the 4×4 grid of squishy elastomer buttons you’ll get a 3×3 array of sockets that fit standard Cherry MX switches. There is a huge range of different switches available from “Bryan, mute your mic” levels of clickyness to buttery soft, silent as a ninja “linear” switches. And since the switches are mounted in sockets instead of soldered in, you can change them out at your whim.
There are still a few things to figure out about the design, but I’m hopeful this will pan out and perhaps be just the start 😉
I released the BLE pulse oximeter library, now that the Learn Guide for that project is published.
I’ve been going in circles a bit on some core changes for BLE PacketBuffer, to make sure it works with the new Adafruit services. I should be done with that soon.
I’ve tried a BLE-capable body-weight scale and a blood pressure monitor. Unfortunately neither use the standard services defined by the Bluetooth organization, so there will be some reverse engineering.
For the past week, I’ve been working on adding RGBMatrix support to the Feather STM32F407. This is the first time the initial work of porting to a new microcontroller has fallen to me instead of Phil B., and the first real work I’ve done on an STM microcontroller, so it has been a learning experience.
For fun, I eagerly printed the new slim enclosure for Adafruit CLUE and used it for a little project with displayio: A die roller for the FATE role playing system. In FATE, you use 4 special dice (labeled +, – and blank) together with your character’s inherent skill to determine an outcome. It was a fun chance to learn a little more about how the accelerometer and proximity sensor work, because you can either shake the CLUE or touch the sensor above the screen to roll the dice.
This week, I’ve been going through all the open GitHub issues across all of the CircuitPython libraries. While there are many longstanding issues that need to remain open, there are many that can be addressed in some way. I’ve been pinging original authors to get status updates, closing completed issues, and putting in PRs to resolve some of the quick ones. Expect to see activity across many of the libraries over the next couple of weeks.
As well, I added a new capability to the Circuit Playground library. You can now check which board you have connected: Express or Bluefruit. There are two options. First is the option to check which board is connected and return that piece of information. Second is the option to specify which board to look for and use that to execute code based on which board is connected, e.g. if a Circuit Playground Bluefruit is connected, run the following code. This came out of the sound meter example failing to work on Circuit Playground Bluefruit. There are some features that are not supported by Circuit Playground Express, so it allows for writing sound related code that works on both Express and Bluefruit.
This past week has mostly been carryover from the previous week, with new bugfixes and documentation changes. I’ve written a new ReadMe for the STM32 port, which should make it easier for newcomers to understand the port’s structure and start getting builds loaded with the new
make flash command. I’ve also been doing miscellaneous work on bugfixes, reviews, and a lot of reading about the i.MX RT.
In my personal time, I risked a drive into Boston to retrieve some gear for board testing and a new CircuitPython project. While I was there, I got to see the PPE manufacturing setup running at the Makerspace where I normally work full time, Artisan’s Asylum. They’re taking safety very seriously and still churning out seriously impressive quantities of equipment. It was great to see that everyone is safe and to hear updates from them – from an approved distance of 6ft, of course.
This past week I worked on adding the Rock Pi S to Blinka. This included adding some more tools such as a SysFS Pin wrapper so that there are more options to add new boards to Blinka. Additionally, I added Pulse Width Modulation support and Analog Input support to the Rock Pi S, which is the first time I had added those features.
Next up, I will be focusing on improving I2C support of the Raspberry Pi, including adding support for unusual configurations, as well as working on adding I2C to the external bitbangio CircuitPython library.
At the end of last week, I worked more on the ESP32-S2 port. I got CircuitPython to the point of linking the files together and, with the help of folks from my stream, generating lots of linking errors (Previously we had many compiler errors). The end of this week, I’ll continue working on the port by fixing the linker issues.
The start of this week was spent on the lower_power PR. There was a weird USB issue on SAMD21 that only came up with certain USB host computers. I got it reproduced here and then Thach also reproduced it and then fixed it. So, it should be ready to merge. :fingers_crossed:
I’ve also been helping Dylan convert the inline native module docs from RST to Python stubs. That way we’ll be able to provide stubs to editors like VS Code that can use it to help with completions.
dunkmann00 has also been working to get PixelBuf launched so that folks have faster NeoPixels. There are a few administrative things to do, like releasing the libraries and then updating the frozen version, but that shouldn’t be too hard.
Lastly, I chatted yesterday with Helen Leigh about CircuitPython for her upcoming Make magazine article. I look forward to reading it.
Thanks to everyone who has helped me this week!
PyCon 2020 Online has launched! Head over to https://us.pycon.org/2020/online/ to access new content weekly. Pythonistas come together every year to learn, network and discuss great ideas in person at PyCon. That can’t happen this year, but everyone can get together virtually! – Announcement.
You can subscribe to the PyCon 2020 Online mailing list to receive updates as they are published online. Check out talks, tutorials, Charlas, & Startup Row along with the Virtual Expo Hall.
Items of note this week:
- How to build an intelligent “indoor garden” with microcontrollers, CircuitPython, and IoT – YouTube.
- 9 Years of PyLadies: Lessons Learned and What Comes Next – YouTube.
The USA Science & Engineering Festival is to offer their popular X-STEM conference in a virtual format! X-STEM All Access is an engaging, entertaining, educational, and interactive online STEM experience for kids. Through a series of daily livestream events, students will hear from an exclusive group of visionaries who aim to empower and inspire kids about careers in science, technology, engineering, and mathematics.
X-STEM All Access presentations will be geared toward a middle and high school level audience (grades 6 to 12), but kids and adults of all ages are welcome to join. Educators are encouraged to include X-STEM All Access into their distance learning curriculum.
There will be daily presentations on May 13, 14, 15, 18, and 19th, 2020 from 1-2 pm US EDT.
There is no cost to attend. Register on their website – usasciencefestival.org.
EuroPython 2020 this year will be an online conference from July 23-26. They are planning the following structure:
- 2 conference days with keynotes, talks, lightning talks, poster session (Thursday and Friday)
- 2 sprint days with multiple sprint teams (Saturday and Sunday)
Attending the conference days will require a ticket, participating in the sprint days will be free – EuroPython.
PyCon AU has announced they are holding PyConline AU, an online event, in August 2020 – pycon.org.au.
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.
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, please let us know on Discord or on Twitter with hashtag #CircuitPython.
CircuitPython’s stable release is 5.3.0. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20200502 is the latest CircuitPython library bundle.
v1.12 is the latest MicroPython release. Documentation for it is here.
3.8.2 is the latest Python release. The latest pre-release version is 3.9.0a6.
1,683 Stars Like CircuitPython? Star it on GitHub!
Call for help – CircuitPython messaging to other languages!
We recently posted on the Adafruit blog about bringing CircuitPython messaging to other languages, one of the exciting features of CircuitPython 4 and later versions 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 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 18,515 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, 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.