View this email in your browser.
On this last day of November, with fallen leaves and snow in Northern latitudes and sun in Southern ones, here is the latest Python on 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.
Cooperative Multitasking Added to CircuitPython 7 Beta
Cooperative multitasking is now in CircuitPython 7.1.0-beta, using the
asyncio library and the
await language keywords. The
asyncio library is included with CPython, the host-computer version of Python. MicroPython also supplies a version of
asyncio, and that version has been adapted for use in CircuitPython – Adafruit Learning System Guide.
Gom Jabbar from Dune with Raspberry Pi
Recreate the pivotal Gom Jabbar scene from Dune using a Raspberry Pi, ultrasonic sensor, a servo, and a bit of Python code! – Instructables, GitHub and YouTube.
A Native, Full-Featured Raspberry Pi Pico BASIC Interpreter
The PicoMite is a Raspberry Pi Pico running the free MMBasic interpreter. MMBasic is a Microsoft BASIC compatible implementation of the BASIC language with floating point, integer and string variables, arrays, long variable names, a built-in program editor and many other features.
MMBasic includes communications protocols such as I2C or SPI to get data from a variety of sensors. Data can be saved to an SD card and displayed on color LCD displays. Measure voltages, detect digital inputs and drive output pins to turn on lights, relays, etc. All from inside this low cost microcontroller.
The PicoMite firmware is totally free to download and use – Geoff’s Projects, Hackaday, GitHub Source.
CircuitPython Deep Dive Stream with Scott Shawcroft
Scott was not on this past Friday due to the US Thanksgiving weekend. Catch his latest broadcast this coming Friday at 2 PM Pacific Time, 5 PM Eastern US Time, 10 PM London and 11 PM CET.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
Python Developers Survey Last Chance
A heads up that the Python Developers Survey will be concluding in the coming week. The more diverse the response base, the better, so please help share the link this week as well to regional communities. The survey takes about 10-15 minutes to fill out – Survey.
Give back to Python by pitching in to the PSF’s last fundraiser of 2021 on Giving Tuesday and beyond
PSF would love for you to be part of the big plans they have for 2022. You can join their end of 2021 fundraiser and Giving Tuesday in two ways:
Awesome CircuitPython Updates
With help from Paul C, the community is revitalizing the Awesome CircuitPython repo. Community members are invited to review the Awesome CircuitPython page and suggest additions/changes like articles, podcasts, etc. via Pull Requests or noting in an Issue – Awesome CircuitPython.
CPython (Stock Python) Compiled for the Browser
Running CPython in a browser using Web Assembly (WASM) – Twitter Announcement and GitHub.
News from around the web!
Parse WiFi Packets with Monitor Mode in CircuitPython on ESP32-S2 – YouTube via Twitter.
Fire animation in CircuitPython by using two simplex noise functions to modulate hue and brightness – Twitter Thread and GitHub.
Use a 3D printed vinyl record stand as laminated pinout holders – Twitter.
ampule – a tiny HTTP server made for CircuitPython/MicroPython WiFi devices (like the ESP32-S2) – GitHub and Twitter.
A Raspberry Pi Pico RP2040 in an Arduino form factor board with CircuitPython – Twitter and YouTube.
CircuitPython snakes it’s way to W5100S Ethernet. Wiznet W5100S-EVB-Pico for Raspberry Pi RP2040 board running CircuitPython 7 – Twitter.
Adafruit Holiday Gift Guide: CircuitPython – Adafruit Blog.
The best kinds of projects are the ones that:
- You have the parts for
- Pop into your head out of the blue
- Serve no practical purpose whatsoever
Not 100% finished yet. More to come. #CircuitPython #CircuitBrainsDeluxe – Twitter.
CircuitPython School – Use the Mil Mascaras App to Control a Mosquitto MQTT Client on a Raspberry Pi – YouTube via Twitter.
Visualize activity time: Toggl tracks time with three big buttons using an Adafruit Metro M4 Express, an Adafruit Airlift and CircuitPython – Make Into Shape.
Connecting a micro:bit to an Android phone with a USB-C adapter, using the MicroPython web editor on Chrome – Twitter.
An OLED display shield connected to Raspberry Pi Pico, with programming in MicroPython – zihatec via Twitter.
DC540 Kabbalah (Tree of Life) badge for DC29 last chance availability – MicroPython compatible – Twitter and Tindie.
Toit open-source language claims to be 30x faster than MicroPython on ESP32 – CNX Software.
μSQLite library module for MicroPython now up and running for ESP32 on the Unexpected Maker TinyPICO – GitHub via Twitter.
The Raspberry Pi Secondary Memory Interface (SMI) – Lean2.
Calling Rust from Python using PyO3, speed up your Python using Rust – Said van de Klundert.
Apache Superset – a modern data exploration and visualization platform – Apache.
Minitel-ESP32: Minitel apps development using ESP32 and MicroPython – hackaday.io and GitHub.
A Raspberry Pi-based International Space Station (ISS) tracker – Twitter Thread.
VIT – VideoInTerminal. A quick piece of code to play videos in your terminal using Python – GitHub and Python Awesome.
What Is Pip? A Guide for New Pythonistas – Real Python via Twitter.
Ditch These 7 Bad Habits in Python – Jerry Ng.
PyInvoke: Pythonic task management & command execution with Invoke – Site, GitHub and Python Awesome.
Ribbit – a small and portable Scheme implementation with AOT and incremental compilers that fits in 4K. It supports closures, tail calls, first-class continuations and a REPL – GitHub.
PyDev of the Week: Pradyun Gedam from Mouse vs Python
CircuitPython weekly meeting for November 29th, 2021 on YouTube and with notes
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? CircuitPython Online IDE.
CircuitPython works with QT Py ESP32-S2 board – Twitter and Adafruit Blog.
This ESP32-S2 QT Py is so smol, I just wanna pinch its li’l cheeks! On the back is and ESP32-S2 with 4 MB Flash and 2MB PSRAM all stuffed inside the QFN chip.
A prototype design for a 1.47” IPS TFT! Adafruit saw this adorable mini TFT display in a tweet and if there’s something that gets them out of bed in the morning, it’s a smol IPS display – 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 there were no new boards added, but several are in development.
Looking to add a new board to CircuitPython? It’s highly encouraged! Adafruit has four guides to help you do so:
New Learn Guides!
NeoPixel Menorah from Noe and Pedro
Adafruit Monochrome 1.12” 128×128 OLED Graphic Display from Kattni
Cooperative Multitasking in CircuitPython from Dan Halbert
Adafruit ESP32-S2 Feather from Kattni
CircuitPython Project Bundle
When you get to the CircuitPython code section of an Adafruit Learn Guide, sometimes things can get a bit complicated. You not only have the code you need to upload to your device, but you likely also need to add some libraries that the code requires to run. This involved downloading all the libraries, digging through to find the ones you need, and copying them to your device. That was only the beginning on some projects, as those that include images and/or sound files required further downloading and copying of files. But, not anymore!
Now, with Project Bundles, you can download all the necessary code, libraries and, if needed, asset files with one click! We automatically check which libraries are required for the project and bundle them up for you. No more digging through a huge list of libraries to find the ones you need, or fiddling with looking for other files or dependencies. Download the Project Bundle, copy the contents to your device, and your code will simply work. We wanted to make this the easiest way to get a project working, regardless of whether you’re a beginner or an expert. We’ll also be adding this feature to popular IDEs as an add-on. Try it out with any Circuit Python guide on the Adafruit Learning System. Just look for the ‘Download Project Bundle’ button on the code page.
To download and use a Project Bundle:
In the Learning System – above any embedded code in a guide in the Adafruit Learn System, you’ll find a Download Project Bundle button.
Click the button to download the Project Bundle zip.
Open the Project Bundle zip to find the example code, all necessary libraries, and, if available, any images, sounds, etc.
Simply copy all the files over to your CIRCUITPY drive, and you’re ready to go!
If you run into any problems or bugs, or would like to submit feedback, please file an issue on the Adafruit Learning System Guides GitHub repo.
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 341!
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!
The Cooperative Multitasking in CircuitPython guide I wrote is now live. I have more sections to write, but the guide contains a number of simple examples which will help you get started using
await in CircuitPython.
After a week off, I’m back and working on bug fixing. I found and fixed a few bugs in the dither & blend functions I added a few weeks ago, and in the process of doing so I also made it possible to test and debug the bitmaptools routines directly on a host computer. Another bugs I fixed was a problem with writing
boot_out.txt on a freshly erased CIRCUITPY drive.
This week, I continued work on the Feather ESP32-S2 guide. At least part of it went live because folks were looking for the info it contains. I did a lot of testing and ended up doing my first Adafruit IO project for this one. Keep an eye out for that and the rest of the guide!
Next up is the guide for the KB2040.
This past week was a little bit shorter for me. I started working on a new project for a Learn Guide that uses CircuitPython to control a laser using a Nunchuk controller. Keep an eye out for the upcoming guide.
Last week I polished the Broadcom (Raspberry Pi) work to the point that I could propose to have the code in CircuitPython main. After a prompt review from Dan, it’s been merged! While I was waiting, I also added basic I2C functionality. I’ve got more polish to do next week to support more I2C peripherals, UARTs and SPIs. I’ll also need to add it to circuitpython.org/downloads as well. Overall, the support is still early and will have bugs. I’d call it alpha state. I hope that by getting more folks trying it, more folks will help bug hunt it.
RISC-V Summit brings the community together to show the power open collaboration can have on the processor industry. The audience spans across industries, organizations, workloads, and geographies to learn about the technology advancements in the RISC-V ecosystem and visibility of RISC-V successes. The event is December 6 – 8, in-person in San Francisco or virtually from anywhere in the world – Linux Foundation via Twitter.
PyCascades is a regional PyCon in the Pacific Northwest, celebrating the west coast Python developer and user community. Our organizing team includes members of the Vancouver, Seattle, and Portland Python user groups. DATES ANNOUNCED! February 5th-6th, 2022 The conference will take place on Saturday and the first half of Sunday, with the post-conference sprints following that on Sunday afternoon. After three amazing in-person conferences and an engaging online conference, we are ready to do it again! – PyCascades 2022.
PyCon US 2022 planning is underway. The team is planning to host the event in person with an online component. April 27, 2022 – May 5, 2022. Head over to the PyCon US 2022 website for details about the conference and more information about the sponsorship program – PyCon Blog.
Send Your Events In
As for other events, with the COVID pandemic, plans may change. If you know of upcoming events, please let us know on Twitter with hashtag #CircuitPython.
CircuitPython’s stable release is 7.0.0 and its unstable release is 7.1.0-beta.0. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20211127 is the latest CircuitPython library bundle.
v1.17 is the latest MicroPython release. Documentation for it is here.
3.10.0 is the latest Python release. The latest pre-release version is 3.11.0a2.
2,679 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, Micro Center, Raspberry Pi and more.
Job of the Week
CircuitPython programmer needed – Xander Creations LLC – Adafruit Jobs Board.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 31,927 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
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.
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.