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,365 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.
Happy Solstice! It’s time for 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!
ALICE the Robot learns to grip with CircuitPython
ALICE is a Kinect controlled FPV mini-mech. Her creator, Scott, is teaching ALICE to finally get a grip.
Powered by CircuitPython on Adafruit Feather – Twitter
The December 2020 release of the Python extension for VScode is out
The December 2020 release of the Python extension for VScode is out.
This release closed 13 issues and includes:
- Extract method and variable code actions with Pylance
- Pylance insiders program
- Ipywidgets support in Native Notebooks
GitHub now supports MOV and MP4 video
GitHub now supports MOV and MP4 with a maximum size of 10Mb. Being able to share screencasts, wiring, step by step, and use video in documentation is something Adafruit does wherever they can, and now it’s part of GitHub. With video now part of GitHub, Adafruit will be able to document better, share more, and have more content that helps people.
Communities can also use video to tell their story, maximize social coding together, and really enhance anything that is on GitHub – Adafruit Blog
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott streams his work unboxing and ESP32-S2 Bug Hunting.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
Adafruit is stocked and shipping orders!
Need a last minute gift? An Adafruit Gift Certificate is always welcome and available fast – Adafruit.
Or perhaps your Internet of Things is growing? An Adafruit IO+ subscription is a great bump in capability and extras – Adafruit IO+.
Brain interpretation of code
To the brain, reading computer code is not the same as reading language. Neuroscientists find that interpreting code activates a general-purpose brain network, but not language-processing centers. The two programming languages that the researchers focused on in this study are known for their readability — Python and ScratchJr – MIT News.
News from around the web!
A boot manager for the Adafruit MagTag – choose between many project from the Adafruit Learning System. With a little bit of CircuitPython in code.py, holding a button and turning on select one usage of the connected eInk display – Twitter and GitHub.
WIP: Fortnite boogie bomb from RayGunProject for my 8 year old niece with an Adafruit Feather M0 Express + PropMaker FeatherWing. It lights! It will sound! Now to work on code in CircuitPython! – Twitter.
Designing the ESP32-S2 Open Book – Twitter.
Analog panel meter clock using CircuitPython and the new FeatherS2 by Unexpected Maker. It syncs with WorldTimeAPI on boot and every 12 hours – Twitter.
The new Reclaimer Labs STM32WB Feather board with Bluetooth – Reclaimer Labs.
Tweaking the bootloader from the PCA10056 to get CircuitPython running on the MS88SF2 module, which uses an nRF52840 – Twitter.
A short guide explaining how to use the Pimoroni Enviro+ FeatherWing with the Adafruit Feather NRF52840 Express. It includes a few tips on soldering, a summary of pins used, how to workaround issues in a library and some ideas for further work – Instructables.
A battery powered musical chime set, loosely inspired by the Ye Merry Minstrel Caroling Christmas Bells. Built with a black walnut stand using copper tubing, 3D-printed hangers and controlled by an ESP32 running MicroPython – GitHub.
MicroPython micro:bit Talking ML – Twitter.
Block-based programming: does it help students learn? – Raspberry Pi Blog.
Python vs C++: Selecting the Right Tool for the Job – Real Python.
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? CircuitPython Getting Started Guide for Sony Spresense.
PyDev of the week: Martijn Faassen on Mouse vs Python
BluePhage Express, a Bluetooth keyboard controller for use with CircuitPython/KMK, QMK, and ZMK – Reddit.
New boards based on the ESP32-S2 running CircuitPython from arturo coming soon – Twitter
Stage working on the TinyPICO V2 Play Shield prototype using MicroPython – 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, no new boards were added but several are being worked on.
Looking for adding 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!
Ten amazing new, open source guides featuring CircuitPython, in the Adafruit Learning System this week!
Updated 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 286!
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!
This week, I’ve been working with the SCD30 from Sensirion: a NDIR (Non-Dispersive InfraRed) C02 sensor module with temperature and humidity measurements provided by an additional onboard sensor. As previously discussed, this NIDR sensor is basically an optics lab that you can carry in the palm of your hand! Some cursory search suggests that CO2 sensors tend to cost anywhere from around $100 to as much as $1000 or more. While the final price of the Adafruit SCD30 offering will depend on the costs associated with offering it for sale, It’s likely that it will cost significantly less than the $100 price point. As always, I’m excited to see what new and interesting uses the Adafruit community will find for the SCD30, especially given the role CO2 plays for living things.
CO2 level is often used as an indirect measure of air quality, since buildup of CO2 within an environment will happen when there is poor ventilation of a space, and the waste CO2 produced by humans collects instead of being removed. With poor ventilation, other airborne hazards will also build up to potentially dangerous levels. Mold, carbon monoxide, air pollution from cooking, and most importantly dog flatulence and cat litter box stink are generally not things that you want to be breathing in. Air quality and ventilation are especially relevant now given what is known about the COVID-19 transmission risks associated with indoor spaces.
As a personal project, I’m hoping to use the SCD30 to measure how the CO2 levels in my Dubia Roach enclosure change over time, with the intent to use it as a proxy for the metabolism of the colony as a whole. I’ve considered attaching small masks to the roaches to measure metabolism directly, however that approach seems challenging and given the availability of the SCD30, perhaps not necessary for now.
I finished implementing persistent memory that is maintained during CircuitPython deep sleep. This has been merged into the main branch. I’m finishing up a guide to sleep and alarms: it just needs a few demo videos. I will be reviewing and testing Scott’s support for pin alarms soon.
There were some BLE regressions in 6.x CircuitPython, so I’ll be debugging these over the next few days.
Jeff and I worked on getting the CircuitPython code base to compile with the latest ARM gcc toolchain, which is now based on gcc 10. There were some changes in what’s done for certain optimization levels, and we had to tune these settings to avoid overflowing flash on some builds. There is also improved error-checking in gcc 10: it detected some code bugs that we have fixed.
I had a couple of guides published in the Learn system last week. While there’s only a little Python in it, I’m most excited about the diy lofi hip hop raspberry pi radio with braincraft hat.
Another big development is the addition of support for “pcf” format fonts to adafruit_bitmap_font. These fonts load several times faster than “bdf” format fonts, and are also somewhat smaller on disk.
This week I added the QT Py to the CircuitPython Essentials guide. A lot of basic CircuitPython examples rely on the D13 LED, which isn’t present on the QT Py hardware. So for those examples, I included a wiring diagram showing how to wire up an LED to the QT Py, and updated the examples to include code for the external LED. Everything worked as expected except the Storage example, which fails to work on the latest CircuitPython, 6.1.0-beta.2. I filed a bug for that, but the issue may be a feature, and we may have to reconsider how we do that example for the future. We’ll find out!
This past week I’ve been working on the TCP Server API, implementing the Socket functions Bind(), Listen() and Accept() and corresponding test programs. These functions are used when creating a server on the ESP32-S2, which can accept connections from other devices and return data to them.
I’ve found a number of resources useful while working on the socket API, but none more useful than Beej’s Guide to Network Programming. To anyone looking to understand more about what’s going on with the ESP32-S2 network development, it’s an informative (and entertaining) place to start.
Outside of sockets, I’ve been continuing to prowl around other bugs on the ESP32-S2 core modules, including continuing issues with Analog and the NeoPixel. While we’ve gotten important fixes in, such as the memory leak in the AnalogIO code, we’re still seeing some issues reported, so I’ll be tackling those this week as well.
This week, I finished up the Web Serial ESPTool and wrote up a guide page for using it. Web Serial ESPTool is an online tool that uses Web Serial to directly communicate with the ESP chips without needing to install any additional software besides the chrome browser. You can find the guide page in our MagTag guide or Metro ESP32-S2 guide.
After that was finished, I wrote up a guide on creating new projects for the MagTag. The guide goes through the different layers and a couple of code examples including one that uses deep sleep. You can find the guide here.
This week, I’ve been wrapping up pin level alarms. It’s mostly working but there are some weird bugs. I made a PR to get other eyes on it. After this I’m taking a break from the S2 features, may tackle some bugs or experiment with new things of interest. It should be a fun next few weeks amongst the holidays. I hope everyone has a good holiday season.
On January 1st, we’ll launch #circuitpython2021 where we hope to hear from all of our community members about what you’d like to see CircuitPython do. We’ll all post as well. So, start brainstorming what 2021 can bring to making things with CircuitPython.
Python Pizza New Year’s Party, Remote @ home. Countdown edition on 31 December 10:00 (your time) – Python Pizza is a micro conference organized by the Python Hamburg Community. Submit your 10-min talk idea, it can be about anything UNBORING you want to share this New Year’s Eve with the community! Call For Proposals must be in by 25 December – Python Pizza.
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.
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.
20201221 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
Director of Resource Development – Python Software Foundation
The PSF is seeking to hire a Director of Resource Development to spearhead fundraising and sponsorship efforts! They are accepting resumes through January 14th, 2021 – Adafruit Jobs Board.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 26,263 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.