ICYMI (In case you missed it) – Yesterday’s Python on Microcontrollers Newsletter from AdafruitDaily.com went out.
If you missed it, subscribe now! – You’ll get one fab newsletter each Tuesday (before this post the next day). Over 7,660 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.
Hi everyone! It’s 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. And now for the newsletter:
Hello! Here’s 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. Let’s get started!
CircuitPython 5.1.0 Released
CircuitPython 5.1.0 stable was released this week by the CircuitPython development team. This is the latest minor revision of CircuitPython and the first 5.1.x stable release. It is identical to 5.1.0-rc.0.
New features and improvements since 5.0.0
- ulab, a numpy-like fast vector module: Perform mathematical operations 10-50x as fast as raw CircuitPython. It is enabled on almost all boards except those with SAMD21 microcontrollers – Guide
- Support for “f-strings”, a more convenient way to build strings dynamically. It is enabled on almost all boards except those with SAMD21 microcontrollers.
- And many more, including two new board definitions.
Read more – Blog and Downloads.
Stanford – a free introductory coding course in Python (Deadline TODAY)
As an act of community service, a group of Stanford computer science instructors are coming together to offer their teaching services free of charge for people who want to learn introductory coding in Python, subject to availability. This is a one time offering for the COVID-19 pandemic.
Course Dates: April 13th until May 22nd.
Where: Anywhere with internet.
Who: Learners, with no programming experience, and time to dedicate to learning.
Student application deadline: April 8th (TODAY!!)
The learning experience, called CS106A – Code in Place, will be an introductory programming course using the Python language, using material from the first half of Stanford University’s established intro course, CS106A. It assumes no prior programming experience. You should expect to be working 15 to 20 hours a week and you will need an internet connection strong enough to stream video. Code in Place require no previous background in programming—just a willingness to work hard and a love for learning. It requires considerable dedication and hard work, over a course of 5 weeks.
Adafruit hardware now being certified as Open Source!
Adafruit is an Open Source software and hardware company. The Open Source Hardware Association provides a certification process, the results of which offer an easy and straightforward way to indicate that your hardware meets a standard for Open Source.
To that end, we’ve been working on submitting certification applications for Adafruit hardware to the OSHWA. We’ve submitted a significant number of applications, and we’re super excited to announce that the first approvals have been granted. As we continue to receive certifications, we’ll keep you updated here.
The following boards are now Open Source certified:
- Adafruit Feather M0 Express
- Adafruit Feather M4 Express
- Adafruit Feather nRF52832 Bluefruit LE
- Adafruit Feather nRF52840 Express
- Adafruit Grand Central M4 Express
- Adafruit HalloWing M0 Express
- Adafruit ItsyBitsy M0 Express
- Adafruit ItsyBitsy M4 Express
- Adafruit Metro M4 Express AirLift
- Adafruit NeoTrellis M4 Mainboard
- Adafruit PyBadge
- Adafruit PyGamer
- Adafruit PyPortal
- Adafruit PyRuler
- Adafruit Trinket M0
Check out the Adafruit boards in the OSHWA Certified Projects Directory for all the details!
Crowd Supply campaign opens for the CircuitBrains Deluxe
The CircuitBrains Deluxe by Null Byte Labs LLC has gone live on Crowd Supply. CircuitBrains Deluxe is the smallest solderable ATSAMD51 castellated module on the market at 1.15 x 1.15 x 0.15” (29 x 29 x 3.5 mm). They’ve taken care of the tough work of pin mappings, power & decoupling layout, clock, flash, assembly, bootloader, and firmware. The core of CircuitBrains Deluxe is the Microchip ATSAMD51J19 32-bit ARM Cortex M4 microcontroller, which can run up to 120 MHz. In addition to a powerful microcontroller, each CircuitBrains Deluxe module has 8 MB of Quad SPI flash onboard – Crowd Supply and Vimeo.
Adafruit Update
Adafruit Industries continues to run with 100% of employees being paid and working. 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 manufacture and distribute some PPE (Personal Protection Equipment) such as face shields, and manufacture electronics for essential life-saving/preserving equipment and development which is needed in New York and beyond –Blog.
The CircuitPython team released CircuitPython 5.1.0 stable and work on 5.2.x is underway. Would you like to join us on CircuitPython development? On Discord, head to https://adafru.it/discord (the #CircuitPython channel) to discuss things. And check out Awesome CircuitPython for a wide range of information.
Ed: Are you working on projects with CircuitPython or have good CircuitPython/MicroPython/Python news? Tag your material on Twitter with hashtag #CircuitPython. I’ll scan and include items for the next newsletter. Thanks!
News from around the web!
Making a Temperature Logger with the Adafruit Feather STM32F405 Express – Twitter and Maker.io.
How to read data from analog sensors using an MCP3008 with Raspberry Pi and Blinka – The Amplituhedron.
Are you interested in using CircuitPython with Azure IoT? If so, please take 20 seconds to fill out a form to help convince Microsoft to back this idea – Twitter
Unlock the four Mysteries of self in Python – Medium.
Using the Python zip() Function for Parallel Iteration – Real Python.
A Python script to send emails – morioh.com and YouTube.
Predicting the Fake News using Python – YouTube
How To Create Virtual Onscreen Keyboard Using Python And Tkinter – Master Programming and YouTube.
Migen, LiteX and how Python is useful for chip design – Twitter and Slides.
Using Python for creating hardware to record FOSS conferences – YouTube.
Using LiteX (based on Migen) lets you do FPGA design in Python – GitHub and Twitter
A NeoPixel dodecahedron with custom milled PCBs, running CircuitPython – Twitter.
A Godzilla Monster Light Up Hand Washing Sign – Instructables.
ALICE, a Kinect controlled FPV mini-mech, powered by CircuitPython on an Adafruit Feather – Twitter.
In the Virtual RepRap Festival 2020, user RenniTinkerDork prints 3D frames and embellishes them with electronics. This one uses a Feather M4, Datalogger wing, DotStars and NeoPixels – YouTube.
Friday Fun: Lockdown Projects – free projects for Python and Raspberry Pi, taken from the Pi User section in Linux Format magazine by Les Pounder – Twitter and bigl.es
- Hack Minecraft
- Create GUI apps
- Use Dropbox to share sensor data
- Make your own information radiator
Thermal printers for makers and programmers – includes a section on CircuitPython compatibility – Twitter
Learning MicroPython on micro:bit – DIYODE Magazine.
Using MicroPython on the FireBeetle ESP32 board – Creatronix.
Connecting a MLX90393 magnetometer to an Adafruit Feather M0 running CircuitPython – Learn Micropython.
The Learn Micropython website has other interesting projects – Learn Micropython
PyDev of the Week – Pablo Galindo Salgado on Mouse vs Python
CircuitPython Weekly Meeting for April 6th, 2020 on YouTube
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? CircuitPython.org downloads.
Made with Mu
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 microcontrollers and Single Board Computers (SBC) grows every week. This section outlines which boards have been 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 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!
Adding a Single Board Computer to Blinka from Melissa LeBlanc Williams
CLUE Sensor Plotter in CircuitPython from Kevin Walters
No-Touch Hand Wash Timer for Circuit Playground Express and CLUE from John Park
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 an eye out for more updated guides!
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 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 224!
New Libraries!
Here’s this week’s new CircuitPython libraries:
Updated Libraries!
Here’s this week’s updated CircuitPython libraries:
- Adafruit_CircuitPython_CLUE
- Adafruit_CircuitPython_LPS2X
- Adafruit_CircuitPython_ATECC
- Adafruit_CircuitPython_MIDI
- Adafruit_CircuitPython_HTS221
- Adafruit_CircuitPython_DPS310
- Adafruit_CircuitPython_LIS3MDL
- Adafruit_CircuitPython_LIS2MDL
- Adafruit_CircuitPython_Logging
- Adafruit_CircuitPython_LED_Animation
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 checking back for download stats coming soon!
What’s the team up to this week?
What is the team up to this week? Let’s check in!
Bryan
This week has been as expected more work to migrate our existing Arduino libraries to GitHub Actions. I’ve largely finished moving everything that was previously on Travis CI, so I’m now moving onto the larger remainder of the libraries that had not been under continuous integration. Not having been under CI means that, for the most part, the remaining libraries either are not documented well or their documentation doesn’t use the Doxygen formatting that we use to automagically turn the inline documentation into a nicely formatted web page that is more easy to browse.
One of the great things about Doxygen is that, like other things like Sphinx for Python docstrings, it forces the code and the documentation for the code to be colocated, which makes it easier to keep your docs up to date. Doxygen and similar tools will also give you warnings if your documentation isn’t up to snuff or has pieces missing. We use this feature in our CI setup to test the documentation of code that has either been merged or submitted as part of a Pull Request.
Dan
I finished the initial BLE pulse oximeter library, and passed it on for use. But pulse oximeters are rare right now due to the Covid-19 pandemic, so it may be awhile before we can get some more for a project.
I am finishing up the SAMD51 spurious flash writes fix to the UF2 bootloader. The bootloader now waits for the board voltage to be adequate and stable before launching the user program.
Jeff
Continuing on the theme of Protomatter, the LED matrix library now works with the nRF52840 Feather, and is adapted to work with the displayio library.
A 5.1.0 stable is likely, because of a couple of small problems that were reported and fixed in ulab since rc0. I’ll be talking about it with other developers before making a final decision.
Kattni
Last week, I put together my first video podcast for the Python on Hardware newsletter. Previously, Phil and Limor would go through the newsletter on Ask an Engineer and we would post the clip separately to YouTube etc. later in the week. With all the recent changes, Phil and Limor’s focus has shifted to Adafruit assisting with the COVID-19 outbreak, and they didn’t get a chance to go through it during the live stream. So, I was asked to create last week’s video afterwards. This week, I was asked to put together the video in time for Ask an Engineer, and the plan is for me to continue to do so for the foreseeable future. If you want an overview of the newsletter each week, check it out. This week: Python on Hardware Newsletter #76!
We have a series of standards to which we hold the CircuitPython libraries. To that end, we have a list of Library Infrastructure Issues on circuitpython.org/contributing aggregated by our super helpful Adabot script (thanks @sommersoft for all the work on that!). As new products are on hold for now, it’s a great time for spring cleaning, so I’ve been going through the list to get it taken care of. I’m starting with getting Read the Docs issues in order, as there are quite a few. We’ll see what’s next. The plan is to get through as much as possible. The list will never be empty, but I’ll get it as clear as I can. Keep an eye on the list to stay up to date with the progress.
Melissa
This past week with my guide on adding a board to Blinka in moderation, I made a few improvements to it and it has now been published at https://learn.adafruit.com/adding-a-single-board-computer-to-blinka.
I finished up with the dashboard reskin as well. It is currently being reviewed by the graphic designer and will soon be available.
With those projects out of the way, I decided to turn my attention to the circuitpython.org. I went through all the boards and figured out the date that each was added. After that, I added a date sorting feature so that boards could be sorted by the date they were added. This allows you to find the newest boards easily. I also added an RSS feed to easily see any new boards that are added.
Scott
Last week, I wrapped up the BLE MIDI work. The last outstanding item is to get the BLE MIDI library in the bundle and then it’ll be ready for John Park to teach. There are a couple fixes in CircuitPython, so we’ll release an unstable release to include them.
Since wrapping that up, I’m working on wrapping up the initial low power work. I ran down a number of issues across ports, merged and then had to update the brand new LiteX port. The LiteX port is done by Sean Cross (@xobs) for the Fomu, an FPGA development board. I had fun updating the LiteX port code and then testing on my Fomu. Pretty wild to see CircuitPython on an FPGA which is much more flexible than our normal microcontrollers.
Tomorrow I’ll be doing some more thorough tests on the lower power code while it is reviewed. Then, I’ll either continue low power work or start poking at the ESP32-S2.
Upcoming events!
The PyCon US 2020 team announces planned talks, tutorials, posters, and much more online.
To participate, Go to the PyCon US 2020 Remote page to subscribe to receive 5-8 email notifications over the next 6 weeks for published online content. Also you may subscribe to the PyCon 2020 YouTube Channel. Expected content:
- Recorded talks and tutorials
- Online Summit and Hatchery programs
- Poster presenters sharing their creations
- Startup Row company presentations
- Sponsor workshop videos and job postings
The organizers appreciate the community’s patience as they work through the logistics of gathering and uploading the recordings. The goal is to begin providing content about April 15, 2020, right when PyCon was scheduled to begin.
IoTFuse is being billed as the world’s first IoT-enabled virtual conference. April 14-16, 2020 – Website
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 next 3-4 months, please let us know on Discord or on Twitter with hashtag #CircuitPython.
Latest releases
CircuitPython’s stable release is 5.1.0. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20190405 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.
1653 Stars Like CircuitPython? Star it on GitHub!
Call for help – CircuitPython messaging to other languages!
We 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 – 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, Microcenter, Raspberry Pi and more.
17,680 thanks!
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 17,680 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 first 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.
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. Join our Discord or post to the forum for any further questions.
Why is ulab not supported on the SAMD21 devices (i.e. Circuit Playground Express)?
BTW, CircuitPython 5.1.0 released 4/8/20, and 5.2.0 released 4/9/20.. any plans for 5.3.0 tomorrow 😉
Why is ulab not supported on the SAMD21 devices (i.e. Circuit Playground Express)?
BTW, CircuitPython 5.1.0 released 4/8/20, and 5.2.0 released 4/9/20.. any plans for 5.3.0 tomorrow 😉
ulab requires more resources than the SAMD21 can provide. The differential cost of the SAMD51 or nRF52840 is not much.
The CircuitPython team is working extra hard at present to build in community requested resources. The plan is to make releases for significant changes. The addition of LiteX came within days of ulab and f strings and was worth a bump.