View this email in your browser.
Hello! This is the latest Python for 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. Here’s the week’s news:
MicroPython Turns Seven
April 29th is MicroPython’s 7th birthday! To celebrate, the MicroPython team will pick a winner to receive a Pyboard D-series circuit board with the runner-up getting a MicroPython T-shirt – Twitter and Facebook.
The MicroPython website has also recently refreshed their downloads page – micropython.org.
CircuitPython 5.3.0-rc0 is out
CircuitPython 5.3.0-rc0 is the latest minor revision of CircuitPython and a release candidate. If this release does not have show-stopper issues, it will be re-released as 5.3.0, the first 5.3.x stable release. This release adds support for 3 new boards, adds the RGBMatrix driver for RGB LED matrices, and more.
Downloads are available from circuitpython.org! The site makes it easy to select the correct file and language for your board.
New features and improvements since 5.2.0
- Add support for RGB Matrix display
- Add a fill method to displayio.Bitmap
- Make the colors used by the stage library compatible with those used in the displayio library
- Multiple improvements to the STM32 port
- Improvements to the litex port
- Improvements to ulab
- Use “checkout@v2” in the CircuitPython build process
- Fix the maximum keycode in keyboard HID descriptor
- Fix bad submodule patk
- Add the NFC Copy Cat board
- Use Sphinx 3 to build the documentation
3 New boards since 5.2.0
See the release page for additional information – GitHub and the Adafruit Blog.
Porting the Cyanobyte Python I2C Driver Creator to MicroPython
A new port of Cyanobyte, the Google driver generator, to MicroPython automatically generates I2C drivers in a standardized way. It also supports Raspberry Pi. Author Nick Felker states “(It) shouldn’t be hard to support CircuitPython too” – Twitter and GitHub.
Harvard University Offering Free Online Courses Including Programming
HackSpace Magazine Reviews the ulab Library for CircuitPython
HackSpace Magazine Issue 30 features an article on the new ulab (pronounced microlab) library port to CircuitPython. ulab is a subset of the Python monster data crunching library numpy. An Adafruit CLUE board is used to demonstrate the power of fast mathematics on microcontrollers – Blog.
A New CircuitPython Library for eInk Displays from PlasticLogic
PlastiLogic of Dresden, Germany, has released pl-micro-epd. This is a library and tools written in CircuitPython for their flexible organic eInk displays – GitHub.
Adafruit Industries continues to run with 100% of employees being paid and continuing to work. Most are working remotely, with some working in the Manhattan, New York factory as an essential service and business under NYC Executive Order 202.6 Capabilities. Adafruit was deemed an essential service to distribute/make some PPE (Personal Protection Equipment) such as face shields, and manufacturer electronics for essential life-saving/preserving equipment and development which is needed in New York and beyond – Blog.
Are you looking to buy Adafruit parts during this time?
If you are a general customer, Adafruit suggests checking out Digi-Key and other Adafruit distributors who may have stock.
Your order may qualify as essential if you are working on direct efforts to combat the COVID-19 outbreak. This can mean a number of things, as the struggle to contain and fight COVID-19, and treat those affected, are pervasive. Likely this means, an order:
- Contains electronics, tools, or materials that will be used to manufacture PPE, or other medical supplies, for healthcare providers or government agencies working specifically to combat COVID-19
- Is shipping directly to a doctor or medical/healthcare professional
- Is shipping directly to an educator who is working to set up online learning for their classroom due to COVID-19 related school closures
- Contains microelectronics/semiconductors that will be used in essential manufacturing or research & development (e.g. food, health/ventilator, medical, safety, defense production)
If you are unclear if your order qualifies, email firstname.lastname@example.org before placing an order. Include all pertinent information. – How to Place an Essential, COVID-19 Related Order at Adafruit.
Automating Production with Python: CadQuery
We’ve loved the Programmable USB Hub from Capable Robot Components since before its CrowdSupply introduction. It turns out, fabrication of pieces like the panels for the enclosure are done with Python. CadQuery is a Python-based mechanical design framework with an associated library for the creation of assemblies called cqparts.
The team states that they know other code-based frameworks exist, like OpenSCAD and ImplicitCAD, but they’ve been using CadQuery because:
- It’s Python, not a new domain-specific language (DSL) to learn.
- It has a great geometry selection, sort of like CSS, called CadQuery String Selectors.
- It is built on top of OpenCascade, a powerful solid modeling kernel.
- cqparts has powerful mating and constraint features, including mates which modify the geometry of the underlying part.
Their blog post has additional details – CrowdSupply.
Adafruit Hardware Being Certified Open Source
Adafruit has always been an open source hardware company, predating the Open Source Hardware Association (OSHWA) certification process. We have begun submitting all of our hardware to OSHWA for certification as Open Source. This week 48 new boards were certified including:
News from around the web!
A custom designed CircuitPython watch. Software and hardware use the nRF52840 chip in a custom motherboard / chassis – Twitter.
Designing Winterbloom’s Big Honking Button, programmable in CircuitPython – thea.codes.
A PyPortal Google calendar viewer which uses the Adafruit PyPortal- ryantwalton.com.
An experimental port of MicroPython to ResMed S10 CPAP/BiPAP machines – GitHub and Twitter.
SimStapler Simulator – scruss.com and YouTube.
The distance estimation team at Covid Watch is using CircuitPython for tests to support their Covid-19 anonymous exposure notification app. This takes advantage of the growing BLE capability in CircuitPython. Team member Dar Scott, who uses CLUE in measurements, is also pondering whether CLUE or Circuit Playground Bluefruit can join phones in being part of the network of exposure notification apps – Covid Watch.
A Game of Life inspired project with an Adafruit RGB matrix, a Raspberry Pi and Python – Twitter.
Playing NES on bigger screen, now using RetroPie running on a Raspberry Pi. An Adafruit PyBadge is used as game controller which runs CircuitPython and a HID keyboard program – Twitter.
Using a Raspberry Pi as a SWD programmer to flash CircuitPython on a Particle Xenon Board – CodeNSolder.
ampy-gui: a Gtk 3.0 GUI for Adafruit’s ampy CLI ESP32 tool – GitHub.
Multithreading in Python for Finance – towardsdatascience.
Vazha Script: a malayalam version of Python – Twitter and GitHub.
How to develop extensible web scraper with Python, requests and bs4 – janowski.com.
A Python Numpy library video tutorial For beginners – miroh.com and YouTube.
Converting a 1927 vintage desk phone into a mobile phone with talk and text, with a PyBoard and MicroPython – Vintage Radio and Twitter.
uPython – MicroPython scripts for an ESP8266 board – GitHub and Twitter.
wasp-os: a MicroPython-based development environment for smart watches – GitHub and Twitter.
The NetMDPython set of scripts can copy the original ATRAC1-encoded bitstreams off old Sony MiniDiscs. It may be run on Windows, macOS or Linux – Pagetable.
PyDev of the Week: Gaetan Delannay on Mouse vs Python.
CircuitPython Weekly for 27 April 2020 on YouTube and on diode.zone.
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Visual Studio Code – Device Simulator Express.
Helen Leigh is writing a four page feature about Python on Hardware for an upcoming issue of Make Magazine. She posted the call on Twitter for thoughts, experiences, frustrations, and pictures. While we anxiously wait for the article, some interesting responses from Twitter are below:
Edit Python Code with the Mu Editor
Why Mu? Mu tries to make it as easy as possible to get started with programming but aims to help you graduate to “real” development tools soon after. Everything in Mu is the “real thing” but presented in as simple and obvious way possible. It’s like the toddling stage in learning to walk: you’re finding your feet and once you’re confident, you should move on and explore! Put simply, Mu aims to foster autonomy. Try out Mu today! – codewith.mu
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 we had one new board added:
Looking for adding a new board to CircuitPython? It’s highly encouraged! Adafruit has two guides to help you do so:
New Learn Guides!
PyPortal Quarantine Clock from Brent Rubell
Updated Guides – Now With More Python!
You can use CircuitPython libraries on Raspberry Pi! We’re updating all of our CircuitPython guides to show how to wire up sensors to your Raspberry Pi, and load the necessary CircuitPython libraries to get going using them with Python. We’ll be including the updates here so you can easily keep track of which sensors are ready to go. Check it out!
Keep checking back for more updated guides!
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 drivers, download the Adafruit CircuitPython Library 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! 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. Feel free to contact Kattni (@kattni) with any questions.
You can check out this list of all the CircuitPython libraries and drivers available.
The current number of CircuitPython libraries is 226!
Here’s this week’s new CircuitPython libraries:
Here’s this week’s updated CircuitPython libraries:
PyPI Download Stats!
We’ve written a special library called Adafruit Blinka that makes it possible to use CircuitPython Libraries on Raspberry Pi and other compatible single-board computers. Adafruit Blinka and all the CircuitPython libraries have been deployed to PyPI for super simple installation on Linux! Here are the top 10 CircuitPython libraries downloaded from PyPI in the last week, including the total downloads for those libraries:
Keep an eye out here for updated download stats coming soon!
What’s the team up to this week?
What is the team up to this week? Let’s check in!
This week I continued working to migrate it repositories to GitHub Actions for continuous integration. Things are moving along smoothly and I’ve got a nice workflow developed that makes it fairly straightforward to move a repo over.
I’m also working on migrating the Arduino libraries that are not already using it to use our Adafruit_BusIO library to handle communicating with chips over SPI and I2C. I’m particularly fond of the Adafruit_BusIO_RegisterBits class to handle all the bit masking and manipulation necessary for toggling groups of bits within a register without stepping on the other bits. Doing this type of manipulation by hand is a great way to create a bug that’s tricky to find, so using a library such as ours that gets a lot of testing, through use, is a good way to reduce the chances of such a mistake biting you.
Most of you will have heard about the passing of John Conway, who is most famously known as the creator of Conway’s Game of Life, a classic example of how a simple set of rules can create and amazing variety of behaviors. Programming a version of Conway’s Game of Life is a right of passage for programmers around the world, myself included. If you know how to program and you haven’t given it a try, give it a whirl!
I’m still working on implementing the Adafruit BLE services needed to talk to the Bluefruit Playground app. It is mostly done, but there were some changes needed to CircuitPython. After that’s done, I will look at using bleak on a host computer to implement _bleio under Blinka.
I’m also going to look at BLE-capable bathroom scales and blood pressure monitors, so we can talk to them too.
I released CircuitPython 5.3.0-rc.0 this week. If you encounter any problems with it, please let us know on Discord, the forums, or on GitHub. Thank you to all who contributed to this new version, it is a community effort.
The RGB Matrix code (formerly known as Protomatter) I’ve been working on for several weeks is in the new release, and the related guide has been published. We’ve got pinouts for 5 different CircuitPython boards and 4 examples ranging from simple scrolling text to an implementation of John Conway’s “Game of Life”.
John Conway’s dedication to “recreational mathematics” was an important element in my own development of love for mathematics and computers. Conway recently passed away.
Photo of John Conway from Wikimedia by Thane Plambeck, license CC-BY-2.0
I’ve been working on going through the GitHub issues across all of our CircuitPython libraries. Our helpful friend, Adabot, includes generating a list of all the open issues and PRs across all of the libraries, and aggregates them on circuitpython.org. Many issues and PRs are closed within days or less of opening, but a significant number are long-standing. Some of them are that way for a reason, but there are definitely a few that were simply missed, needed further action, or have been resolved but not closed. The plan here is not to close everything out, but to catch the few and get them taken care of. This week, I found a couple of issues waiting on replies, and a few that had already been resolved and simply needed to be closed. Thanks to Carter for picking up two issues and getting new PRs submitted to address them. As well, I found a long-standing PR that needed a couple of simple changes, and the original author was available to get those submitted – thanks to @tgs for patience and perseverance!
Expect to see activity on some older issues and PRs. If you are the author of any of those, and wish to have someone take another look, feel free to ping me and I’ll do what I can. With no action for an extended period of time, some of them may simply be closed out – please don’t see it as negative if yours ends up closed. Remember, you can always reopen or resubmit a PR or issue if you find time later to return to it.
We’ve finished submitting all of the Adafruit hardware to the Open Source Hardware Association for certification – and the certifications have been rapidly going through. Adafruit is now the number one open source certified company! Thanks so much to Dylan for all of his hard work getting everything submitted.
This past week I worked mostly on documentation settings and reviews for the STM port. For some time, the ST dev boards for CircuitPython did not list their supported modules correctly in the Support Matrix. This week I revisited the reasons why, and ended up revising a number of flags across the build process, making the process of developing a new port more standard across all of CircuitPython. I also worked on reviewing some submitted bugfix PRs, and the additions of the F746 Discovery and F746 Nucleo boards. This coming week, I’ll be diving into the documentation for i.MX boards and doing further structural reviews once Scott’s low-power code is merged.
Outside my port work, I’ve been working with a friend on developing a new minimal STM32 dev board for CircuitPython that we’re hoping to launch in the next few months. Our hope is to make a tiny, castellated module that can be easily inserted into a prototype design, and then copied as an eagle design bloc when the design is ready for assembly. We’ll hopefully have some pictures to show in the coming weeks.
This past week I focused on moving several repositories over from using Travis CI to GitHub Actions. One of the things involved in doing that was going through and making sure the code was formatted properly and documented. The hardest library to move over was Blinka because it involved addressing over 800 items that pylint found. Most of these were making sure all of the files, classes, and public functions were properly documented, but it had code improvement suggestions as well. However, it was completely worth it because now when new code is submitted, it will be checked that it is properly formatted prior to being merged in.
I also finished up adding support for the Onion Omega2+ in Blinka and merged it in and tested it. I had to adjust the SPI module that I wrote for the Adafruit PureIO library to work with the MIPS chip and it works just as well as the built-in SpiDev module. I also tested I2C and UART and so far it seems to be working great. You can get more information about it.
At the end of last week I finished the RGBMatrix and STM32 F7/H7 reviews. Then I continued work on the ESP32-S2 port. I streamed my work at 2pm Pacific on Friday and plan to this week as well. Here is last week’s.
This week I circled back to my never-ending low power PR. I merged in the STM32 changes, tested and fixed it. So, fingers crossed, it should be close to being merged. Timing should be good because more folks have been asking for it. Expect to see it in 5.4.0.
The rest of this week and next will hopefully be ESP32-S2 focused. I’m looking forwards to jumping back in.
With many more online conferences, this may be an opportunity for people worldwide to join in who have not had an opportunity to travel. Contact organizers to see how you might participate in online events.
The PyCon US 2020 team is holding talks, tutorials, posters, and much more online.
Visit the PyCon US 2020 Remote page for published online content. Also you may subscribe to the PyCon 2020 YouTube Channel.
- Recorded talks and tutorials
- Online Summit and Hatchery programs
- Poster presenters sharing their creations
- Startup Row company presentations
- Sponsor workshop videos
EuroPython 2020 this year will be an online conference from July 23-26. They are planning the following:
- 2 conference days with keynotes, talks, lightning talks, poster session (Thursday and Friday)
- 2 sprint days with multiple sprint teams (Saturday and Sunday)
Attending the conference days will require a ticket, participating in the sprint days will be free – EuroPython.
PyCon AU has announced they are holding PyConline AU, an online event, in August 2020 – pycon.org.au.
PyCon India 2020: the premier conference in India on using and developing the Python programming language. It will be held online October 3-5, 2020. A call for proposals is now open through August 14, 2020 – Website and Twitter.
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 5.2.0 and its unstable release is 5.3.0-rc.0. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20200425 is the latest CircuitPython library bundle.
v1.12 is the latest MicroPython release. Documentation for it is here.
3.8.2 is the latest Python release. The latest pre-release version is 3.9.0a5.
1676 Stars Like CircuitPython? Star it on GitHub!
Call for help – CircuitPython messaging to other languages!
We recently posted on the Adafruit blog about bringing CircuitPython messaging to other languages, one of the exciting features of CircuitPython 4 and later versions is translated control and error messages. Native language messages will help non-native English speakers understand what is happening in CircuitPython even though the Python keywords and APIs will still be in English. If you would like to help, please post to the main issue on GitHub and join us on Discord.
We made this graphic with translated text, we could use your help with that to make sure we got the text right, please check out the text in the image – if there is anything we did not get correct, please let us know. Dan sent me this handy site too.
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, Microcenter, Raspberry Pi and more.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 18,341 humans, thank you! Join today! https://adafru.it/discord
ICYMI – In case you missed it
The wonderful world of Python on hardware! This is our video-newsletter-podcast that we’ve started! The news comes from the Python community, Discord, Adafruit communities and more. It’s part of the weekly newsletter, then we have a segment on ASK an ENGINEER and this is the video slice from that! 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. Join our Discord or post to the forum for any further questions.