View this email in your browser.
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. Let’s get started!
Make: Magazine – The Rise of Python and Annual Microcontrollers Issue
Make: Magazine’s new issue is on its way to subscribers. The headline is The Rise of Python and discusses Python on Hardware in-depth including CircuitPython. The issue is also their annual guide to microcontroller boards and features the new Adafruit CLUE board – Twitter and Author
The Make: Makers’ Guide to Boards is also on their website – Makezine and Their CLUE Review
CircuitPython 6 Art Released
Adafruit has released nice artwork for the CircuitPython 6 debut.
The CircuitPython subreddit hits 1,000 users
The CircuitPython subreddit on Reddit.com crossed the 1,000 members mark this past week! Thank you to Reddit readers for choosing to get a Python fix on this subreddit.
Adafruit is dedicated to providing the news on Python and CircuitPython in ones chosen way. Whether via Blog, Newsletter, Video, Instagram, or on Reddit, it’s there – Adafruit Blog and Reddit.
A pip user experience survey
The Python package manager (pip) team is working to improve the usability of pip, for all users. Right now, a lot of what pip does can be confusing and complicated for people who are not Python experts. The team’s objective is to understand how to improve that.
You can read about the work on the Python Software Foundation website and can hear about the work on this Python podcast.
Right now, the team wants to speak with users about the following topics:
- Who uses pip?
- How do users’ disabilities affect their usage of pip?
- How does pip documentation help users?
- What pip functionality is important to users?
- What problems do people have with pip? And how can we improve it for them?
They’re interested in speaking with people of all levels of Python experience.
They can’t stress enough – you don’t need to be a programming expert to take part. In fact they are specifically looking to hear from those who are not programmers. They’re looking for diverse users to take part in the research – if you use pip they are interested in hearing from you.
If you’re interested in speaking with the team about your experiences, the first thing to do is to sign up for UX Studies.
Open Source at Google
A summary of the contributions Google has provided to Open Source Software:
At Google, open source is at the core of our infrastructure, processes, and culture. As such, participation in these communities is vital to our productivity. Within OSPO (Open Source Programs Office), our mission is to bring the value of open source to Google and the resources of Google to open source. To ensure our actions match our commitment, in this post we will explore a variety of metrics intended to increase context, transparency, and accountability across all of the communities we engage with.
They state that their intentions are twofold: give back to the communities they depend on as well as expand support for open source overall. Google firmly believes in open source and its ability to bring together users, contributors, and companies alike to deliver better software – Google Open Source Blog.
Using CircuitPython with the Rainbow HAT
Multiple projects combine CircuitPython with the Pimoroni Rainbow HAT
An Adafruit CLUE is controlling the Rainbow HAT from Pimoroni using the Bit:2:Pi from 4tronics to provide connectivity. Simultaneous LED animation on the 7 DotStar LEDs and fading the brightness of the four 14 segment displays – Twitter.
The new FeatherCap for connecting Adafruit Feather boards to Raspberry Pi HATs – Twitter.
CircuitPython Deep Dive Stream with Scott Shawcroft
This week, Scott streams his work on FPGA and an ESP32-S2 IP address!
You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.
CircuitPython Day is 9-9-2020
Adafruit has chosen September 9, 2020 (9/9/2020) as the snakiest day of this year for CircuitPython Day! Much more to come on events and happenings to include a CircuitPython team livestream, collaboration with hardware and software folks, and highlighting all things Python and Python on Hardware. More information will be forthcoming. Ideas? Send them via email to email@example.com.
Adafruit – Back to School
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.
The Adafruit Discord Server surpasses 24,000 members
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 24,000 humans last week, thank you! Adafruit believes Discord offers a unique way for CircuitPython folks to connect. Join today at https://adafru.it/discord.
The CircuitPython Adafruit IO Library Version 4.00
The latest release for the Adafruit IO library is now out – GitHub.
In this release:
- Remove the loop_blocking method
- Fix AttributeError: ‘module’ object has no attribute ‘set_socket’ error with included examples.
To use in CircuitPython, simply install the Adafruit CircuitPython bundle.
To use in CPython, pip3 install adafruit-circuitpython-adafruitio.
Read the docs for info on how to use it.
News from around the web!
Repurposing an Open Book prototype + a new Adafruit air quality breakout to make a CircuitPython air quality monitor – Twitter and GitHub Gist.
A one-note synth bass in 35 lines of CircuitPython on a Seeeduino Xiao board- Twitter.
PicoPlanet microcontroller boards each have a design which is procedurally generated and only 10 pieces per design are produced.
I need a bit more work on the software side, then they will be available on Tindie.
More – Twitter and GitHub.
The Morgan Stanley Makerspace program helped a group of @FinTechFocus students learn how to code in Python using the Adafruit CircuitPython Express – Twitter.
Getting close to back to school. Wait…Halloween. An Oozemaster3000 inspired hourglass – Twitter.
Using the Adafruit PyPortal and CircuitPython to download a NWS radar image and putting a city layer over the top – Twitter
An animated color mask with an Adafruit Circuit Playground Express and CircuitPython – Twitter.
(I’ve) never used CircuitPython before. Turns out it’s stupidly easy. Did this in 15 minutes, max.
On the desk: CircuitPython and FPGA – Instagram.
A project with the kids: using TensorFlow? with hand pose detection on a LEGO Mindstorms running MicroPython – Twitter.
Using a MPU9250 10DOF IMU Sensor (GY-91) with MicroPython on ESP32 – YMT lab (Japanese)
Python import: Advanced Techniques and Tips – Real Python.
Python Bindings: Calling C or C++ From Python – Real Python.
Why Python Written in Python is Faster Than Regular Python – Medium.
A gateway to Python: this really handy set of tutorials on numpy, pandas, matplotlib – Twitter and GitHub.
latexify_py – Generates LaTeX math description from Python functions – Twitter and GitHub.
Reminder: the deadline to nominate someone for a third quarter Python Software Foundation Fellow membership is Aug. 20. To see the criteria and send your nomination, please visit python.org.
PyDev of the Week: Julia Signell on Mouse vs Python
CircuitPython Weekly for August 10th, 2020 notes on YouTube
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? RedMonk’s Language Popularity Survey – Python overtakes Java.
Python Editing 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 and YouTube video of Nicholas Tollervey at EuroPython 2019.
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 was 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:
New Learn Guides!
PyRuler Video Conference Panic Buttons from John Thurmond
MIDI Solenoid Drum Kit from Noe and Pedro
Adafruit TDK InvenSense ICM-20948 9-DoF IMU from Bryan Siepert
DIY Robotic Sky Tracking Astrophotography Mount with CircuitPython from Dylan Herrada
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 264!
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 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!
The last week was short for me thanks to a much-needed camping trip to my favorite seaside campground. Alas, I don’t have any spectacular pictures to show, so a picture of my dog impatiently anticipating our arrival will have to suffice:
The remainder of my week saw me bouncing between a few tasks, but mostly focused on the MS8607 Pressure, Temperature, and Humidity (PHT) sensor from TE Connectivity. Because of their many applications, PHT sensors are a common offering from companies making sensors. This one is no different, and does an admirable job of measuring a wide range of all three environmental conditions. Each and every MS8607 sensor is calibrated at the factory and the calibration constants stored in the sensor itself.
As with other sensors with integrated calibration data, one of the most challenging parts of the driver writing process is implementing the algorithm used to convert the calibration constants into corrections to be applied to the raw sensor data. Here is the fun flow chart for applying corrections to the pressure and temperature data:
As I write this, I’m finishing up the Arduino library and I have finished the CircuitPython library. Once I wrap this up, I’ll hopefully be moving onto assembling and testing the CAN Bus FeatherWing that’s been sitting on my bench while I wrap up a handful of sensors.
I’m still doing the ATT (attribute) protocol implementation for HCI _bleio. I’ve got service discovery working, and I am finishing up characteristic and descriptor discovery. The next step after that is to implement read and write for characteristics, and to do characteristic notification. Once that is done, I’ll have all the pieces in place for Bluefruit Connect app to be able to talk over BLE to a board using an HCI BLE adapter, like the M4 Airlift or the PyPortal. Things are going smoothly and I’m looking forward to that end goal.
At the moment, I’m working on bringing the Sharp Memory Display forward into the world of displayio. Right now you can already use these displays –both this large 2.7 inch 400×240 one and the 1.3 inch 144×168 one – in CircuitPython, but you have to use an older “framebuf” API for interacting with them. With the new support, it will work just like other black and white displays, with text, bitmaps and shapes all supported. In addition to doing the coding, there will be a new page in the Sharp Memory Display guide showing you how to get started.
I updated the BME680 and 0.96” OLED display guides to feature the STEMMA QT version, assisted with the ICM20948 guide, and started the guide for the ST25DV16K. I also created a few more Fritzing objects. Check out the Adafruit Fritzing Library for a sneak peek at some future products.
I created a new role on the Adafruit Discord server – the PCB Helpers role – and invited three community members who were already quite active in the #pcb-design channel to join the role. All three accepted. If you have questions about PCB design, these folks are here to help.
I also took some time to take care of some miscellaneous things that needed to be done. There are plenty of things that are taking priority, but ensuring that I’m keeping up with the misc. is equally important.
This week I worked on wrapping up testing for the NeoPixel and implementing PulseIn and PulseOut on the ESP32-S2. Both have been fairly straightforward, since the ESP32 architecture has a dedicated pulse control peripheral for creating and decoding pulse trains. Interestingly, the trickiest part of the implementation has been working around assumptions within CircuitPython that a peripheral with these capabilities does not exist – PulseOut, for example, assumes that the implementation will need to bit-bang a PWM output up and down, and thus requires a PWM peripheral object as a parameter despite a dedicated pulse transmitter like the RMT not needing one. Thus, we’ve started thinking about a number of API changes to work through these assumptions, and even breaking PWMOut from PulseIO completely into its own module, PWMIO. I’ll be planning out these changes more this coming week once PulseIn and PulseOut enter PR review.
This past week, I mainly focused on refactoring the MatrixPortal library and finished that up. I had originally taken the PyPortal library as a single file and modified it to work with the RGB Matrix shield and Metro M4 Airlift Lite board. While it worked, it did require loading everything, which could be a bit memory intensive. With the refactoring, it is able to be used with just the portions you need, though the original ease of use from before refactoring is still present that ties everything together.
I also worked on testing some changes to the PiTFT install script that were done by Ladyada. I wanted to make sure that it was still working on each display. There were only a few minor issues that I found during testing and those were promptly fixed, so everything is working great with the latest version of Raspberry Pi OS.
This week I’ve been plugging away at adding Wifi support to the ESP32-S2. I’ve got network scanning working and connecting working. Next up is adding the socket APIs used to perform all sorts of internety things. It will also add ping to make debugging easier. The file system seems flakier, so I’ll likely need to debug that at some point too.
In my evenings, I’ve continued to poke at Python FPGA stuff and made further progress on hooking everything up. I’m now working on testing it to make sure everything is hooked up right.
As always, you can get latest I’m working on by watching my latest “Deep Dive” stream.
PyCon AU is holding PyConline AU, an online event, from 4–6 September 2020 – pycon.org.au.
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 and Call for Proposals.
PyCon India 2020: the premier conference in India on using and developing the Python programming language. Held online October 3-5, 2020. A call for proposals is now open through August 14, 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.
Data Science using Python is a consortium of 970 Meetup groups with over 700K members. There are meetings happening worldwide, see their main page for details – Meetup.
PyData is a consortium of 175 groups with about 170K members, and provides a forum for the international community of users and developers of data analysis tools to share ideas and learn from each other – Meetup.
PyLadies has 28 groups with over 28K members. Find out what’s happening in PyLadies Meetup groups around the world and near you – Meetup.
PyLadies is revamping the PyLadies presence and global leadership to enable better run chapters, locally and globally. The intent is to bring together all of the local chapters to help collaborate, share ideas and also start a PyLadies Global Council to oversee the Global PyLadies Community.
To do this, however, they need your help! PyLadies wants to engage with PyLadies members! Members may now register to become a basic member or a voting member – PyLadies.
Nominations for the PyLadies Global Council – 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.3.1 and its unstable release is 6.0.0-alpha.2. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20200810 is the latest CircuitPython library bundle.
v1.12 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.0b5.
1791 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.
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.
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.