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 Wednesday).
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.
Over 7,100 subscribers worldwide!
CircuitPython snakes its way to the Teensy 4.0
CircuitPython is now available for Paul Stoffregen’s Teensy 4.0. This port of CircuitPython is super-early, not optimized, cutting-edge… there is a ready-to-use HEX file to experiment with. Open it with Teensy Loader and program onto your Teensy 4.0, for CircuitPython at 600 MHz.
In 20 minutes, actually less than that, we were able to make an IoTeensy project. Scott and Artur have done an amazing job bringing CircuitPython to the NXP iMX RT1062. This chip holds a lot of promise! We threw together a quick IoT project to test I2C and SPI – the OLED is an I2C device, and the AirLift FeatherWing provides WiFi over SPI. This demo connects to our AP, then queries the Adafruit quote service to get an inspirational quote every 3 seconds. The JSON is parsed, split, and displayed on the OLED by scrolling. This was really fast to put together, only about 20 minutes and 100 lines of code – YouTube.
CircuitPython i.MX Feather progress
And hackster.io has some coverage on “Arturo182’s NXP i.MX RT10xx Port Into CircuitPython Codebase”.
Python slithers its way to Arduino
The Portenta H7 is a powerful STM32H747XI dual Cortex®-M7+M4 32bit chip that runs pretty fast – SDRAM was added, and flash storage. If you’re going to want to get TinyUSB running on this thing, we have support for the STM32 H7 series. The board is Feather-like, and has a STEMMA/QWIIC-like connector, that’s good to see that direction as that is where the market went.
The Portenta kinda reminds us of the Pyboard D-series with STM32F767 and WiFi/BT from MicroPython. It has similar connectors on the bottom, a fast chip, WiFi/BT, etc.
CircuitPython 2020, where do we want to go together?
#circuitpython2020 is our annual reflection on the state of CircuitPython. For the last couple weeks folks have sent in some wonderful stories, ideas, suggestions and more. See the kick-off post for all of the details.
Here are all the posts that came in, thank you!
- David Glaude’s #circuitpython2020
- @hierophect and Don’s #CircuitPython2020
- @jerryn’s Thoughts about CircuitPython in 2020 #CircuitPython2020
- @foamyguy’s #circuitpython2020
- Bryan’s Plans for CircuitPython in 2020 #CircuitPython2020 @siddacious
- @tannewt’s focus for #CircuitPython2020
- Two #circuitpython2020 email summaries
- Dan Halbert: thoughts for #CircuitPython2020
- #CircuitPython2020 updates from the Twitterverse
- Wayne W’s #CircuitPython2020
- Adaveach’s #CircuitPython2020
- @tammymakesthings’ Thoughts on #CircuitPython2020
- @ntoll’s #CircuitPython2020
- #CircuitPython2020 email from Stew
- A story of this past year from Melissa and some thoughts on the future on CircuitPython in 2020 #circuitpython2020 @makermelissa
- @sommersoft’s 2020: Year Of The Blinka (v3)
- Mini #CircuitPython2020 posts so far
- Brent’s Thoughts about Python on Hardware 2020 #CircuitPython2020 #IoT
- @deshipu’s #CircuitPython2020
- @theavalkyrie’s thoughts on #CircuitPython2020
- HomeKit in #CircuitPython2020 from @mikeholczer
- #CircuitPython2020 Thoughts from @hukuzatuna
- Jeff’s Ideas for Python on Hardware in 2020 – Time & Timekeeping
- #circuitpython2019 wrap-up post
News from around the web!
Baby Yoda glows with Circuit Playground Express – Twitter.
From YouTube – “If it wasn’t for CircuitPython I would of never got in to coding and would still be lost in this great and fun world of electronics with coding elements. Keep making this and everything you do great thanks again.”
The Undercroft is having a “Python & Pyportal” event on 1/29/20 at 6:30pm, BYOP, bring your own portal! – Twitter.
Doctor Who “psychic paper” powered by a Feather – Twitter.
Expect some Ada overlap with Doctor Who all this year! – Twitter.
Hacked / modded iPad keyboard with a Feather – Twitter.
Save the World with Code: 20 Fun Projects for All Ages Using Raspberry Pi, micro:bit, and Circuit Playground Express by Lorraine Underwood – Amazon.
Scratch 3 extension for the Circuit Playground Express. You can view the available extension blocks here – Scratch 3 OneGPIO Extensions.
GEMMA based 3D printed ring prototype – Twitter.
MagicLight BLE Bulb Circuit Playground Bluefruit Control – YouTube.
Programmable USB Hub by Capable Robot Components is a USB hub with per-port power and data disconnects + dev board + I2C, GPIO, and SPI bridges, and it works with CircuitPython! Here is the latest update – Crowd Supply.
Adafruit PyPortal from Twitter to weather – robotsandphysicalcomputing.
Here’s a CircuitPython Driver for the SDS011 Pollution Sensor – GitHub.
We’ve been posting a bunch of “top 10” lists of 2019, and the decade on Adafruit for the new year. The number one download from Thingiverse, one of the places we host our 3D files, was the Watchmen NeoPixel Goggles! Powered by CircuitPython, NOTHING EVER ENDS – Adafruit.
Also in the top 10 for 2019 in video, the Adafruit PyGamer! – Adafruit.
For the Top Ten New Products of 2019, as expected, the CircuitPython based products topped the list with Circuit Playground Bluefruit – Bluetooth Low Energy coming in number one – Adafruit.
Tooling Tuesday: Tio – bigl.es. Works with CircuitPython too!
From Discord –
“Ease of getting up and running with CircuitPython left everyone awestruck.”
pymata-cpx and FirmataCPx: Remotely Monitor And Control. An Adafruit Circuit Playground Express using Python.
The latest ESP 32 datasheet has been posted – ESPRESSIF.
The first ESP32 non-MicroPython File manager A-Explorer – M5Stack Community.
$2 Wemos W600-PICO WiFi IoT board ships with MicroPython firmware – CNX.
Rafael made a small 3D print model for the Huzzah ESP8266 to keep the jumper wires in a row – thingiverse.com
Add USB Support to any project using Bitluni’s cheap USB host microcontroller – YouTube.
Rocking out the NeoPixel suit at the Media Art Festival in Otaru, Japan – Twitter.
NeoPixel-based “Madonna” inspired bra – Twitter.
CES2020: Primordial Soup of Innovation – Learning by Shipping.
Full-color printing on flexible circuit boards – Twitter.
11 top open-source API testing tools: What your team needs to know – TechBeacon.
Ferus Festival: Sister Sylvester “The Eagle and the Tortoise” – Adafruit.
Qt for MCUs 1.0, runs on the NXP i.MX RT1050 and STM32F769i – Qt Blog.
This project aims to bring Swift to the world of embedded systems and IoT. It enables using Swift on microcontrollers with no operating system and with minimal resources available – GitHub.
Here’s a Playdate December 2019 update – play.date
Zephyr Tutorial: Bluetooth Low Energy Development – novelbits.io
Python args and kwargs: Demystified – Real Python.
30 Python Best Practices, Tips, And Tricks – Towards Data Science.
Slither Into Python: An Introduction to Python for Beginners – free to read online.
Considering Python’s Target Audience – 2017.
20 best Python questions at stackoverflow in 2019 – Python Weekly reports.
Embed any image into a prime number – primify.
Creator of Python Programming Language, Guido van Rossum, Oxford Union – YouTube.
5 Python GUI Frameworks for Developers in 2020 – morioh.
Build Third Party Applications APIs with NoCode – NoCodeAPI.
Bluetooth LE Audio could be the biggest news out of CES 2020 – Techradar.
Nordic announces its entry into the Bluetooth audio market with a platform supporting the forthcoming LE Audio specification for high-quality wireless audio – Nordic.
Roadmap for Makerspaces – makerbit.com
How to get kids to love to write – WaPo.
CircuitPython Weekly for January 13th, 2020 on YouTube.
PyDev of the Week: Tyler Reddy on Mouse vs Python
AR (Augmented reality puppet with Circuit Playground Bluefruit – Adafruit.
Testing out the TensorFlow micro speech demo on Adafruit CLUE – Adafruit.
micro:bit + Feather = match made in heaven – Adafruit.
On-device Magnetometer Calibration with CLUE – Adafruit.
New Learn Guides!
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 205!
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:
What’s the team up to?
What is the team doing? Let’s find out!
I’m testing the BLE bonding code. Some lower-level code needs to change because the bonding event handlers need to live past the lifetime of the CircuitPython virtual machine; Scott had to do something similar already and was helpful on this. I got tired of adjusting the volume on my computer’s speakers by mouse-clicking, and built a mash-up of the Media Dial and Rotary Encoder Learn Guide projects to send Consumer Control HID codes to my computer (volume up, down, and mute). I 3-D printed a simplification of the Medial Dial from Thingiverse, did a little code hacking, and it’s working just fine. One issue is that, since it’s CircuitPython, it shows up as CIRCUITPY and as a serial device whenever it’s plugged in. Since I want to leave it plugged in, and I’m constantly debugging other CircuitPython boards, I built a special version of CircuitPython with the mass storage and serial USB devices turned off. I can’t edit on the board anymore, but I added a reset button so I can always go back to the bootloader, reload regular CircuitPython, and work on the program again.
This week I’ve been continuing the work to migrate our 200+ CircuitPython libraries to GitHub Actions. It’s a big project! The end is in sight, but there’s still a notable amount of work to go. It’s not a flashy set of features or new release but it is an important step in making such a large number of projects manageable. Along a similar vein, I also did some work to update some existing libraries to support additional similar libraries, as well as assisting on moving some Arduino libraries to Actions. True, I haven’t worked on any new boards so far this week but there are plenty in the pipeline!
Over the past week I have been picking up a lot of miscellaneous items, such as missing features in DigitalIO for seesaw I/O expander boards, a lockup that can occur when using bitmaps or audio files from SD cards together with SD accesses from other CircuitPython code, and crashes when requesting lots of bytes (or -1 byte!) from os.urandom. Yes, I literally worked on random bugs.
This week I finished up the CircuitPython Made Easy on Circuit Playground Express and Bluefruit and it is finally ready to go. If you’re looking for the simplest way to use CircuitPython with either the Circuit Playground Express or Bluefruit, check out this guide. It includes the new Bluefruit-only features as well! I spent the day going through all the open PRs on all the CircuitPython libraries. We have some very old PRs that needed attention. If you submitted a PR to any of the libraries over the last year that we missed, please check your email or GitHub for updates or possible change requests. If you have an open PR that we still need to address, please don’t hesitate to let us know via GitHub or Discord. Thank you for all your contributions! Other than that, I’m planning to finish up my CircuitPython 2020 post, and a few miscellaneous things that came out of the Circuit Playground library update; there’s an example that needs to be updated, some cleaner error handling added, as well as the README needing both an update and an explanation of how the library works. Once that’s done, it’ll be on to something new!
This past week I finished up the Animated Gif Player and its associated learn guide. You can check it out in the learn guide. Since I thought it would be fun, I created an animated Gif of the player playing an animated Gif. I also wrote up an epic blog post for my thoughts on CircuitPython 2020 as well as my story about how I started at Adafruit. You can check out the Blog post. I have been also picking up working on the Blinka project, the CircuitPython compatibility layer for Raspberry Pi and other Single Board Computers. There has been some extra activity from community member contributions and that has been excellent to see.
On the first week of 2020, we kicked off the #circuitpython2020 planning. I’ve been posting all of the awesome responses on the Adafruit Blog. Our end date was January 13th’s CircuitPython Community meeting. I’ve also been wrapping up BLE work on packet aware protocols like the Apple Media Service and BLE MIDI. We swapped the CircuitPython HID library to take in a list of devices as well so that BLE HID devices can be used in place of USB HID devices. I’ve been meaning to write my own #circuitpython2020 post and talk about the need for focus, buuuuuuuttt I got distracted by @arturo182’s PR for iMX RT support in CircuitPython. It is very exciting, the chips are faster and some have more RAM (1MB!). In my distraction, I’ve added support for more dev boards including the Teensy 4!
Scott is speaking at PyCascades about Python’s Next Decade and Us. It is on February 8th and 9th, 2020.
“PyCascades is a two-day, single-track Python conference. We previously hosted PyCascades in Vancouver and Seattle. For our third iteration in 2020 we’ll be in Portland, Oregon USA. PyCascades is organized by members of the Python communities in Vancouver, Seattle, and Portland. We aim to bring together Python users and developers from both the Pacific Northwest and around the world.”
PyLadies Melbourne Monthly Meetup – MicroPython beginner workshop January 19, Melbourne, Australia. Matt, Oliver and Rose return for the second MicroPython beginner workshop and the first PyLadies Melbourne event for 2020. No experience necessary – Get started with hardware hacking thanks to MicroPython! – Meetup.
April 15-23, 2020, Pittsburgh, Pennsylvania, USA – The PyCon 2020 conference, which will take place in Pittsburgh, is the largest annual gathering for the community using and developing the open-source Python programming language. It is produced and underwritten by the Python Software Foundation, the 501(c)(3) nonprofit organization dedicated to advancing and promoting Python. Through PyCon, the PSF advances its mission of growing the international community of Python programmers – PyCon 2020.
20200111 is the latest CircuitPython library bundle.
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.x 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.
The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 15,839 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.
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. Join our Discord or post to the forum for any further questions.