View this email in your browser.
Welcome to 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. It’s been a busy week:
CircuitPython Milestones this week
This past week, the CircuitPython community reached 150 microcontroller boards capable of running CircuitPython! – CircuitPython.org
In addition, over 50 single board computers (SBC) now run CircuitPython libraries, including the Raspberry Pi, BeagleBone Black, nVidia Jetson and many more. With the Blinka library, users may use Python3 and make calls to CircuitPython functionality – CircuitPython.org.
The number of supported microcontrollers and single board computers grows every week, and you can get your board added to the list! Adafruit has four guides to help you do so:
The 100th Newsletter and Python on Hardware Video this week
This issue, following CircuitPython Day, is the 100th issue of both this newsletter and the accompanying Python on Hardware Video produced from newsletter content. Thank you to our readers for making this newsletter the best read synopsis of Python on Hardware for 100 issues running.
Thank you for making CircuitPython Day a huge success
CircuitPython Day on September 9, 2020 (9/9/2020) came last Wednesday with projects, events and CircuitPython livestreams highlighting all things Python and Python on Hardware. All videos are available on the Adafruit YouTube in this playlist for the English presentations from Adafruit and the Spanish Día CircuitPython 2020 videos are on this playlist.
If you’re interested in creating CircuitPython Day 2021 projects or hosting events, videos, or livestreams, start planning now and watch around July for announcements.
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott streams his work on ESP32-S2 SPI + PSRAM debugging.
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 items for students.
Science is fun and educational when using Adafruit parts and free, easy to follow tutorials in the Adafruit Learning System.
Shop Adafruit now
And the latest announcement! Adafruit now has over 50 STEMMA QT (SparkFun Qwiic) compatible boards! See all of your favorite breakout boards with STEMMA QT connectors.
News from around the web!
Using a Raspberry Pi to add MIDI to CV synthesizer (uses the Blinka library in Python3 on the Raspberry Pi) – schollz.com and YouTube.
Lilygo TTgo T-Watch 2020, running MicroPython: a review and some hacking – …and another thing….
Python 3.8.6rc1 is now ready for testing – Python.org, new features and download.
And a couple more watches coming out, running CircuitPython this time – Twitter and Twitter.
Communicating between an Adafruit PyRuler and a 8086NET Commander, both running CircuitPython – Twitter.
CircuitPython in the Garden (French) – Gastronom.
The latest CircuitPython builds for Espressif Systems ESP32-S2 have Wi-Fi enabled. Here, a GravitechGTT Cucumber RIS with an Adafruit SPI TFT, running CircuitPython, connecting to a Wi-Fi access point and requesting a URL – Twitter.
The Maduino Zero from Makerfabs. With a SIM808, they integrate a UF2 bootloader and the Circuitpython interpreter to connect IoT projects to the telephone network – Twitter.
A Solar Powered Internet Connected Lawn Sprinkler Project – Moving Electrons.
MicroPython Firmware Development – a multipart guide LinkledIn.
Using a FeatherCap to run FeatherWing boards off of a Raspberry Pi board, with Python3 and the Blinka library. It’s the reverse of what it was designed for but it works fine!
Python Logging: A Stroll Through the Source Code – Real Python.
A rudimentary MicroPython example of a HTTPS POST request without any dependencies. Supports Basic Auth and encodes data as x-www-form-urlencoded – GitHub.
Create an Awesome Development Setup for Data Science using Atom (when Jupyter isn’t suitable) – MLWhiz.
The Python Software Foundation has a jobs board for people looking for jobs in Python (free account creation required) – Python.org and Twitter.
PyDev of the Week: Débora Azevedo from Mouse vs Python
CircuitPython Weekly meeting for September 14th, 2020 notes and on YouTube
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? MicroPython releases version 1.13.
The most popular programming languages according to GitHub over time – Twitter.
Open Source Hardware
There are now over 1,009 certified open source hardware projects on https://certification.oshwa.org/list.html. Adafruit has certified over 410 projects out of 1,009, representing 40.63% of the certified open source hardware list – OSHWA and Twitter.
New Learn Guides!
Weather Display Matrix from John Park
Adafruit SPI FRAM Breakout – 2 or 4 Mbit from Kattni
Adafruit 128×64 OLED FeatherWing from Kattni
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 267!
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 checking back 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!
With a feature complete version of the BNO080 library on the horizon, I’ve been primarily focused on getting the CircuitPython library complete and released. While I have been working on adding the final bunch of sensor reports, Ladyada was able to add UART support and further investigate why SPI isn’t working reliably. We’ve got some more hardware to test to get a final answer on that.
One of the final report types that I added is a fun one: a motion classifier! This little bit of sensor fusion magic does its best to determine what type of activity is creating the motion that it is sensing, be it sitting on a desk, walking, running, in a vehicle(?!) and some others. I’m pretty sure they had to shrink down some PhDs and squeeze them into the sensor because that is pretty amazing.
Sometime not too long after releasing this library, we’re going to write another version with many less bells and whistles that is super simple to use, thanks to a mode within the sensor that was added for robotic vacuum cleaners. So, if you think your SOCK_SHERLOCK_9000 missing sock locating robot needs an update to its heading and guidance system, keep an eye out for that library.
Both my HCI _bleio work and Scott’s ESP32S2 additions are now merged into the mainline of CircuitPython. There are some bugfix PR’s still in progress; after they’re finished, I’ll make a 6.0.0-beta.0 release.
I’ve been working on the Blinka _bleio library. I verified it’s still working on Windows and Linux. The MacOS version still needs work, and I’ve made significant progress on that. We’re using the bleak library underneath, and the MacOS objects it uses are fairly different than what Windows and Linux present. Normally in bleak, you can just treat these objects as opaque boxes, but _bleio exposes details that make it necessary to look at them in more detail. For instance, MacOS (and iOS) does not normally give you access to BLE addresses, for security reasons: instead you’re just given a UUID. _bleio expects that addresses are available, so I’ll need to simulate this.
Our annual CircuitPython Day was last Wednesday, 9/9. A few days before, I decided to do a beginner’s introduction to CircuitPython as a live stream. It went well. I’m grateful to the Adafruit team members who helped run the stream, especially Pedro and Noe. The rest of the day was wonderful, and made me proud of what we have done and how far we’ve come in just a few years. It’s a pleasure to work on something that is so fun and useful.
My work with the CAN interface of the SAM series microcontrollers continues. I have successfully transmitted packets from the SAM E54 Xplained dev board and received them on an STM32F405 Feather running MicroPython. I also have created a pull request that adds support for the SAM E51 series, because this chip (which supports CAN just like the E54) is likely to power an upcoming Adafruit board.
However, I’m most excited about progress in a personal project with CircuitPython: a port of the standard Python
decimal library. For efficiency, CircuitPython uses “single precision” floating point numbers which only have about 7 digits of precision (22 bits), and in binary floating point simple statements like “.1 + .2 = .3” are not necessarily true due to rounding. With decimal, you can use as many digits as you need (up to the limits of RAM) and numbers that can be written as exact decimal numbers like “.1” are exact, instead of being rounded as they are in binary floating point. This makes for calculations that are less surprising to users. This library is on GitHub and I plan to submit it to the community bundle.
Here, the unreasonably large number being displayed is the number 2 raised to the power 332. In order to fit the size of screen I use, my calculator has 15 digits of precision and up to 2 digits of exponent.
I’ve been writing up guides for new products as we release them, and updating some older guides with CircuitPython usage and examples, as well as creating and endless supply of Fritzing objects for released and yet-to-be-released products. I’ve also filled extra time with miscellaneous that I keep around for that exact purpose.
This past week was CircuitPython Day. I ran a special edition of Show and Tell in Español, hosted by Àlvaro Figueroa. Àlvaro did an amazing job. We live-streamed the CircuitPython Weekly meeting. Then, Jeff and I streamed a CircuitPython Conversation where we interviewed each other about some recent projects that we worked on. The stream went incredibly well (and that’s coming from both of us expecting it to be a massive disaster). Finally, we all finished out the day on Show and Tell and Ask an Engineer, which became Ask All the CircuitPython Engineers. CircuitPython day turned out great, those watching seemed to enjoy it, and those participating seemed to have fun. Couldn’t ask for more.
This past week I started with getting GPIO working on the STM32MP1 in Blinka. However, the way that this development board was intended to be used was for companies to create a custom version of Linux, including compiling the device tree in order to get I2C, SPI, and UART working. This is beyond the scope of the average user and we decided to put it on hold until we can come up with something that’s easier.
Next, I went and wrote up a quick demo for John Park’s workshop that displayed a countdown until Halloween. This was a fun project and the only updates I needed to make to the MatrixPortal library were a couple of bug fixes.
I also started working on the Pixel Framebuf library. The purpose of the library it to make it easy for people to display text and shapes to a matrix of NeoPixels or Dotstars. This piggybacks on top of Kattni’s LED Animation library and the existing framebuf library, which I extended to work with the RGB888 format so it can be used with NeoPixels.
This has been a short week because I took Friday and Monday off for a long weekend. Around that I iterated on the native wifi support for ESP32-S2 with Dan and just merged it!!! Next, I’m fixing SPI with the PSRAM. After that, I’ll finish my changes to
adafruit_requests to support the newer WiFi API alongside the older socket-like API.
CircuitPython Day was a blast as well with a number of awesome streams.
PyGotham is a New York City based, eclectic, Py-centric conference covering many topics. PyGotham TV taking place October 2-3, 2020 with a single track of talks presented online – Event Website.
PyCon India 2020: the premier conference in India on using and developing the Python programming language. To be held online October 3-5, 2020 – Website and Twitter.
The Hackaday Remoticon will take place everywhere November 6th – 8th, 2020. It’s a weekend packed with workshops about hardware creation, held virtually for all to enjoy – Hackaday.
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.3.1 and its unstable release is 6.0.0-alpha.3. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20200912 is the latest CircuitPython library bundle.
v1.13 is the latest MicroPython release. Documentation for it is here.
3.8.5 is the latest Python release. The latest pre-release version is 3.9.0rc1.
1822 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, Microcenter, Raspberry Pi and more.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 24,923 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 first video-newsletter-podcast that we’ve started! The news comes from the Python community, Discord, Adafruit communities and more. Kattni turns the weekly news into video form for ASK an ENGINEER and Adafruit social media. 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. You may also tag your information on Twitter with #CircuitPython.
Join our Discord or post to the forum for any further questions.