View this email in your browser.
Hi everyone! It’s the latest Python for Microcontrollers newsletter brought you by the Python on hardware community! We’re on Discord, Twitter, and for past newsletters – view them all here. If you’re reading this on the web, subscribe to the newsletter here. Let’s get started!
The Open Hardware Summit 2020 badge is CircuitPython powered… and it’s the 100th BOARD!
YAY! The Open Hardware Summit 2020 badge is CircuitPython powered, check out the hackaday.io project page, GitHub, and some Tweets. We will post more as the summit approaches (March 13th 2020, NYU School of Law, New York, NY USA).
What a great milestone for the open-source hardware and CircuitPython communities! When something is open, it’s shared, improved, built upon, and most of all – people use it together.
What is the Open Hardware Summit?
“The Open Hardware Summit is the annual conference organized by the Open Source Hardware Association a 501(c)(3) not for profit charity. It is the world’s first comprehensive conference on open hardware; a venue and community in which we discuss and draw attention to the rapidly growing Open Source Hardware movement.”
hackster.io has some coverage of the badge as well – OSH Park Releases Open Hardware Summit 2020 Badge Renders, Confirms CircuitPython Support.
Snekboard – An open-hardware Python microcontroller for LEGO
Snekboard – An open-hardware python microcontroller for LEGO, now on Crowd Supply, go back it!
“Learn, Teach, Experiment, and Play with Robots. Snekboard is an open hardware development board that’s designed to let you hook up to LEGO Power Functions motors and switches so you can build robots out of LEGO and control them with CircuitPython or the simpler Snek programming language. Snekboard is 48 x 48 mm – the same size as 6 x 6 LEGO studs – so you can easily build a LEGO enclosure for the board and attach it to your creation. It is powered by a 3.7 V, 900 mAh single-cell Lithium Polymer (LiPo) battery that fits under the board and charges over USB while Snekboard is being programmed from the host.”
Back this project, read the post, check out Keith’s site with Snek, and Twitter. The Snekboard is also on circuitpython.org (and we took some photos of the one Keith let us check out!). We are a backer! And have covered Keith’s work on the Adafruit blog.
New design, updates, and more features on circuitpython.org
circuitpython.org has an updated look and more features as we kick off 2020. The site is even better at showing what’s possible with CircuitPython!
The home page has descriptive text on why CircuitPython is easy to use, features, goals for the project, and more. Downloads features over 100 boards and now has a counter of how many boards that are supported. The same for Blinka, the boards and a counter, over 35+.
Libraries, the CircuitPython library bundle contains all current libraries available for CircuitPython, over 200+. Handy links for how to contribute, the latest news (RSS feed too!), the awesome-circuitpython resource, the newsletter with all past ones we sent out, help, a link to our Discord server, and how to get started. Whew!
Check it out!
CircuitPython snakes its way to the Seeeduino XIAO
The SEEED Seeeduino XIAO is a minimal, low-cost board that uses the Atmel ATSAMD21G18, a 32-bit ARM Cortex-M0+ processor with 256KB flash and 32KB SRAM running at 48MHz. The board is 20 x 17.5mm, and uses a USB-C connector – circuitpython.org
Teensy 4 and CircuitPython in the news
A follow up from last week, news made the rounds on Hackaday, and hackster.io, CircuitPython now works on the Teensy 4.0! AND there is a newer faster build already posted up in less than a week, check it out!
Open Source Spacecraft – Software for Space, powered by CircuitPython
The first meetup, hosted at Loft Orbital in San Francisco, USA will feature a presentation on an open-source Python cubesat framework by Max and KickSat-2 project by Zac from Stanford’s Robotic Exploration Lab.
The hardware and software pitfalls associated with satellite development greatly contribute to the nearly 60% failure rates of initial CubeSat missions. As the role of small satellites in commercial and scientific endeavors evolves beyond an “engineering exercise,” basic aspects of the spacecraft design must be matured and made widely available in order to continue advancing this valuable technology for Space exploration.
PyCubed: an open-source, radiation-tested CubeSat framework that cost-effectively integrates ADCS, TT&C, C&DH, and EPS into a single PC104-compatible module programmable entirely in Python. PyRCubed addresses many hardware-related failure modes of CubeSats through component and system-level radiation testing, in-depth design and qualification documentation, and on-orbit flight performance from an ongoing LEO mission (KickSat-2). The challenge of mission-ready software development is also mitigated through low-level implementation of the Python programming language via CircuitPython.
Project website, Rexlab, KickSat, and KickSat-2, Twitter, and event page.
GitHub Student Developer Pack!
Great news for students! Adafruit is part of the GitHub Student Developer Pack! What is the GitHub Student Developer Pack?
“GitHub is committed to students having access to the best real-world tools and training required to get started as developers. As students prepare to return to school for the spring semester, we’re doubling the value of the GitHub Student Developer Pack (the Pack). This January, we’re welcoming 22 new partners, increasing the total value of tools and training included to more than $200k per student. And each offer is available to every student developer, anywhere that GitHub is available. Whether you’re building your first website, localizing your app for the global market, or even hardware hacking—the Pack provides you with the tools you need to be successful.”
Read more on the post at GitHub by Scott Sanicki, check out the Adafruit landing page on where to get started, see all the benefits on the GitHub Student Developer Pack page, and also we’d like to thank Elena for all the help and support!
We have a quote from our founder, Limor “Ladyada” Fried on the blog post too!
A few words from our new partners We ask all of our new partners what advice they’d like to share with students, and why they joined the Pack. Here’s a sample of what they told us: “Publish, publish, publish! From code to well-documented pages with markdown, the more [students] publish and share, the more opportunities will come your way!” -Limor Fried, Adafruit
If you are a student and have joined (details here), all you need to do is log in to your adafruit.com account, click Services, then GitHub, and click connect! The discounts and free adafruit.io plus is waiting for you, it’s that simple!
A CircuitPython powered LoRA Watch
It appears there is a LoRA Watch in development that is CircuitPython powered, check out the tweets and the Facebook page.
News from around the web!
An excellent video, and kind words, about the ItsyBitsy by @AoyamaProd – Twitter.
Jungle Joe & Snakobs Bongo Bananza, A CircuitPython Game – an old school style video game for the Adafruit PyBadge. The game is made with CircuitPython and the stage library to create a Guitar Hero like game. The stage library makes it easy to make classic video games, with helper libraries for sound, sprites and collision detection. The game will also work on other variants of PyBadge hardware, like the PyGamer and the Edge Badge. The full completed game code with all the assets can be found here – GitHub, YouTube, and ics3u-2019-group7.readthedocs.io by @mrcoxall
There’s also this cool Egg Collector game, docs, GitHub, and YouTube.
“CircuitPython project – it’s super nice to be able to reuse the same libraries on the microcontroller as on the server/desktop!” – Twitter.
NeoPixel Strip Matrix, Animation with NeoSprite, bitmap driven animations – Adafruit forums, GitHub, and YouTube.
Here’s a CircuitPython -> Node+Express -> socket.io -> three.js code project from @maker_schmitz – Twitter.
240×240 MiniPiTFT as a pihole with a BME280 on StemmaQT with CircuitPython – Twitter.
CircuitPython library for computing the Fast Fourier Transform FFT – GitHub, twitter, and post.
Evan got a Sphero RVR and CircuitPython working together! – Twitter.
Starting awesome-stemma! This is the start of a new curated list of awesome Stemma connector resources including Stemma-equipped microcontrollers and breakout boards. Adafruit Stemma is a collection of solderless digital/analog/power/I2C connection standards based on JST PH 3 and 4 pin connectors. For smaller footprint breakout boards, the JST SH 4 pin connector may be used for I2C connections. Stemma equipped boards may be compatible with SeeedStudio Grove connectors, SparkFun Qwiic connectors or DFRobot Gravity connectors. Cross-compatibility should be checked before interconnecting Stemma/Stemma QT boards with other manufacturer boards, as there could be connector incompatibilities or voltage issues (with Qwiic boards) – github.com/adafruit/awesome-stemma. And we’re still updating awesome-circuitpython and awesome-feather too.
“It took 5 minutes to add support for a new display..” – Twitter.
Nice PewPew M4 casemod – Twitter.
3D printers were made to print Baby Yoda’s and Circuit Playground Expresses were made to move them and light them up. THAT IS THE WAY, check out what Andy from Micro Center made – Twitter.
Digi-Key is helping Allie, who is headed to a local school to teach 105 4-5 grade students how to program and use Circuit Playground Express! This is for their computer science interim in February. There will also be a library science night in March, which will give 300 more kids a chance to do the same – Twitter.
LED Little Black Dress with Sound Reactive Mode and Other Patterns by Geek Mom Projects. Powered by a Circuit Playground Bluefruit – YouTube.
“Crazy how much you can get built these days just using Python.” – Twitter.
Feather M0, Neopixels, 2 servos, and a generous amount of 3D printing by Angela. The companion bots are coming! – Twitter. The tail is a scarf that also holds the power supply.
A nice send off to OSH Park from Joey: two capacitive touch Feather things, a tiny book with a tiny SAMD51, plus a board to test out a new E-Paper display – Twitter.
micro:mag is back for 2020! The call for articles is now open! Write an article about your awesome micro:bit project, share a news story or even write a tutorial on how to make something – micromag.cc/contribute
Giant light up letters and numbers with NeoPixels! – Twitter.
A Neopixel heart, in resin – Instagram.
3D printing, wireless NeoPixels, and more made their debut in Kuwait City – Instagram by MakerMatty. More about Matt’s work here, and YouTube.
MAKING ACROSS THE CURRICULUM: Resources & Ideas for Your Adventures in Making. Rob Morrill’s site to help inspire teachers from all disciplines – Making Across the Curriculum and check out the projects by class.
Good thread on “independent” hosted mailing list services if you’re looking for a way to host a mailing list for your community effort or project – Twitter.
WHAT DO YOU MEAN BY DISINTEGRATED? Embedded.fm had Evil Mad Scientists Lenore Edman and Windell Oskay on episode 317.
Update from Prusa: 2019 recap, plans for 2020 and Original Prusa MINI update – prusaprinters.org. sifted.eu story on Prusa as well.
A Scandal in Bohemia, a cool interactive immersive Sherlock Holmes story made for the web.
Slides from the hardwareclub.com hardware report.
The new Microsoft Edge browser (the first version based on Chromium) is out of preview and now available for download – Windows Blogs.
Python history, the ABC Programming Language … from Wikipedia:
“ABC is an imperative general-purpose programming language and programming environment developed at CWI, Netherlands by Leo Geurts, Lambert Meertens, and Steven Pemberton. It is interactive, structured, high-level, and intended to be used instead of BASIC, Pascal, or AWK. It is not meant to be a systems-programming language but is intended for teaching or prototyping. The language had a major influence on the design of the Python programming language; Guido van Rossum, who developed Python, previously worked for several years on the ABC system in the mid 1980s.”
A good interview that is archived too – The A-Z of Programming Languages.
It’s interesting that ABC was intended for teaching or prototyping, Guido did electronics as a hobby, developed Python later, and CircuitPython is REALLY good for teaching and prototyping. Full circle, here’s an interview from 2014 –
You were an electronics hobbyist before becoming a programmer. How did you get started in electronics? Okay, we’re going waaaay back. I don’t know exactly why I got into electronics as a kid. I remember that from the last grade in elementary school and probably through my second year in university, electronics kits and my own designs were one of my big passions. It wasn’t always an easy path. In elementary school, I took one of the first projects I built into class as a show and tell project. There was no one who understood what it was or why it was interesting or cared. It’s a very vague memory. I just know that I took it in, and it fell flat.
We’ve tried to cover some historic Python, and Python on hardware efforts too, tinypy (2008), and PyMite (2009).
All in with Python, from the YouTube comments. “I work at a Science Center for kids in Sweden and we decided recently to go all-in on products from you and will teach Python to the slightly older kids!”
The year of “No Code?” – by Alex.
Python GUI Programming – Real Python.
How open source programming can offer opportunities after incarceration – opensource.com and YouTube.
Running Python in the Linux Kernel by Yonatan.
Python in Visual Studio Code – January 2020 Release.
scalene, a high-performance, high-precision CPU and memory profiler for Python – GitHub.
Managing Python Environments by John.
Ultimate Setup for Your Next Python Project by Martin.
Optimizing Python Code with ctypes by Samuel.
Google has a free IT automation with Python professional certificate available, blog post and course:
“When Grow with Google launched the IT Support Professional Certificate, we aimed to equip learners around the world with the fundamentals to kickstart careers in information technology. Now, on the program’s two-year anniversary, we’re expanding our IT training offering with the new Google IT Automation with Python Professional Certificate. Python is now the most in-demand programming language, and more than 530,000 U.S. jobs, including 75,000 entry-level jobs require Python proficiency. With this new certificate, you can learn Python, Git and IT automation within six months. The program includes a final project where learners will use their new skills to solve a problem they might encounter on the job, like building a web service using automation.”
The (Unofficial) Apple Archive – applearchive.org
JetBrains Mono’s typeface is out, here’s what they say about it “forms are simple and free from unnecessary details. Rendered in small sizes, the text looks crisper. The easier the forms, the faster the eye perceives them and the less effort the brain needs to process them.”
EverDrive N8 PRO, wow!
Looks interesting for retro art, Smear FX –
“Make your animations extra juice by adding some smearing to them! Just a little touch of smear can add a lot of value to animations and makes them feel smoother. Do a jump animation, a weapon swing, item spawn, maybe a logo intro animation, the possibilities are endless!”
#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Slither Into Python: An Introduction to Python for Beginners.
Latest CLUE design sneak preview! – YouTube and post.
Folks are posting up some comparison details wit the CLUE and micro:bit – Twitter.
AR puppet streaming with Sparky, Circuit Playground Bluefruit and more – YouTube.
Some new STEMMA and STEMMA QT capable sensors, just in time for awesome-stemma.
Some upcoming cases for the EDGE BADGE! Designed by Mike Doell.
New Learn Guides!
NeoPixel Infinity Cube from Noe and Pedro
MagicLight Bulb Color Mixer with Circuit Playground Bluefruit from John Park
PyPortal 2FA TOTP Authentication Friend from Brent Rubell
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 206!
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 is the team up to this week? Let’s find out!
This past week has seen us close in on the end of the actions migration project. All of the libraries have been ported over and now it’s just a matter of releasing them all. It’ll take a while, so hold tight!
In driver news, I did a refactor of the library formerly known as Adafruit_CircuitPython_LSM6DOX to add support for the LSM6DS33 that is on the new 9-DoF combo board, and in doing so did a refactor to pull common code into a LSM6DS class, renaming the library in the process. I just now finished the accompanying LIS3MDL CircuitPython library, so now the new 9-DOF board has full CircuitPython support.
Finally, late last week, I wrote my CircuitPython 2020 post with my thoughts, hopes and aspirations for CircuitPython in the coming year. I’m very excited for things to come, and I’m very hopeful that, like previous years, 2020 will be a banner year for CircuitPython.
I finished up the implementation of BLE bonding; it will be merged into CircuitPython shortly. Now you can pair a CircuitPython device just once, and have it reconnect automatically after that. I’ve tested bonding with a BLE HID keyboard test program on iOS, MacOS, Windows 10, and Linux, and it’s working well.
I wrote a #CircuitPython2020 post, reviewing my #CircuitPython2019 post goals and adding some new thoughts.
Now that bonding is finally done, I can go on and fix some remaining CircuitPython 5.0.0 issues so we can move toward a final release relatively soon.
In the longer run, I would like to revamp timekeeping inside CircuitPython, so we can do low-power sleep. I also received positive reactions to thoughts about asynchronous programming and multitasking in my #CircuitPython2020, and would like to start revisiting that again.
Over the last week, I worked on finishing up a few things associated with the Circuit Playground library update. I attempted to add friendly error handling to the Express module in the event that you try to import Bluefruit-only features, and ran into the stack size being too small again. This update will require increasing the stack size again, and therefore has been put on hold for now.
I updated the README to include the install requirements for using the library on Express and Bluefruit, and the usage example to use the new import. In the near future, I will add a section explaining how the library works from a technical perspective – if you’re interested in understanding what’s going on under the hood, be on the lookout for that update. I created four new Fritzing objects. Next up is the guide for the ItsyBitsy nRF52840, so keep an eye out for that soon.
I also completed my CircuitPython 2020 post. Thank you to everyone involved in CircuitPython. You make it what it is. I’m looking forward to another amazing year!
I spent this past week working on fixing a number of bugs for the next release, including some old busio issues with SPI and I2C, and a lot of stylistic cleanup that made things more consistent between old and new code.
I also worked with Scott on resolving an issue with the UF2 bootloader on the upcoming Meowbit board, which should go a long way toward making UF2 possible on all of the STM32 boards.
This week I’m hoping to (finally) wrap up the final DisplayIO related issues with the Meowbit and get it out the door. Following that, I’ll be circling around to the Espruino and Discovery boards on my list, and hopefully back to new feature implementation on the STM32 port.
This past week, I have been working on adding lots of additions to Blinka, our CircuitPython library compatibility layer for Raspberry Pi and other Single Board Computers. One of the things that came out of that is I was able to get the Pine64 Board fully working with GPIO, I2C, SPI, and UART. In fact, it’s working so well, that I will likely be writing a guide for it soon.
The other component that I’ve been working on is continuing on the HT16K33 library and guide updates. This is the library that controls the backpacks and FeatherWings including Segmented LED displays, the 8×8 and 8×16 matrix displays, and the bicolor bar graph. You can check out the LED Backpack guide here. For the library itself, I have been porting over some functions from other libraries such as a marquee function for the Segmented Displays and a shift function to animate much easier on the LED Matrix displays.
Scott is speaking at PyCascades about Python’s Next Decade and Us. It’s 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.”
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.
CircuitPython’s stable release is 4.1.2 and its unstable release is 5.0.0-beta 3. New to CircuitPython? Start with our Welcome to CircuitPython Guide.
20200117 is the latest CircuitPython library bundle.
1.12 is the latest MicroPython release. Documentation for it is here.
3.8.1 is the latest Python release. The latest pre-release version is 3.9.0a2.
1,570 Stars Like CircuitPython? Star it on GitHub!
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 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,965 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.
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.