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 (which is out before this post). Over 9,470 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.
Welcome to the latest Python on Microcontrollers newsletter! We hit two milestones this week in our community, on Discord and Reddit. PyCon US 2022 is coming up soon and Adafruit team members will be there! The Project of the Week goes into numerical precision and there are some wonderful projects in the news and more!
We’re on Discord, Twitter, and for past newsletters – view them all here. If you’re reading this on the web, subscribe here. Here’s the news this week:
34,000 Members Reached on the Adafruit Discord Server
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 34,000 people – thank you so very much! Adafruit believes Discord offers a unique way for Python on hardware folks to connect. Join today at https://adafru.it/discord.
You can see the history of the growth of the Discord – Adafruit Blog.
3,000 Members on the CircuitPython Subreddit
The CircuitPython subreddit on Reddit.com hits the 3,000 members mark! Thank you to our Reddit readers for choosing to get your Python fix on our subreddit – Adafruit Blog.
See the CircuitPython Subreddit – Reddit.
Adafruit Folks Heading to PyCon US 2022 Soon
PyCon 2022 is coming right up from April 27, 2022 – May 3, 2022, which includes the pre-conference Summits, the conference itself, and the Sprints following the conference. Kattni, Melissa and Jeff from Adafruit will be attending this year.
Kattni and Melissa will be attending the Education Summit on April 28th. Kattni will be giving a talk at the Summit called Simplicity and Fun: Learning with CircuitPython. The team will also be hosting a Welcome to CircuitPython mini-sprint.
Kattni, Melissa and Jeff will be attending the conference April 29th through May 1st. They will be hosting Open Spaces every day (time TBD), which will be an introduction to CircuitPython using the Circuit Playground Bluefruit (CPB). The Bluefruit boards will be provided, along with a few other accessories, to enable folks to explore CircuitPython. A quick-start will be available, as well as a series of other examples to delve into. All three team members will be available to help.
Kattni and Melissa will be hosting development Sprints May 2nd and 3rd. This will be two days of helping folks contribute to CircuitPython. There are many GitHub issues available to choose from as a place to get started. Hardware will be available for a significant number of the libraries, so folks will be able to test any library code they intend to contribute. There are plenty of options including bug fixes, library enhancements, and documentation. As well, if you’re new to CircuitPython, they’ll be happy to accommodate that as well.
All relevant content, including slides, the quick-start, and example code, will be available on GitHub – Adafruit Blog.
Raspberry Pi RP2040 Availability
Raspberry Pi founder Eben Upton gives an update on production of the RP2040 processor after another post on microcontroller availability and price – Twitter.
Also see an April 11th interview with Eben – peppe80.
A Command Line Game Designed to Help You Learn Git
Git Gud is a command line game designed to help you learn how to use the popular version control system known as Git! As levels progress, you will know more and more about git, and eventually become a git “grandmaster” – GitHub.
Success and Failure at Pebble
The founder of Pebble, the smart watch company and one of the stars of hardware crowdfunding, writes about the success and failure of the company. This is a good read for anyone looking to market hardware & software – Medium.
Make Maker Book Humble Bundle
Humble Bundle is offering 26 books by Make: at one low price. It includes Getting Started with Raspberry Pi, 4th edition, Getting Started with Adafruit Circuit Playground Express (by your newsletter editor), Getting Started with the micro:bit, and many more – Humble Bundle.
This Week’s Python Streams
Python on Hardware is all about building a cooperative ecosphere which allows contributions to be valued and to grow knowledge. Below are the streams within the last week focusing on the community.
CircuitPython Deep Dive Stream
This week, Tim streamed all about library development, with special guest Kattni.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
CircuitPython Parsec
John Park’s CircuitPython Parsec this past week is on Transparent Sprites – Adafruit Blog and YouTube.
Catch all the episodes in the YouTube playlist.
The CircuitPython Show
The CircuitPython Show is an independent podcast, hosted by Paul Cutler, focusing on the people doing awesome things with CircuitPython. Each episode features Paul in conversation with a guest for a twenty to thirty minute interview – CircuitPythonShow.
The CircuitPython Show returned with a new episode on Monday, April 18th. Alie Gonzalez joined Paul and talked Sparkfun, Alie’s maker journey, and the Miami tech scene – Show List.
TammyMakesThings is Streaming CircuitPython
Community member and CircuitPython contributor Tammy Cravit is streaming on Twitch. Her stream focuses on electronics, coding and making, with a focus on CircuitPython. The first few streams have been working on a MacroPad-based MIDI controller, and she’s got lots of other project ideas in the works. An exact schedule for her streams is still being worked out, but she’s targeting 2-3 streams per week. Check it out and follow now to be notified of future streams – Twitch.
Project of the Week: Testing Math Precision
Doing math operations on microcontrollers, which most often used fixed bit lengths to represent numbers, can result in rounding errors – decimal numbers that are close to the result but not quite right. Twitter user Hide_G took a look at various Python implementations to check this out.
First tested was CPython (standard Python) 3.10.4 and there was a wrong value – Twitter.
Second was MicroPython 1.17 and there was a value issue with many operations – Twitter.
Last was CircuitPython and while all the values checked out, it wasn’t a good result – it’s just an artifact of how CircuitPython prints numbers that makes it look correct! – Twitter.
How to remedy this??
The answer is to use numbers that preserve precision (the decimal module in CPython). For microcontrollers and CircuitPython, there is a uDecimal library by Jeff Epler that gives the correct mathematical answers. If you need accuracy, check it out.
News from around the web!
Native UART support for Raspberry Pi Pico in Adafruit CircuitPython now, so getting MIDI from the Pimoroni RGB keypad to hardware synths is a doddle. A 10 ohm resistor on the Tx pin, and a 33 ohm resistor on the 3v3, and bada bing bada boom – Twitter.
Using a Raspberry Pi Pico and CircuitPython to make a USB keyboard out of an old Apple keyboard – Twitter Thread.
A PCB capacitive touch board with an Adafruit QT Py and CircuitPython – Reddit and imgur.
Pop-Up Particle Pavilion air quality build – Designspark.
Voice synthesis with the AquesTalk Pico ATP3011F1-PU, Adafruit QT Py RP2040 and CircuitPython – Twitter (Japanese).
Simulating a Connection Machines CM-1 blinking displays with CircuitPython and a Raspberry Pi Pico – Twitter.
I used Circuit Python to make a Kindle for my Axolotl using the Pimoroni Badger board (not really a kindle, it uses a one wire temperature sensor to monitor the water) – Twitter and CircuitPython code – GitHub.
Make a chord keyboard with Raspberry Pi Pico and CircuitPython. A chord keyboard is used for entering text single handed. Based on the Cykey keyboard design as used by the Microwriter keyboard – GitHub, YouTube and Raspberry Pi.
PicoCat v2 is a complete redesign of the original opensource Opencat project – Kev’s Robots.
Getting started with Maker Nano RP2040 using CircuitPython: Blinky, RGB LED, and Piezo Buzzer – CNX Software.
Some new die shots of the Raspberry Pi Pico’s RP2040 chip – Twitter.
MicroPython on the ESP32-C3FH4-RGB RISC V board (with a 5×5 NeoPixel matrix on the back) – Twitter.
Making a face-controlled computer with Python – Adafruit Blog, YouTube, and GitHub.
python-escpos – A Python library to manipulate ESC/POS printers, such as compatible thermal and dot matrix printers – GitHub.
Monitor a website with Python on Raspberry Pi – Adafruit Blog and PiMyLife.
Using Python to making accurate building data from satellite images – GitHub.
20 cool things you can do with Python built-in functions – Twitter.
Python News: What’s New From March 2022 – Real Python.
RegExr is an online tool to learn, build, and test Regular Expressions (RegEx / RegExp) – regexr.com via Twitter.
PyDev of the Week: Mirko Galimberti on Mouse vs Python
CircuitPython Weekly Meeting for April 18, 2022 (notes) on YouTube
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? CircuitPython Libraries.
Coming Soon
The ESP32-S3 has native USB like the S2 and adds a dual core Tensilica processor, WiFi AND BLE plus extra SRAM, so it’s a great upgrade. Adafruit worked it into a QT Py format which will make for great little IoT projects – Adafruit Blog.
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 there were no new boards added, but several are in development.
Note: For non-Adafruit boards, please use the support forums of the board manufacturer for assistance, as Adafruit does not have the hardware to assist in troubleshooting.
Looking to add 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!
Doomscroll and Chill – A Wireless BLE Scroll Wheel Remote from Liz Clark
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 channels 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 351!
Updated Libraries!
Here’s this week’s updated CircuitPython libraries:
- Adafruit_CircuitPython_DisplayIO_Layout
- Adafruit_CircuitPython_EMC2101
- Adafruit_CircuitPython_BLE_Apple_Notification_Center
- Adafruit_CircuitPython_AdafruitIO
- Adafruit_CircuitPython_CircuitPlayground
- Adafruit_CircuitPython_BMP280
- Adafruit_CircuitPython_RSA
- Adafruit_CircuitPython_MotorKit
- Adafruit_Blinka
- CircuitPython_Community_Bundle
What’s the team up to this week?
What is the team up to this week? Let’s check in!
Dan
I am working on a number of issues to improve CircuitPython reliability:
- NeoPixel timing on SAMD51 and possibly some other chip families could use tuning. Sometimes the first NeoPixel in a string gets the wrong color. There are multiple parts used for NeoPixels: WS2811, WS2812B, SK6812, and perhaps some others. They have slightly different timing requirements. Each NeoPixel regenerates the timing when passing on data on its output line, so we can observe the timings each kind of NeoPixel likes best. I am measuring the timings on multiple kinds of NeoPixels with my Saleae, adjusting the delays, and re-testing.
- ESP2-S2 I2C is showing long delays (10ms) between transactions, but only at 100 kHz I2C bus speed. Increasing the speed even only slightly removes the long delay. The delay seems related to the FreeRTOS tick interval used in the ESP-IDF.
- ESP32SPI WiFi can fail after a few minutes of intense use when used with the
PortalBase
library. It does not appear that that the library is doing anything wrong, but it is more complicated that using the base ESP32SPI library, which does not fail after many hours of trials. We need to figure out what is different about how the libraries are doing WiFi.
Jeff
I wrote a visualization tool that shows the information stored on a floppy disk. It can be a tool to help understand, at a high level, the structure of floppy disk formats. This image shows a Commodore 1541 floppy disk image, as mastered by fluxengine. You can check out the software on GitHub or on PyPI.
Kattni
This week I finished up the asyncio
template and deployed it into the Feather ESP32-S2 guide. I published the QT Py Charger BFF guide. I updated a few miscellaneous things that needed updating – board revisions, etc. And finally, I finished up the Feather ESP32-S3 guide. It’s almost identical to the Feather ESP32-S2 guide, with a few tweaks to the Pinouts page and a couple of Arduino pages, and additional information added to the Downloads page. If you picked up one of these boards, check out the guide!
Melissa
This past week, I finally had my changes to make use of LittleFS and ESPTool as NPM packages updated in the WipperSnapper Firmware Uploader. This tools will eventually be integrated into the Adafruit IO dashboard itself and this change was an important step in that it cleaned up a lot of the code and also showed proper implementation and tested that it worked.
I also started working on implementing a new MIPI driver for Raspberry Pi Displays. The current FBTFT driver has had issues with each new release of Raspberry Pi OS and this will allow for a more universal driver that should be more stable.
Tim
I continued my tinkering with “inflated” TileGrids from last week. These will allow us to use small 3×3 sprite sheets and generate larger sized TileGrids from them by repeating the middle row and column tiles as needed to reach the desired size. The initial use-case I have in mind for this is a new TabLayout displayio widget but I think the functionality will end up having many other nifty uses for displayio based graphics.
As part of my work on this, I dove into the core code for TileGrid and started working on an enhancement to allow the bitmap to be changed after the TileGrid is created, in the TabLayout this will be used to visually differentiate “active” and “inactive” tabs. This week we’re having a CircuitPython Library focused edition of the Deep Dive stream, we’ll be joined by special guest Kattni to discuss all things related to Library development.
Liz
This past week I wrapped up the Doomscroll and Chill – a Wireless BLE Scroll Wheel Remote Learn Guide. I think folks will find it to be a good resource for using the scroll wheel as an HID shortcut interface. Next, I will be working on a controller for the classic game Glider. It will involve an actual paper airplane. I’m also going to begin exploring laser harps.
Upcoming events!
Vintage Computer Festival East this weekend, April 22, 23, 24. Wall, New Jersey US. The annual can’t-miss event for anyone who has even a passing interest in vintage computers – VCF.
The next MicroPython Meetup in Melbourne will be on April 27th – Meetup. See the slides of the March 23rd meeting.
PyCon US 2022 planning is underway. The event is in-person with an online component. April 27, 2022 – May 5, 2022 in Salt Lake City, Utah USA. Head over to the PyCon US 2022 website for details about the conference and the schedule (new) – PyCon Blog.
PyCon Italia is the Italian conference on Python. Organized by Python Italia, it is one of the more important Python conferences in Europe. With over 700 attendees, the next edition will be June 2-5, 2022 – Ticket Registration.
SciPy 2022, the 21st annual Scientific Computing with Python conference, will be held in Austin, Texas, USA from July 11-17, 2022. The annual SciPy Conference brings together attendees from industry, academia, and government to showcase their latest projects, learn from skilled users and developers, and collaborate on code development. The full program will consist of 2 days tutorials (July 11-12), 3 days of talks (July 13-15) and 2 days of developer sprints (July 16-17) – SciPy 2022.
EuroPython 2022 will be held on 11th-17th July 2022 and it will be both in person and virtual. The in-person conference will be held at The Convention Centre Dublin (The CCD) in Dublin, Ireland – EuroPython 2022.
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 Twitter with hashtag #CircuitPython or email to cpnews(at)adafruit(dot)com.
Latest releases
CircuitPython’s stable release is 7.2.5 and its unstable release is 7.3.0-beta.1. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20220416 is the latest CircuitPython library bundle.
v1.18 is the latest MicroPython release. Documentation for it is here.
3.10.4 is the latest Python release. The latest pre-release version is 3.11.0a7.
2,940 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 – 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, Micro Center, Raspberry Pi and more.
Job of the Week
Chained LED Panels for Theater Supertitles – Maker and Coder needed – Performance Space New York – Adafruit Jobs Board.
ICYMI – In case you missed it
Python on hardware is the Adafruit Python video-newsletter-podcast! The news comes from the Python community, Discord, Adafruit communities and more and is broadcast on ASK an ENGINEER Wednesdays. The complete Python on Hardware weekly videocast playlist is here. The video podcast is on iTunes, YouTube, IGTV (Instagram TV), and XML.
The 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.
Codecademy “Learn Hardware Programming with CircuitPython”
Codecademy, an online interactive learning platform used by more than 45 million people, has teamed up with Adafruit to create a coding course, “Learn Hardware Programming with CircuitPython”. The course is now available in the Codecademy catalog.
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 the Adafruit Discord or post to the forum if you have questions.