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). 9,089 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.
The Python on 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? Let’s see:
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.
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.
An Ultra-thin, Portable Keyboard Running CircuitPython on a RP2040
Based on the PyKey60, this ultra-portable keyboard is inspired from Keyboardio’s Atreus but uses low profile Kailh Choc switches instead. These are lower profile than standard MX switches and even have a slightly closer pitch from switch to switch; making the keys closer to each other.
Why did I create a custom board instead of using a Raspberry Pi Pico? The Pico wouldn’t allow for the thinnest keyboard. Its position would need room below the PCB and thus would also need a bottom plate to enclose it all, defeating the whole point of an ultra-low profile keyboard.
The project uses 44 Kailh Choc Low Profile Hot Swappable key switches, a RP2040 controller, and USB-C. It runs CircuitPython – changing the keymap is as easy as changing a file on the keyboard – Reddit.
A New Boot Sequence Chart for CircuitPython 7
A new chart diagraming the boot sequence for CircuitPython 7 has been published. Importantly, the colors of onboard LEDs has changed somewhat in the new version to aid in debugging. The chart will be incorporated into existing CircuitPython documentation soon – Twitter.
Join Hackaday, Digi-Key, and Adafruit for a Halloween-themed contest! They want to see your crazy, creepy, ghostly, spooky, and awesome projects.
If costumes are your favorite part of Halloween, then why not dress up your outfit with some hacked upgrades? You could even design a ghoulish prop to add to your home’s Halloween décor or light up a Jack-o-lantern with LEDs. Whether it’s technical, artistic, or just plain terrifying, Hackaday wants to see your projects!
Check out the Halloween Show & Tell with Hackaday, Friday, October 29th at 1pm PT, to show off your awesome projects entered in the contest. Don’t forget to also share your projects on social media and use the #HalloweenHackfest!
Hacktoberfest Begins October 1st
Hosted by DigitalOcean for the 8th year in a row, Hacktoberfest encourages participation in giving back to the open source community by completing pull requests, participating in events, and donating to open source projects.
Anyone around the globe who desires to help drive the growth of open source and make positive contributions to an ever-growing community. All backgrounds and skill levels are encouraged to participate. The first 55,000 participants can earn a T-shirt. Learn more – DigitalOcean.
For CircuitPython, issues will soon be tagged for Hacktoberfest. Good First Issues and open issues will both be featured. It is anticipated that the number of CircuitPython issues to work on will be higher this year.
October is also Open Hardware Month
October is Open Hardware Month! The Open Source Hardware Association (OSHWA) is providing resources and asking the community to host small, local events in the name of open source hardware. See more – OSHWA.
Building a smart IoT flowerpot from scratch
This project is a cute IoT flowerpot that helps you tracking the basic measures needed to take care of your favorite plants such as water, moisture, and temperature levels. You can see the measures directly on the device or on the online dashboards. This DIY project uses 3D printing and is powered by CircuitPython – Medium and Vimeo.
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott streams his work on CircuitPython running “bare metal” on a Raspberry Pi 4.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
John Park’s CircuitPython Parsec:
Catch all the episodes in the YouTube playlist.
An interview with Simon Monk, author of Programming the Pico
Author and maker Dr. Simon Monk recently published the book Programming the Pico: Learn Coding and Electronics with the Raspberry Pi Pico. Adafruit asked Simon some questions about himself and the book – Adafruit Blog.
News from around the web!
Implemented PIO-based bit-banging for the Hirsch Scramblepad protocol using CircuitPython on the Raspberry Pi Pico – Twitter Thread.
Melopero Shake RP2040, a new microcontroller board based on the Raspberry Pi RP2040! It features 16MB of flash memory, battery charger with low battery monitor, WS2812 RGB LED, Qwiic/Stemma QT connector, USB-C connector and more – Melopero via Twitter.
A version of the QTPy-knob: a simple USB knob with CircuitPython and an Adafruit QT Py, a NeoPixel Ring, a Rotary Encoder and some 3D-printed parts. It’s glowy and useful! – Elmwood Electronics.
I made some progress on Basic for my Adafruit PyPortal Titano. It can read a light sensor, use NeoPixels, read touch screen, added a pause function. Need some work for sound etc. But the work is in progress – Twitter.
Where does all the effort go? Looking at Python core developer activity – Łukasz Langa.
I think this counts as a win… never coded in CircuitPython before. Adafruit NeoPixels, 3D printing, for a Halloween costume – Twitter.
The Micro Gherkin: the tiniest Pi Pico powered keypad. Both the switches and the Pi Pico are surface mounted, back to back – 40 Percent Club.
MicroPython is being ported to the new Pimoroni PicoSystem – Twitter Thread.
First steps on Raspberry Pi Pico Picomputer PICO is now chip crisis resistant and with Adafruit CircuitPython. I am totally Python beginner but all Adafruit examples and libraries works without a problem 😉 I am going to learn Python – Twitter.
A movement alarm made with a BBC micro:bit, a mini-PIR sensor module and an external speaker on a Kitronik :CREATE Proto Board with a MicroPython program which plays short audio samples – Instructables.
Getting MicroPython working on the Espressif ESP32-S3 – Twitter.
QuecPython is Quectel’s port of MicroPython for cellular modules – Adafruit Blog.
This MIT CS class teaches you things that all the other classes don’t teach you, like…
- Shell tools and scripting
- Data wrangling
- Command-line environment
- Version control
Zippy is a treaded robot using an L298N H-bridge motor driver to operate 12 V high-torque metal gear motors, powered by an 11.4 V lithium polymer battery. It based around a Raspberry Pi Zero W programmed in Python – The MagPi.
Top 10 Python libraries for Robotics – Twitter.
Docker Best Practices for Python Developers – testdriven.io.
Why you can’t switch to Python 3.10 just yet – Python Speed.
PyDev of the Week: Talley Lambert on Mouse vs Python
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 was one boards added:
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!
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!
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 337!
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!
I have gotten boot keyboard support to work in CircuitPython. It’s necessary to turn off most or all of the other USB devices to ensure that HID is the first device interface listed. That matches the expectations of the BIOS and similar software. After some more testing on a Mac, I’ll turn this into a PR.
My attempts at simplifying the Windows 7/8.1 drivers failed. Ideally, I’d like anything identifying as a CDC serial device to use the USB serial driver. That is what is built in to Windows 10. But as a third-party driver provider in Windows 7/8.1, I am not permitted to provide a “class driver”, that is, a driver that matches all devices of a particular class. So instead I will automate the current manual process of adding boards to the Windows drivers.
I’ve continued working on support for the OV5640 camera. After a few enhancements, refresh rate of the camera preview to the Kaluga’s LCD display is over 15FPS, up from less than 2 a week ago.
This week saw the publishing of the Adafruit EyeLights LED Glasses and Driver guide, which was a collaboration between me and our very own Dragon, Phil B. This guide has everything you need to get started with your EyeLights Driver and LED Glasses panel including detailed pinouts, CircuitPython and Arduino setup instructions for the driver, and a bunch of starter projects for the LED glasses. When you get your new LED Glasses and Driver, check out this guide!
Next up is the guide for the ATtiny8x7 breakout with seesaw and STEMMA QT. This guide will have a number of examples for seesaw in both CircuitPython and Arduino, as well as look at the seesaw API. If you picked up one of these nifty little boards, keep an eye out for this guide!
At this point, I have basic file navigation working nicely. I have the file dialog displaying as a modal and I’m making use of font awesome for the icons and showing different icons based on file type. You can also navigate into subfolders and back up.
This week has been more plugging away at TinyUSB on the Raspberry Pi. I made good progress getting interrupts to work but then hit a wall getting USB itself going. I haven’t been able to find clear examples of using the USB peripheral in device mode which has made it difficult to determine what I need to change. So, if you know anything about the Broadcom chips and the DWC USB core please reach out to me.
In the meantime, I’ve switched gears to getting CircuitPython going over UART. Hopefully it’ll be in a good state once USB gets going and it’ll be fast to put the two together.
PyCon Sweden 2021 will be held on 21-22 October, online for free – more.
PyCon Chile is coming November 5, 6 and 7th online – one day of workshops and Sprints, two days of talks! – more.
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.
20211015 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, Micro Center, Raspberry Pi and more.
Job of the Week
Enrollment Director – Bluestamp Engineering – Adafruit Jobs Board.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 31,364 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.