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!
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 highlight them.
Tentative Activities
- 1 pm US Eastern Time: Jeff 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
Community Participation
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 cpnews@adafruit.com so we can see it.
CircuitPython and MicroPython – Talk Python Live Stream
On July 8th, the Talk Python Live Stream host Michael Kennedy had guests Scott Shawcroft and Damien George. They discussed how MicroPython and CircuitPython are working together to further embed Python onto all the small things – Adafruit Blog and YouTube.
CircuitPython 7.0.0 Alpha 4 Released
CircuitPython 7.0.0-alpha.4, has been released. It is relatively stable, but contains a number of issues still to be addressed for 7.0.0. The Python API’s it presents may change.
Notable additions to 7.0.0 since 6.3.0 include:
- Support for the CircuitPython development workflow over BLE.
- Camera support on ESP32S2.
- The keypad key-scanning module.
- Run-time customization of USB devices.
- Merging in of MicroPython fixes and enhancements as of MicroPython 1.16.
- Simplifications to the RGB status LED codes.
- A clocking fix for a few samples of RP2040 boards.
Read more – Adafruit Blog and GitHub.
Mu 1.1.0-beta 5 is now out
Mu 1.1.0 Beta 5 is now available on their downloads page. It is a beta release so it may contain bugs or unfinished features. Bug reports or feedback via GitHub is solicited. The Mu Team had hoped for a regular (fortnightly) release tempo. Due to the voluntary nature of Mu’s development and because some of the updates in this release were quite challenging, this release is a LOT later than the developers had planned – Mu Blog.
Polls for 2021
Python, C and Java compete for the most popular programming language in the latest TIOBE Index
The July TIOBE index shows C, Java, and Python are in a near dead heat for most popular languages – TIOBE and Adafruit Blog.
2021 Global IoT Trends Report
Newark reached out to their global customer base with an IoT survey between September 2020 and December 2020, compiling the results into their 2021 Global IoT Trends Report – Newark and Adafruit Blog.
Newsletter Statistics
Seeing that some email newsletters are providing numbers as to their subscription and effectiveness rates, Adafruit presents the same for the Python on Microcontrollers newsletter.
Growth is steady but has been a bit less this past quarter. The latest quarter saw a significant increase in user interaction. Also the percentage of links clicked has risen fairly steadily over the entire period.
The demographics information on Mailchimp states there is a greater than 65% male subscriber rate.
This information will be used by Adafruit to help grow the subscriber base, especially in areas which may be underserved.
We are looking at providing quarterly updates on these numbers – Adafruit Blog.
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott streams his work on JavaScript WebSerial.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
CircuitPython Parsec Videos From This Week
This week:
“Adafruit” made with VQ-GAN + CLIP
Over the weekend, Adafruit made some generative AI art using VQ-GAN + CLIP tutorial and Google Collab Notebook. It’s a bunch of Python that can take words and make pictures based on trained data sets.
This one is the word “Adafruit”, so above is what the output is based on the training.
It starts out as a little LED looking thing, and eventually evolves to some goth looking cosplay thing and then pink hair grows out of it. It’s on a table with some tools, parts, and some fruit. Not bad, if this was shown to someone in the electronics world and asked what company is this, they’d probably say Adafruit – Adafruit Blog.
News from around the web!
Now that my Sphero RVR drives to specific coordinates on the floor, I can get my apartment delivery system online for use during quarantine in HCMC. Powered by an Adafruit Metro M4 running CircuitPython and elements of the SDK – Twitter.
Using GC9A01 round LCDs in CircuitPython with an Adafruit ItsyBitsy RP2040 – Twitter.
A CircuitPython n-key rollover keyboard (non-boot) – unpythonic.net.
Assembling a BYO Keyboard kit, which is based on an Adafruit ItsyBitsy M0 and CircuitPython – Chebe.
CLUEbell is an automated cowbell using an Adafruit CLUE and CircuitPython – Twitter and Project Tutorial.
DIY USB Keyboard Mouse Using Maker Pi Pico:Fusion 360 3D view rotation – Cytron Tutorial, Instagram and YouTube.
A tilt stand for an Adafruit MacroPad that changes the tilt at the press of a button – Twitter.
PewPew OLED assembled and running the latest CircuitPython. It also runs all the PewPew games, but let’s also make some dedicated ones that are not 8×8 pixels – Twitter.
Build smart, custom mechanical keyboards for MIDI – or really tiny Ableton Live control – cdm.
U.S. Copyright Termination Notices 1977-2020: Introducing New Datasets. Utilizing data scraping and manipulation techniques in the Python programming language, they created two brand new datasets for scholars, copyright experts, creators, publishers, and other industry stakeholders to examine – SSRN.
Azure Cloud Advocates at Microsoft are offering a 12-week, 24-lesson curriculum all about IoT basics. Each lesson includes pre- and post-lesson quizzes, written instructions to complete the lesson, a solution, an assignment and more. The project-based pedagogy allows learning while building, a proven way for new skills to ‘stick’. The curriculum allows hands on building projects with IoT hardware, and a choice between C++ on Arduino, Python on Raspberry Pi, or Python running locally with simulated IoT sensors and actuators – Microsoft.
Wiring a H3LIS331DL accelerometer to a Raspberry Pi Zero as well as implementing the code in Python that executes the readings – Raspberry Pi Projects.
How to read and set sensor values on an Arduino Nano 33 BLE Sense using Bluetooth & Python. Demonstrated with the on-board RGB LED – Twitter and hackster.io.
A Simple HDR Implementation on OpenCV Python – Towards Data Science.
Tim Berners-Lee sells web source code NFT for $5.4m (is this the most expensive Python program made?) – Adafruit Blog.
“I’m not even selling the source code. I’m selling a picture that I made, with a Python programme that I wrote myself…”
Get started with Anaconda Python: Anaconda provides a handy GUI, a slew of work environments, and tools to simplify the process of using Python for data science – InfoWorld.
Write good Python examples by starting with real code – jvns.ca.
Why I wrote my own SQL query builder – death and gravity.
Common Python Data Structures – Real Python.
Defining and Calling Python Functions – Real Python.
Speed Up Your Python Program With Concurrency – Real Python.
Typeclasses in Python – sobolevn’s blog.
Use feedparser (PyPI) to parse Atom and RSS feeds in Python – Twitter.
Python or R, which Programming Language is Better for Data Science? – Geek Culture.
Julia Advice to Curious Python Developers – Erik Engheim.
PyDev of the Week: Jeremiah Paige on Mouse vs Python.
CircuitPython Weekly meeting for July 6th, 2021 on YouTube and notes
CircuitPython Weekly meeting for July 12th, 2021 on YouTube and notes
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Machine Learning Algorithms with Python.
Coming soon
Ladyada jumps into some hardware designs starting with the ATtiny8x7 board with two STEMMA QT ports. Then two RTC QT designs: the DS3231 and the PCF8523 – YouTube.
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!
MACROPAD Hotkeys from Phillip Burgess
Modal MIDI Keyboard from John Park
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 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 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 324!
Updated 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!
Dan
I released CircuitPython 7.0.0-alpha.4 on Thursday, July 8. There are still plenty of further improvements and fixes in the pipeline.
I’ve fixed some issues with audio and displays on the RP2040, but there is further work to do. There are some mysterious unwanted interactions between different uses of DMA. A DMA transaction that is seemingly finished can affect a following one adversely. I’m debugging this and learning more about the RP2040 in the process.
Jeff
This week I’ve been splitting my time between some low level core changes and a keypad project for the Adafruit Learning System.
The core changes will help us squeeze features we want in version 7 into the smallest boards like the Trinkeys. This has reached the pull request stage.
The keypad project is a calculator with 20 MX-style keys on a custom PCB & 3D printed enclosure, running CircuitPython. At the time of writing, I’m working on finishing up the guide.
Kattni
Last week was a short week for me. I started the MacroPad library and published the MacroPad guide. The guide has everything you need to get started with your new MacroPad, including detailed pinouts info, CircuitPython and Arduino examples, and downloads resources. The upcoming library will make using the features on your MacroPad with CircuitPython super simple. Keep an eye out for it to make your CircuitPython MacroPad projects even better!
I’m also working on getting _pixelbuf
and adafruit_pypixelbuf
in line to be drop in replacements for each other, and moving the colorwheel()
function to its own native module in CircuitPython to make it even simpler to use. This will make colorwheel()
available on most CircuitPython-compatible boards without needing to import it from Pixelbuf.
Melissa
This past week was a shorter week for me. I worked on adding some stability improvements to the WebSerial ESPTool, but ran into some complications and have put that on hold for the moment. I picked up working on a new guide using machine learning to detect cats on counters. I’ll provide more details and a link to a guide soon.
Scott
I took a couple days off so I’ll be getting caught up and then picking up the code.circuitpython.org work to add serial support as well. Then I should have all the pieces for testing and we can then rearrange everything to work better together. Thursday I recorded a Talk Python to Me podcast where Damien is a guest too. YouTube link for the stream is here.
Upcoming events!
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.
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.
Latest releases
CircuitPython’s stable release is 6.3.0 and its unstable release is 7.0.0-alpha.4. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20210711 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,499 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
Object color tracking – Pascau Design – Adafruit Jobs Board.
29,869 thanks!
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 29,869 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.
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 our Discord or post to the forum for any further questions.