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). Over 8,275 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.
Happy Thanksgiving Week for those in the US! 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. Here’s the latest:
CircuitPython 6.0.0 Stable and 6.1.0 beta 1
CircuitPython 6.0.0, the latest major revision of CircuitPython, is now the new stable release.
Major new features and improvements since 5.x
- New port to ESP32-S2 chip.
- RGBMatrix display support.
- countio module to count pulses.
- watchdog controls hardware watchdog timer. Only on certain ports.
- vectorio provides native displayio shapes.
- canio provides support for CAN bus operations.
- _bleio adds support for HCI-based BLE co-processors, such as AirLift boards.
- aesio provides support for AES computations.
- async/await made available by default in many builds; support improved.
- Network modules are revamped, adding wifi, socketpool, ssl, and other modules. Disabled socket, wiznet5k and network modules. They will be removed in 7.x in favor of networking * libraries.
- Updated stage and pew libraries.
- _pixelbuf improvements.
- Improved USB serial detection.
- json can now read from stream objects.
- pulseio.PWMOut is split out into pwmio.PWMOut. It is still available in pulseio, but that is deprecated and will be removed in 7.x.
- Added memorymonitor for memory debugging. It is not enabled by default.
- Reduced power consumption (light sleep) during time.sleep() when possible.
CircuitPython 6.1.0 Beta 1
This is the second beta release of 6.1.0. (This first was broken.) It includes many changes that were done while 6.0.0 release candidates were in pre-release. Please use 6.0.x if you need a stable version of CircuitPython on all ports except ESP32-S2. Please use this release or newer for the ESP32-S2.
Core Development Milestone
Work on the CircuitPython core just crossed 2,000 closed pull requests! – GitHub.
Adafruit MagTag Projects
The Adafruit MagTag board with ESP32-S2 and a 2.9″ eInk display has seen a flurry of project development on social media. Here are just a few of the projects seen this week:
Making MagTag simple test projects, including a conference badge – GitHub.
A MagTag Day of Week display – todbot Blog.
Updating a weather station monitor with an Adafruit MagTag – Twitter.
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott streams his work on ESP32-S2 debugging and JSON speedups.
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
Adafruit is shipping orders!
Adafruit is stocked and shipping orders! Now is the best time to get orders in for your favorite products, including holiday projects and gifts – Adafruit.
Adafruit is currently offering a one-time use discount code of 20% off after adding two factor authentication (2FA) to an Adafruit account. The code may be used until November 26, 2020. See this guide for details.
ESP32-C3 RISC-V microcontroller information leaked
It’s very cool to see a high power RISC-V core from espressif. CircuitPython won’t work on it, unfortunately, because the USB is a built-in usb to serial converter, so folks won’t be able to do mass storage with it. Longer term, it might be able to support CircuitPython with a BLE-only CircuitPython workflow. No word on a MicroPython port possibility. More info – Hackaday.
News from around the web!
Como iniciar en ESP32-S2 con Arduino y Circuitpython / How to boot into ESP32-S2 with Arduino and Circuitpython – YouTube (Spanish).
QuickPYTHON, a retro-futuristic educational interactive coding environment. Powered by Python and nostalgia – GitHub.
“Our daughter, like many kids, enjoys pressing buttons and flipping switches. I attempted to build her a ‘busy box’ to satisfy her button-pushing tendencies. I started simple: a couple of light-up buttons and some LEDs. The Trinket M0 from Adafruit, was my starting point. I chose it because it was small and could run CircuitPython.” – curtmerrill.com.
snakeware is a free Linux distro with a Python userspace inspired by the Commodore 64. It boots directly into a Python interpreter, which you can use to do with whatever you want – GitHub.
The BBC Doctor Who “HiFive Inventor” Coding Kit – cnx-software.
The Origin of the “MIT License” – IEEE Xplore.
Make a simple calculator with guizero and Python – blogmywiki.
PyDev of the week: Reuven Lerner on Mouse vs Python
Developing a CircuitPython driver for the SparkFun Qwiic Twist – Twitter.
MorphESP 240 by Morpheans – an ESP32-S2 dev board with integrated display at CrowdSupply – CrowdSupply.
CodeBug Connect: cute, colourful & programmable IoT wearable, using MicroPython, on Kickstarter – Kickstarter.
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 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 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 281!
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!
This week saw me doing guide work for some upcoming sensors, as well as new driver work for the MLX90395 3-axis magnetometer from Melexis. This is a neat sensor, similar in use to the TLV493D as it is designed for measuring the orientation and position of magnetic fields from magnets. It will be fun to see how this can be used for new and interesting motion detection or sensing projects!
I did the final steps for the CircuitPython 6.0.0 stable release on Monday evening last week. Thanks to all who worked on and tested this really significant release!
I am continuing to work on light sleep and deep sleep in CircuitPython, after significant work by Scott and @microDev. We iterated on the API, and I’m now doing the boilerplate for that API. As soon as that compiles, I will then implement deep sleep for a time duration on the ESP32-S2 as the first case. Scott and microDev1 have done a lot of the internal work already, so I hope that part will not take long. Then I’ll work on deep sleep for pin transitions, and then light sleep for both durations and pins.
I did some bug fixing on ESP32-S2 during the past week. First, I fixed a problem which prevented CircuitPython on the ESP32-S2 from connecting to certain secure websites, including thingspeak and Adafruit IO. Second, I fixed a problem where the board would become unstable after using an I2C device. Both are working much more stably now!
This week I published the Which CircuitPython Board is Right for You? guide. This guide is designed to help you choose between CircuitPython boards based on different features such as WiFi enabled, Bluetooth enabled, built in display or tiny boards. It also has a page explaining the differences between the different chipsets available on CircuitPython compatible boards, and the pros and cons of each. If you’ve held off getting started with CircuitPython because you were overwhelmed by the choice of boards, or you’re a seasoned pro trying to decide which board to get, this guide is for you!
I also tested an update to the PyBadger library. Thanks to @foamyguy, it now supports the new MagTag board. If you’re looking to use your MagTag as a badge, check out the example included with this update.
This past week I fixed the Raspberry Pi 1.3” display driver. When it was in orientations other than zero degrees, the display was offset by 80 pixels. I rewrote the Device Tree Overlay based on a similar one we had for the 1.14” display, which was my first experience working on a Device Tree Overlay.
I added a few improvements to the MagTag library based on feedback from a few projects that were converted to work on it. My goal with this library was to make it extensible, but easy to develop on. One of the projects I made while developing this was a bitcoin display.
I’ve also been getting back into working on some of the web-based tools such as making a few fixes to my existing code and I started working on an online ESP Tool. The ESP tool would allow you to upload a bootloader and have it program your ESP board. It’s not currently working, but I am debugging it at the moment.
This past week I’ve been doing my best to run down bugs CircuitPython. At the end of last week I was looking into adding grayscale eInk support and also found and fixed a couple bugs in our grayscale conversion. As of this morning, they are all merged into the main branch of CircuitPython.
We just released 6.0.0 stable, which is stable for our core platforms, SAMD21, SAMD51 and nRF52840. However, it isn’t stable on the ESP32-S2 yet. So, I’ve been doing my best to find and fix issues. I attempted to release our first 6.1.0-beta.0 but it turned out to include a pretty nasty bug. So, I’m hoping to do a beta.1 today. Folks, with ESP32-S2 boards like the MagTag should continue to use the latest pre-release. It’ll be better than 6.0.0 for the -S2.
This period of bug squishing happens for every new port we do for CircuitPython. Once we’re through it, things should be very exciting. The -S2’s native USB combined with WiFi and new low power API promises to bring CircuitPython’s ease of use to a whole new class of long-running, connected applications.
Women Who Code CONNECT Forward, December 2-4, 2020 online – Women Who Code.
Join educators, researchers, and the developer community for micro:bit LIVE 2020 virtual, an online event December 4-5, 2020. There is no cost to register and attend – Microbit.Org.
PyDay Chile 2020 Conference: December 5, Online. The deadline for applying for talks is November 18 – pyday.cl.
Virtual Girls Into Coding #6, December 13th: a free event for girls ages 10-14 to explore online coding activities, online robotics, 3D Design, electronics, and physical computing using the BBC micro:bit. This is a fantastic opportunity to use Python (text-based language) and to get some hands-on making time from the comfort of your home – Eventbright.
The 2021 Open Hardware summit will be held online, Friday April 9, 2021. The summit will be livestreamed, but ticket holders will have access to additional interactive portions of the summit like meet-and-greets, workshops, and sponsor booths. Find details, including ticket and sponsorship information at 2021.oshwa.org – OSHWA.
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.
20201123 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, Microcenter, Raspberry Pi and more.
Job of the Week
Learning Coach – Science & Engineering – Adafruit Jobs Board.
A Learning Coach is any educator hired by Dexter to be a regular faculty member. Our Learning Coaches are experienced, collaborative, committed to effective teaching and professional growth, love working with students inside and outside of the classroom, and engage in their work with dedication and humor.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 25,894 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.