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. Let’s get started!
Low Power Support Available on ESP32-S2
Low power capability in CircuitPython has come, in the form of low power modes for the ESP32-S2 chip. Other chips will be following shortly, if they are hardware capable. The details are in Pull Request #3767 merged last week into the nightly builds of CircuitPython for the ESP32-S2. While normally the recommendation would be to use CircuitPython 6.1.0-beta.2, the “Absolute Newest” on S3, an available option, is recommended for ESP32-S2 boards.
Sunday, the DESK OF LADYADA went over Deep Sleep testing for ESP32-S2 and the new ESP32-S2FH4 chip! See how the new Nordic Power Profiler Kit II helps determine the power draw on sleeping boards – YouTube
Another Adafruit Discord milestone: 26,000+ members
A new milestone: the Adafruit Discord community, where we do all our CircuitPython development in the open. The server reached over 26,000 humans! Adafruit believes Discord offers a unique way for CircuitPython folks to connect. Join today at https://adafru.it/discord.
PyCon US 2021 Announced
PyCon US, the annual official annual Python gathering, will be held online, virtually, in 2021.
Planning PyCon US has taken us to a whole new world of virtual options. Our staff and volunteers are working hard to bring you a great event for you to enjoy. As well as multiple days of informative talks and tutorials and exciting news from our sponsors, you’ll have ways to join in on open space conversations or a hallway track, and maybe even a virtual 5K run. This can all be done from the comfort of your favorite chair – with the exception of the 5K!
The conference will be held on the same dates originally scheduled, May 12-15, 2021. Sprints will be held May 16-18, 2021.
More information and signups may be done at https://us.pycon.org/2021/ – PyCon Blog
Ladyada to Keynote linux.conf.au 2021
Australia’s grassroots Free and Open Source technologies conference, linux.conf.au, announced that Limor “Ladyada” Fried, electrical engineer and founder of Adafruit, will be one of their keynote speakers at linux.conf.au 2021, scheduled for January 23-25 2021 online/worldwide.
In her keynote, Limor will discuss how Python is snaking its way into hardware, Linux single board computers and more.
The schedule and tickets are available at lca2021.linux.org.au – Announcement.
The 2020 State of the Octoverse (GitHub) Released
The three 2020 State of the Octoverse reports have been released, detailing information gleaned from GitHub.
2020 has been a year of extraordinary change. Yet with 60M+ new repositories created this past year, one thing has remained true — developers came together from all corners of the world to innovate, find connection, and solve problems.
Some highlights:
- Python has grown to the #2 spot in languages used, up from 4th in 2014.
- Typescript surged to #4, having been #10 in 2017.
- Developers have worked significantly more on Open Source projects since COVID-19 lockdowns in March, 2020.
- Open Source development jumps up during weekends.
- 35% more repositories were created in 2020 than 2019.
- 25% more contributions to open source projects this year.
See all three detailed reports – GitHub.
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott streams his work on ESP32-S2 sleep.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
Adafruit Update
Adafruit is shipping orders!
Adafruit is stocked and shipping orders! Now is the best time to get orders in for your favorite products, including holiday projects and gifts – Adafruit.
SHIPPING DEADLINES FOR THE HOLIDAYS – read about Adafruit deadlines for domestic and international shipping – Adafruit Blog.
Shop Adafruit now
News from around the web!
Enhancing a Nativity set with an Adafruit Qt Py and a NeoPixel Ring – Twitter.
Work on a PiHole statistic display on an Adafruit MagTag. Download a json file from a DNS Ad Blocker and display dns_queries_today, ads_blocked_today and a progress bar – Twitter and GitHub.
Wrapped-up an Adafruit PyPortal-based workshop corrosion monitor. It uses CircuitPython, Adafruit IO, and a custom Oshpark PCB. Already thinking about upgrading to a MagTag – Twitter
Yuri 3 is a Mars rover robot. It is powered by a Raspberry Pi and uses an Adafruit PWM board, all programmed in Python – Twitter
A tutorial on using the Oak Dev Tech CP Sapling + CircuitPython to make a low cost temperature sensor – oakdev.tech and Twitter.
Using analog panel meters and PWM using CircuitPython on the Adafruit QT Py – Twitter.
Making a 3D scanner using a Raspberry Pi programmed in Python and Flask, controlling cameras, motors, and lasers via touchscreen and remote Web interface – Twitter.
Messing around with a Raspberry Pi Zero powered microscope, OBS, Seeedstudio Xiao, CircuitPython and Visual Studio Code – Twitter Thread
An automated music project using two Adafruit PWM Hats and a lot of Python code – Twitter.
Nano ESP32-S2 CircuitPython ADC (Analog to Digital Converter) – YouTube and Twitter
A Day in Code: Python is a picture book written in code. It’s an illustrated story written in the Python programming language – Kickstarter.
MicroPython micro:bit V2 Talking TextaBot – GitHub.
Higher accuracy Twilio voice transcriptions with Python and Flask – Full Stack Python and Twitter.
Depix: a tool for recovering passwords from pixelized screenshots, written in Python – GitHub, LinkedIn article and Twitter.
Resizing images in Python with pillow – chebe blog.
How to Use sorted()
and sort()
in Python – Real Python.
Unravelling not
in Python – snarky.ca.
A Comprehensive Guide to Profiling Python Programs: understanding what parts of your code are problematic – Better Programming.
How to test your AWS code using Moto and Pytest – Learn AWS.
PyDev of the Week: Shauna Gordon McKeon on Mouse vs Python
CircuitPython Weekly for December 7th, 2020 notes and on YouTube
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? What is guizero.
Coming soon
Oak Dev Tech is developing the SapWing, a tiny ESP32-S2 board – Twitter
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 one 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!
SpaceX Next Launch Display with Adafruit MagTag from Anne Barela
NextBus Transit Predictions for Adafruit MagTag from Phil Burgess
Raspberry Pi Pedal for Youtube from Jeff Epler
MagTag Progress Displays from Tim C
CircuitPython Animated Holiday Wreath Lights from Kattni
Adafruit TMP117 High Accuracy I2C Temperature Monitor from Bryan Siepert
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 283!
New Libraries!
Here’s this week’s new CircuitPython libraries:
Updated 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!
Bryan
This week I finished the CircuitPython library for the MLX90395, the 3-Axis magnetometer I mentioned last week. I continue to be mildly obsessed with this sensor, as well as the TLV493 and other chips that use advanced magnetic sensing to unlock new methods of solving old and new problems.
I must have magnets on the brain as I recently saw a perfect application for these types of sensors: A video by Tom Stanton, an engineer on YouTube, about a diaphragm based air powered engine. In the video, he builds a small engine to power a model airplane, but that uses compressed air to power the planes flight, just like an Air Hog.
Tom was presented with the problem of synchronizing the release of air pressure on the diaphragm with the rotation of the crankshaft without compromising the diaphragm’s air seal. Tom, being a talented engineer, proceeded to engineer his way out of the problem by designing a mechanically timed valve system with seals to prevent air leaks. But what if he could access the crank’s position without needing a physical connection to the crank? I’d be interested to see what it would do to the design to replace his valve with a servo-actuated valve to release the diaphragm pressure, as well as a magnet on the crank and magnetic sensor nearby.
I believe this would simplify the design by keeping the diaphragm value and crank sensor physically separate, and avoiding using one mechanism to sense the position of the crank as well as release the diaphragm pressure. As I write this however, I realize that my proposed “improvement” would require the addition of a battery to power both the diaphragm valve and crank sensing circuitry. Tom has used hall-effect sensors in another video, so he certainly knows how to use them, so I’m willing to bet that keeping the design entirely mechanical and air powered was a design goal from the beginning.
Dan
I finished the initial version of deep (and light) sleep in CircuitPython, and it’s now merged into the main line in the CircuitPython repo. The API went through a few more revisions over the past week. By the time you read this, CircuitPython 6.1.0-beta.2 will have been released, and will include deep sleep. For now, sleep is only implemented on the ESP32-S2.
Thanks to Scott and @microDev1 for the initial work on deep sleep!
Jeff
This week I published a project guide showing how to control YouTube playback on a Raspberry Pi based on readings from a Bluetooth BLE cadence sensor on a stationary bike. Check out the guide: Raspberry Pi Pedal for Youtube.
Kattni
This week I published the CircuitPython Animated Holiday Wreath Lights guide. This is a holiday themed Adafruit MagTag project involving a NeoPixel strip and LED animations. This build was similar to a previous project I did using a Circuit Playground Bluefruit, (and even uses the same wreath!) but this time the project is controlled by the MagTag. There are three holiday colored LED animations, each activated by a button. It has a lovely set of instructions on the display showing what animation each of the buttons activates. If you’re looking for a quick, easy project to do with your MagTag, check out this guide.
I also began working on a guide that is a new take on Cheerlights. Cheerlights is a project that allows folks to tweet a color, to enable LED projects all over the world to sync to that color. I took it one step further, and instead of simply syncing to that color, the project instead displays a different LED animation in the specified color. It uses the same build as the guide I published this week, and turns Cheerlights into animated holiday fun. Keep an eye out next week for that guide!
Lucian
This past week I’ve been working on PWMOut for the i.MX RT series. It’s been a while since I worked with the toolchains and boards involved, so spinning back up has been a work in progress. I’ll hopefully have more updates on new i.MX features in the coming weeks.
I also spent some time on implementing the DMA peripheral on the STM32 boards as a side project, but unfortunately had little success. DMA (Direct Memory Access) ranges from beneficial to essential for higher performance projects on the STM32s, but it has been fiddly in practice to get working with other peripherals like SPI, outputting mostly garbage data. I’ll be putting it down for now to cool my head but will hopefully revisit at a future date.
Melissa
This past week I finished up the Web Serial ESPTool. I got file writing working on the ESP32 and then added ESP32-S2 support as well. I was able to get it writing in pure JavaScript by using a FileReader class which returns the raw bytes of the file. Once I got uploading working consistently, I cleaned up the UI elements to make it match the existing design and only show the controls once it has connected as well as disabling certain controls while the file is being written. It was a fun project and I feel like I learned a lot more about Web Serial. If you’re interested in checking it out, you can take a look.
Scott
This last week I’ve made a number of small fixes to CircuitPython on the ESP32-S2 with the goal of improving stability and fixing network issues. It was a short week due to Thanksgiving.
I’ve switched gears and am now refining deep sleep under the hood. Deep sleep will usually stop a USB connection. So, if your code deep sleeps when USB is connected, we’ll pretend to deep sleep instead. This allows you to watch what happens over the serial connection and also iterate quickly on your code. I’m refining things under the hood to ensure that our pretending works more similar to a real deep sleep.
Upcoming events!
The PyCode Conference is devoted to the latest trends in the Python language and community, held online December 11-12, 2020 – PyCode.
Virtual Girls Into Coding #6, December 13th: a free event for girls ages 10-14 to explore online coding activities, online robotics, 3D Design, electronics, and physical computing using the BBC micro:bit. This is a fantastic opportunity to use Python (text-based language) and to get some hands-on making time from the comfort of your home – Eventbright.
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 – Limor will discuss how Python is snaking its way into hardware, Linux single board computers and more.
The schedule and tickets are available at lca2021.linux.org.au – Announcement.
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, will 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.
Latest releases
CircuitPython’s stable release is 6.0.0 and its unstable release is 6.1.0-beta.2. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20201207 is the latest CircuitPython library bundle.
v1.13 is the latest MicroPython release. Documentation for it is here.
3.9.0 is the latest Python release. The latest pre-release version is 3.10.0a2.
1918 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.
Job of the Week
Community Game Designer – Hack Club – Adafruit Jobs Board.
You hear a friendly dragon whisper “hack club is cool”. You’re inclined to agree. You find yourself compelled to type the following into your terminal to learn about the open game designer position at hack club: $ ssh jobs.hackclub.com
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.
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.
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.