ICYMI (In case you missed it) – Yesterday’s Python on Microcontrollers Newsletter from AdafruitDaily.com went out.
If you missed it, subscribe now! – You’ll get one fab newsletter each Tuesday (before this post the next day). Over 7,840 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. On with the show:
It’s here! The latest Python for Microcontrollers newsletter is 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 this week:
Happy Tuesday! 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.
HackSpace Magazine Issue 31 is out now
HackSpace Magazine, published by the Raspberry Pi Foundation, is out, full of DIY, Smart Home, and Internet of Things goodness. Some content relating to Python on microcontrollers:
- Meet The Maker: Liz Clark, an accomplished CircuitPythonista
- Liz’ BLE (Bluetooth Low Energy) synthesizer – Adafruit Guide
- Drawing graphs with CircuitPython
- The Pimoroni Enviro+ FeatherWing has an accompanying CircuitPython library
Last Wednesday night: HackSpace editor Ben Everard talked to Ladyada and PT on the Adafruit Show and Tell! – YouTube.
Virtually Maker Faire was held May 23rd
Make.co sponsored Virtually Maker Faire on May 23rd. This online gathering primarily featured Makers responding to COVID-19. 24 hours of presentations, workshops, demos, and exhibits were held across all time zones. Adafruit had a strong presence:
Adafruit Team Member Presentations:
- Hand Wash Timers with MakeCode and CircuitPython by John Park – YouTube and Periscope
- Electronics + 3D Printing for Covid-19 with Noe and Pedro Ruiz – YouTube
- DIY Electronics for Costumes & Art Projects by Erin St. Blaine – Maker Faire
Microsoft Trains OpenAI to Write Python Code
At Microsoft Build last week, a discussion on using the Microsoft supercomputer to train OpenAI on thousands of Open Source GitHub repositories. The data set is used to help programmers generate Python code – Periscope, YouTube and Twitter.
See the entire Microsoft Build video list – Periscope.
Automate testing in multiple Python environments with Nox
Nox is an open source command line tool that automates testing in multiple Python environments, similar to tox. Unlike tox, Nox uses a standard Python file for configuration. For each session, Nox will automatically create virtualenv with the appropriate interpreter, install the specified dependencies, and run the commands in order – Website, Tutorial and GitHub.
A new version was released on May 24th – Changelog.
A CircuitPython Altitude and Heading Reference System (AHRS) Library
Mark Komus has contributed a CircuitPython library to perform Altitude and Heading Reference System (AHRS) calculations. AHRS takes an accelerometer, gyroscope and magnetometer and combine the data to create orientation data. While previous implementations had been in Arduino (Adafruit Library), this one is written in CircuitPython for fast microcontrollers.
Translating CircuitPython is now easier than ever and you can help!
One important feature of CircuitPython is translated control and error messages. This week, our community has contributed full translations into German and Dutch and started on Czech.
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.
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
Adafruit has started shipping regular (non-emergency) orders after priority orders are filled.
Note: there may be a number of out of stock items as manufacturing was disrupted. Adafruit suggests if an item is out of stock and needed, searching at resellers may yield stock. In the US, Digi-Key is suggested.
News from around the web!
A hand-wired USB & Bluetooth keyboard powered by CircuitPython – GitHub.
chess-clock is a CircuitPython library for creating and controlling a chess clock – GitHub.
Trinket Trigger is the simplest of Eurorack modules! Only 8 components, including connectors, but it gives you capsense touch control of a CV and a gate (albeit at 3v3). All controlled by an Adafruit Trinket M0 and CircuitPython – Twitter.
The first Snekboard PCBs have made their way to the creator. In a project update, Keith lays out the last few steps needed before shipping the LEGO®-ready, CircuitPython-capable controllers to backers – Twitter and Crowd Supply.
MicroPython Developer Workflow in VS Code – Phixed.
New on Tindie from Omzlo in Greece comes the FIDI board. It is billed as a small development board running Adafruit’s CircuitPython, featuring 6 terminal block connectors and a qwiic connector, designed for fast prototyping. It runs on the ATSAMD21 microcontroller, a 32-bit Arm Cortex M0+ clocked at 48Mhz, as found on many popular Arduino-compatible boards. FIDI is also stated by the developer to be derivative of Arturo182’s SERPENTE board (but not affiliated) – Tindie and Twitter.
The highly anticipated pairing of the Giant Board (Linux in a Feather form factor which runs Python/CircuitPython) and the Keyboard FeatherWing from Arturo182 may be very close to being possible – Twitter.
A greenhouse irrigation system with MicroPython and Pycom – DesignSpark.
A Guide to Concurrency in Python with Asyncio – integralist.
A few scripts for testing the SIM7000E cellular module with Python – GitHub.
Null in Python: Understanding Python’s NoneType Object – Real Python.
How to Deprecate a PyPI Package – Dampfkraft.
A guide to Graphical User Interfaces (GUI) for Python – The Hitchhiker’s Guide to Python.
MSS – an ultra fast cross-platform multiple screenshots module in pure Python using ctypes – GitHub.
PyDev of the Week: Cristi Vlad on Mouse vs Python
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Fifty Single Board Computers are now Blinka Compatible.
Coming Soon in CircuitPython Pull Requests
Framebufferio: Set ground work for smart LEDs as “framebuffers” – GitHub.
Add, demonstrate use of new background task list functionality – GitHub.
tools: Allow specific boards to be built “monolingual” – GitHub.
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:
- 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!
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 an eye out here 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 230!
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 updated download stats coming soon!
What’s the team up to this week?
What is the team up to this week? Let’s check in!
I’ve started to work on using the bleak Python library for to implement _bleio on host computers, analogous to how Blinka emulates native CircuitPython on host computers. Bleak uses Python asyncio, which complicates how it can be called from regular synchronous CircuitPython code. I’m studying up on asyncio and a number of helper libraries.
It was a long time coming, but the guide was finally published for the PyGamer MP3 Player, affectionately known as JEplayer. CircuitPython has been able to play MP3s since the release of version 5, but somehow we never released a guide about it.
JEplayer is a bit complex, so it’s fortunate that another guide was published this week for MP3s on CircuitPython (and Arduino) that is more tutorial oriented: Daily Cheer Automaton. Check that guide out also if you want to add MP3 playback to your CircuitPython projects without the need for a special MP3 decoding chip.
This week, I’ve been working with LED animations using the Adafruit CircuitPython LED Animation library. The library is designed to make displaying LED animations super simple, from blinking, to sparkles, to comets and more. Between pixel mapping and animation groups working with pixels in a matrix or other shape, or multiple groups of pixels, like two connected matrices, is a breeze.
Initial testing showed that the way the library was written made it of limited use on the SAMD21 M0 boards, which includes the ubiquitous Circuit Playground Express. So, over the weekend, we worked on a complete refactor of the library to split every animation into its own module making it significantly more modular. The changes were successful – it’s at least possible to run all but one of the animations individually on the CPX. Further testing is necessary to determine all of the limitations, but it’s much better than it was. We now have a solid API and all additions moving forward will follow it.
Now I am working on an LED animations guide that covers many of the features of the LED Animation library. The guide covers how to use the library overall, the basic, sparkle and rainbow animations, and using the pixel mapping and grouping helpers. It’ll include a link to the API documentation in case you want to take it further.
Along the way, I am finding a few bugs and things we missed during the refactor, which is always an added bonus of having the opportunity to test something thoroughly.
This past week I’ve been working on the internals of pin management and busio on the i.MX chips, whittling away at the issues list on Github. The i.MX had some tricky aspects to this – the SDK for the chip doesn’t really have an appropriate “reset pin” function, so keeping reset states consistent with startup required storing in the default states of each pin from the datasheet so they could be restored on reset. I’ve been working on other miscellaneous improvements to the i.MX busio module, and reading about the timer peripherals in anticipation of implementing Pulsio.
Over the weekend, I took some time to work on a personal project of mine, support for a type of motor called the Dynamixel. I’ve been big fan of these motors ever since I used them back in college – they’re easy to manage for more complicated robotics projects and have a lot of built in “checks” to keep them from breaking under stress. I’ve put together a CircuitPython library for using the motor (a bit unpolished at the moment) which I’m hoping to submit to the community bundle next week.
To test it out, I tried it on a simple robot I’m calling Hermie (for hermit crab). It’s not too sophisticated yet… but we’ll see where it goes.
This week I finished up a couple of small projects including adding an uninstall option for the script that installs PiTFT drivers on the Raspberry Pi. Some of the guides warn the user that they must not have Kernel Level drivers in order to use displays with the Raspberry Pi, but there wasn’t actually a guide that told them how to do it. Now they can easily do it by choosing an uninstall option.
One of the reasons for adding this option was to lay the groundwork for adding displayio to Blinka so that displayio scripts can be run on the Raspberry Pi. It ended up being a bigger project than I initially thought, but I’ve been working my way through it. Hopefully I’ll have something more concrete to show off next week.
At the end of last week I polished up the initial ESP32S2 CircuitPython work – YouTube Early this week it was merged in! I quickly followed that up with a PR to finish up
digitalio. It’s ready to merge so it’ll be in shortly.
Next, up is
busio which includes I2C, SPI and UART support. This one module is used to support most of the sensors sold by Adafruit and will unlock many projects.
The HydPy May Meetup will feature Ayan Pahwa speaking about Programming Microcontrollers using CircuitPython. It is scheduled for May 29, 2020 from 17:00 – 18:00 (GMT+5:30) – meetup.
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 or events that may occur in the future, please let us know on Discord or on Twitter with hashtag #CircuitPython.
20200523 is the latest CircuitPython library bundle.
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.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 19,868 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.
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. Join our Discord or post to the forum for any further questions.