View this email in your browser.
2021 is almost here, and with that is 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. What’s new:
CircuitPython 6.0.1 Released
CircuitPython 6.0.1, the second 6.0.x stable release, was made available yesterday. This release fixes regressions in BLE and FrequencyIn() that prevent these functions from operating properly. The release also includes a considerable speedup in JSON parsing. Note that the CircuitPython team recommends the latest pre-release for ESP32-S2 based boards such as the MagTag. The stable release is best for SAMD, STM and nRF boards.
See the details on GitHub.
PyCon US 2021 Call for Proposals
PyCon US 2021’s Call for Proposals has officially opened for talks, tutorials, posters, and charlas.
With the decision to hold PyCon US 2021 virtually, it will be quite a bit different. The plan is to provide a platform for community members to share their knowledge with those attending the event. During this unique year, presenters are asked to pre-record their session and be available online during their sessions to engage with the attendees via chat. This will eliminate the challenges of internet quality, timezones, and logistics of providing a full schedule over multiple days.
Please make note of the important deadline for submissions: All proposals are due February 12, 2021 – PyCon US 2021
The Component Storage System
The Ultimate Component Storage System is a unique solution for organizing and storing electronic components. The custom software allows for cataloging of components with a built-in search function to gain quick access to specific components. LEDs above each drawer are used to indicate the position and status of individual, or a group of, components. Coded in Python on a Raspberry Pi 4B.
Details and Code – GitHub. Article and Guide – Instructables.
PortablePy: The Clamshell MicroPython Computer
Ramin Assadollahi haas built several portable programming devices. This is the latest: a clamshell design using an Adafruit PyPortal Titano for the beautiful screen and processor, while using an M5Stack I2C QWERTY Keyboard. The case is 3D printed, with files on Thingiverse – Ramin Assadollahi via MicroPython Forum.
CircuitPython Deep Dive Stream with Scott Shawcroft
Scott, lead developer on CircuitPython, was on vacation last week. Deep Dive will return shortly.
You can see the 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+.
Shop Adafruit now
Python Software Foundation Surpasses Fundraising Goal
The PSF posts – Python.org via Twitter.
The Python community is the best! Because of you, we’ve smashed our goal of raising $60K! Thank you, thank you! Be sure to check out the participating companies products and services – here. Special offers end on Dec. 31st.
News from around the web!
How to build a set of playable Duck Hunt Christmas ornaments using a couple of CircuitPython boards from Adafruit – sudomod via Twitter and a demo – YouTube.
Make a dashboard for your PurpleAir air quality sensor with an Adafruit MagTag e-ink display – Twitter and GitHub.
A remix of the Fortnite boogie bomb from The Ray Gun Project using an Adafruit PropMaker FeatherWing plus a Feather M0 Express to run audio and NeoPixels with CircuitPython – Twitter.
PaperTTY – a Python module to render a TTY or VNC on an e-ink display – GitHub.
Circuit Playground Express Holiday Jukebox – GitHub and YouTube.
CircuitPython with the Adafruit QT Py and Seeedstudio Xiao – YouTube via Twitter.
A window blinds bot with CircuitPython – it opens the blinds for the plants during the day and then closes them at night – Twitter.
An Adafruit MagTag eInk Tweet Display – Twitter.
A low cost lobot! Cardboard, led strip and a bit of CircuitPython code, all ready for my brother in law’s 50th birthday Zoom party – Twitter.
How to use the BLE multi-sensor board with ISP1807 in CircuitPython (Japanese) – SwitchScience Magazine via Twitter.
Some computational word tinkering. Loosely based on a John Park quote scroller. Displays mad-libs style generative language, pulled from lists of inputs from an IoT dashboard on the Adafruit Matrix Portal. Only the one sentence structure so far, more to come – Twitter.
MicroPython appears to have been ported to freedos, an MSDOS 5 clone – Twitter.
A simple Python game with a micro:bit and an OLED display – blogmywiki and YouTube.
Creating a digitizer that works in absolute coordinates with CircuitPython – Twitter (Japanese).
Controlling holiday lights with a Raspberry Pi Zero and Python – Twitter.
SymPy is a Python library for symbolic mathematics. It aims to be a full-featured computer algebra system (CAS) while keeping the code as simple as possible in order to be comprehensible and easily extensible – numfocus.org via Twitter.
Simulating the Pandemic in Python, a Step-by-Step Data Science Project – Toward Data Science via Twitter.
The Python String .format() Method (video tutorial) – Real Python.
Linux 5.11-rc1 is out, with lots of changes including additional system on a chip (SoC) support – lwn.net via Twitter.
PyDev of the Week: Amanda Sopkin from Mouse vs Python
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Open Book ESP32-S2.
Desk of Ladyada discusses design of an ESP32-S2 based CLUE (micro:bit form factor) board – YouTube
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.
With the holidays, there were no new boards added, but there are some in development.
Looking for adding a new board to CircuitPython? It’s highly encouraged! Adafruit has four guides to help you do so:
New Learn Guides!
Deep Sleep with CircuitPython from Dan Halbert
DotStar Fortune Necklace with Bluetooth and Touch from Charlyn G
MagTag AR Tarot Card Reading from Trevor Beaton
Adafruit MagTag Kitchen Timer from Dylan Herrada
Using Weird Displays with Raspberry Pi from Phillip Burgess
Updated Learn Guides!
Customize the Streams on the DIY lofi radio (ft. Baby Yoda) from Jeff Epler
PyPortal Twitter Viewer from Dave Astels
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 288!
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!
This week my time was primarily spent on the LTR390 UV and ambient light sensor from Liteon. This little fellow allows you to take measurements across a wide band of the UV spectrum, from approximately 275nm to 400nm, with the bulk of its sensitivity from 300-350nm. This range of the light spectrum includes both UVA, which is associated with skin aging, and UVB which is associated with getting a sunburn. Neither is good for your skin and both are associated with various skin cancers due to the damage they do the the DNA in your skin cells. Keeping your skin safe from excessive UV exposure by staying out of the direct sun, wearing sunscreen and sunglasses, and even a wide brimmed hat can help keep you safe. And for Blinka’s sake, don’t use a tanning bed.
With that said, UV light isn’t all bad. It’s important to get some exposure to sunlight as UV light is necessary for the production of vitamin D, which helps with the absorption of calcium and phosphorus, which is required for proper bone development. Owners of reptiles such as bearded dragons provide their scaly little friends with UV light fixtures to keep them from getting floppy bone disease (it’s a technical term, look it up).
All this is a long way of saying that it can be useful to be able to measure UV light. Most weather sites will report the UV index for various parts of the day, however if you’re the DIY type, something like the LTR390 will allow you to measure it yourself.
A few regressions from 5.3.1 were reported in the CircuitPython 6.0.0 release. I have fixed those bugs, which were in _bleio and frequencyio. We are planning for a 6.0.1 December 28th.
I’ve also been working on issues that need to be fixed before we release 6.1.0 as a stable release. Most of the functionality we want is now there, including deep sleep, but we need to clear the issue queue. Scott just finished pin alarms. I’ll be revising the Sleep guide to include that new functionality.
I fixed a couple of problems with displayio rendering that were encountered on the MagTag, including incorrect transparent colors and a crash.
This week was a short week for me. Around a couple of meetings, I went through all of the MagTag guides and added a warning regarding updating CircuitPython and any necessary libraries. There was a huge refactor of the MagTag library, and folks are running into issues with running project code because they’re either missing some libraries, or running older versions with newer versions, etc. This warning links to the definitive library list and the latest version of CircuitPython for the MagTag. In that process, I identified some out of date information in those guides related to the refactor, and contacted the guide authors to get that info fixed up. The MagTag guides should all be good to go within the next couple of days!
This past week I worked on refining the ESP32-S2 API for the TCP server features, and running tests to confirm they can send and receive data from other machines (like your PC) on a local network. I’ve also been working to bring the Socket API closer to CPython overall in terms of error behavior, since there are currently some discrepancies that mess up certain libraries. Besides sockets, I’m working on a guide for the MagTag, creating a language learning flashcard program that uses the new PCF fonts for international characters.
This past week, I spent on several different activities. I found and fixed a bug related to text wrapping in the display text library. It took a few attempts to get the fix just right because we kept finding more types of text that were not wrapping correctly.
I also worked on porting over the MatrixPortal library to use PortalBase which went very smoothly. I started working on the PyPortal library as well, but ended up running into stuff where it wasn’t quite as modular as I had thought and am currently working on figuring out the best solution.
After that, I worked on closing a bunch of different Blinka related Pull Requests and Issues, while also working on the WebSerial ESPTool.
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.
The schedule and tickets are available at lca2021.linux.org.au – Announcement.
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.
CircuitPython’s stable release is 6.0.1 and its unstable release is 6.1.0 Beta 2. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20201225 is the latest CircuitPython library bundle.
v1.13 is the latest MicroPython release. Documentation for it is here.
3.9.1 is the latest Python release. The latest pre-release version is 3.10.0a3.
1,954 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 26,352 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.
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
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.