View this email in your browser.
Welcome to 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. Let’s get started!
The ReadME Podcast: Changing the hardware development game at Adafruit
The ReadME Podcast presents: Changing the hardware development game at Adafruit – How Limor Fried paves the way for millions of makers – GitHub.
CircuitPython Day is August 6th, Set Your Calendars!
8-6-2021 is the Snakiest day of the year and it’s also this year’s CircuitPython Day! The day highlights all things CircuitPython and Python on Hardware.
Working with CircuitPython? Tag your projects #CircuitPythonDay2021 on social media and Adafruit will look to showcase them.
- 1 pm US Eastern Time: Jeff, Dan and Kattni Discuss CircuitPython
- 3 pm US Eastern Time: A CircuitPython Board Tour with Ladyada
- 5 PM US Eastern: Time: Scott’s Deep Dive, special edition
If you have a project – plan on being on Adafruit Show & Tell on Wednesday 8-4-2021 or post them on social media tagging #CircuitPythonDay2021.
Let us know what you have planned and we’ll help and promote. Tag your social media post #CircuitPythonDay2021 and email to firstname.lastname@example.org so we can see it.
Adafruit IO WipperSnapper – We’re looking for beta testers!
Adafruit is starting to expand the beta program for Adafruit.io WipperSnapper. If you don’t know already – Adafruit.io WipperSnapper is a no-code IoT interface for Adafruit.IO – it lets you turn any WiFi-capable board into an IoT device without any programming. Simply select what devices are connected to which pins on the hardware and it will auto-configure the firmware and even create an IO feed for visualization. The service is 100% free, all you need is an Adafruit.com account.
For information about how to get invited, see the post on the Adafruit Blog.
The CircuitPython GitHub Repo Exceeds 2,500 Stargazers
The CircuitPython GitHub repo exceeded 2,500 Stargazers this week! Thank you to all the people who have chosen to star the CircuitPython code repository – Adafruit Blog.
Hack Chat with Adafruit’s Ladyada July 21st
The Adafruit crew will host the Hack Chat on Wednesday, July 21 at noon Pacific / 3pm EDT.
Especially over the last year and a half, most of us have gotten the feeling that there’s little distinction between our computers and ourselves. We seem welded together, inseparable even, attached as we are day and night to our machines as work life and home life blend into one gray, featureless landscape where time passes unmarked except by the accumulation of food wrappers and drink cans around our work areas. Or maybe it just seems that way.
Regardless, there actually is a fine line between machine and operator, and in most instances it’s that electromechanical accessory that we all love to hate: the keyboard. If you buy off the shelf, it’s never quite right – too clicky, not clicky enough, wrong spacing, bad ergonomics, or just plain ugly design. The only real way around these limitations is to join the DIY keyboard crowd and roll your own, specifically customized to your fingers and your needs – at least until you realize that it’s not quite perfect, and need to modify it again.
Hitting this moving target is often as much a software problem as it is a hardware issue, but as is increasingly the case these days, Python is ready to help. To go into depth on how Python can be leveraged for the custom keyboard builder, our good friends at Adafruit, including Limor “Ladyada” Fried, Phillip Torrone, Dan Halbert, Kattni Rembor, and Scott Shawcroft will stop by the Hack Chat. We suspect they’ll have some cool stuff to show off, in addition to sharing their tips and tricks for making DIY keyboards just right. If you’re building custom keebs, or even if you’re just “keyboard curious”, you won’t want to miss this one – Hackaday and YouTube.
New Book: Visual Studio Code for Python Programmers
A new book, just out, is a huge boon to Python developers looking to use the free Visual Studio Code (VSC) editor, aptly named Visual Studio Code for Python Programmers, by April Speight – Adafruit Blog with review and Amazon.
Projects Using the New GitHub Copilot AI Knowledgebase
Users continue to test the technical preview of GitHub Copilot to see what it can do. Here are a couple of examples of note:
Copilot writes a text-based game in Python – sandyuraz.com.
Copilot Importer: why write code when you can import it directly from GitHub Copilot? – PyPI.org.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 30,000 humans, thank you! Adafruit believes Discord offers a unique way for CircuitPython folks to connect. Join today at https://adafru.it/discord.
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott and guest @jim_mussared talk about MicroPython and debugging the native emitter.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
The TalkPython Podcast – MicroPython + CircuitPython – Now Online
The TalkPython Podcast Episode #325: MicroPython + CircuitPython, featuring Damien George from MicroPython along with Scott Shawcroft from CircuitPython and Adafruit is now online – talkpython.fm and YouTube.
News from around the web!
Ladyada demonstrates CircuitPython serial connection including the REPL over Bluetooth Low Energy (BLE). This is one of the key components of using CircuitPython over BLE. Check it out at https://code.circuitpython.org – Adafruit Blog, YouTube and Hackster.io.
A video guide showing how to hook up an Adafruit board to a Sphero RVR. The description includes links to the CircuitPython software and notes on how to put this together – Twitter Thread and YouTube.
A BLE motion mouse using an Adafruit Feather nRF52840 Sense board. the cursor moves with the accelerometer, the light sensor turns scrolling on/off and the onboard button sends mouse clicks – Twitter.
An algorithmic composition performed on an Adafruit MagTag. The random notes code tries to make a melody by only straying ±5 semitones from the last note, and trying to play actual semitones. Also shows how to quickly display stuff on a MagTag E-Ink display with proper refresh timing – Twitter Thread.
The latest iteration of the algorithmic melody compositions in CircuitPython using just PWM tone generation. This time with scales over octaves. And on an Adafruit FunHouse and its nice color LCD! Some added-in-post delay effects on the suggestion of John Park – Twitter.
John helps folks use the modulo operator (%) to loop through a number range and demonstrates an example to set NeoPixel LED colors – Adafruit Blog.
Integrated watering of balcony flower boxes with Home Assistant, MQTT and SoC with CircuitPython – Twitter (German).
Connecting a VCNL4010 integrated proximity and ambient light sensor to an Adafruit Feather M0 running CircuitPython – Learn MicroPython and Twitter.
Having fun with an experimental CircuitPython keyboard – Twitter (Japanese).
Raspberry Pi Pico Solar System Display (which is Far From Orrery) using MicroPython – Tom’s Hardware, Twitter and GitHub.
HomeKit Connected Fence Door Monitoring System with Adafruit IO and CircuitPython – Moving Electrons.
Making a Raspberry Pi Pico MIDI (H)Arp with MicroPython – DIY Electromusic.
Raspberry Pi Pico (RP2040) I2C Example with MicroPython and C/C++ by Digi-Key Electronics – YouTube.
Cytron Maker Pi RP2040 Review: Robots Made Easy, preloaded with CircuitPython – Tom’s Hardware.
The micro:bit Educational Foundation now has 70 of their quick Make it: Code it projects available in both MakeCode blocks and Python. In the project pages, you can easily switch between block and text code versions of the same programs – Twitter and microbit.org.
SplootCode is an experimental coding interface for free and expressive visual coding. Current work focuses on a Python-for-beginners version – Adafruit Blog and splootcode.io.
JupyterLite is a JupyterLab distribution that runs entirely in the web browser, without having to start the Python Jupyter Server on the host machine – Jupyter Blog.
Solving The Rocket Equation with Python: The Optimal Way To Expel Fuel – Twitter and YouTube.
Pyflyby: Improving Efficiency of Jupyter Interactive Sessions – Twitter and Quansight Labs.
Casio fx-9750GII calculator used as a webserver – Adafruit Blog and Hosted Page.
calcengine – a simple lazy Python calculation engine using only core libraries – GitHub.
CuVec – Unifying Python/C++/CUDA memory: Python buffered array <-> C++11 std::vector <-> CUDA managed memory – GitHub.
A free 3500-page PDF book: Pandas — Python Data Analysis Toolkit for Data Science, by Wes McKinney expanded and updated July 2021 – pandas, TechTarget and Twitter.
Python most powerful functions: map(), filter(), and reduce() in 5 minutes – Analytics Vidhya.
Python API Tutorials — Tutorials related to Python API design or interacting with APIs using Python. REST APIs in web applications would be one example where Python shines – Real Python and Twitter.
PyJWT: a JSON Web Token implementation in Python – GitHub.
Programming microcontrollers – Twitter.
PyDev of the Week: Susan Shu Chang from Mouse vs Python
CircuitPython Weekly Meeting for July 19th, 2021 on YouTube and notes doc
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Microsoft IoT For Beginners.
Invector Labs revealed a new board, currently titled Challenger Model 2040, featuring the RP2040 system-on-a-chip that sets itself apart from many of its contemporaries by offering built-in Wi-Fi support and uses Adafruit’s Feather layout – Adafruit Blog and Invector Labs.
Finally had time to get TinyUF2 and CircuitPython ready for (an Unexpected Maker) FeatherS2Neo prototype! These LEDs are at 10% brightness! – 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!
Desk Calculator with CircuitPython from Jeff Epler
Ableton Live Macropad Launcher from John Park
Automatic Naughty Cat Detector using Lobe from Melissa LeBlanc-Williams
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 326!
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 finished my calculator guide and it’s (now published on the Learn system) – Check it out if building and 3D printing a custom 20-key calculator appeals to you.
I also did some blogging about USB HID descriptors, including how to enable CircuitPython’s keyboard to have full “N-Key Rollover”, rather than being limited to 6 keys plus modifiers: Part 1 and Part 2
Finally, it’s entirely behind the scenes but we’ve merged two sets of improvements I made to free up precious flash storage space so we can squeeze a few more features into CircuitPython 7.
This week I published the MacroPad CircuitPython library. It takes all the features of the MacroPad, wraps in HID and MIDI, and puts them all together in an easy-to-use library. Beyond the basic features, such as reading key presses and the rotary encoder, the library includes the ability to rotate the MacroPad without having to remap the keys and pixels yourself, as well as being able to easily display lines of text or a bitmap image. For more details, check out the documentation.
Since that point, I’ve been bug fixing as folks get into testing it and find issues. Next up is a couple of product guides and a potential MacroPad project!
This past week, I finished up working on a Cat Detector guide. In order to make it more than a big bundle of wires, I designed a single piece 3D-Printable stand for it which turned out great. The Cat Detector uses Machine Learning and Microsoft Lobe to detect cats. You can check out the learn guide.
I’ve wrapped up the micro:bit v2 work and BLE workflow work for now. code.circuitpython.org is ugly but functional. I’ll be working with other Adafruit folks to make it prettier and more functional. In the meantime, I’ll be squashing some bugs to get us closer to releasing 7.0.0 stable.
EuroPython, the largest conference for the Python programming language in Europe, will be held online July 26 – August 1, 2021. More information at https://ep2021.europython.eu/
PyOhio 2021 is a free event on July 31, 2021 – PyOhio.org via Twitter.
PyOhio t-shirt sales now open! Order through Aug 1, available in two colors and three cuts. Proceeds from t-shirt sales this year will go toward reducing the cost of attending future PyOhios for speakers from underrepresented backgrounds – CustomInk.
PyConline AU will be held 10-12 September, 2021 – pyconlineau
Kiwi PyCon XI, Ōtautahi Christchurch, 17th, 18th, & 19th of September 2021 and CFP ends July 16th – python.nz.
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.3.0 and its unstable release is 7.0.0-alpha.4n. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20210719 is the latest CircuitPython library bundle.
v1.16 is the latest MicroPython release. Documentation for it is here.
3.9.6 is the latest Python release. The latest pre-release version is 3.10.0b4.
2,511 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
Embedded Software Engineer at Space Information Laboratories – Adafruit Jobs Board.
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.