tammy makes things

Thoughts on CircuitPython for 2020

Over on the Adafruit blog, they asked “what do you want from CircuitPython in 2020?”. For those that aren’t familiar with it, CircuitPython is a project to allow programming of embedded microcontrollers in Python. It’s pretty much wonderful, and I’ve been using it for almost all of my hardware hacking of late. So here in no particular order are my thoughts for #CircuitPython2020. Projects you’d like to build I have two projects currently in flight, which I’d like to kick into gear and finish in 2020: An as-yet unnamed gizmo to provide breathing support and pulse-ox monitoring for people (especially kids) having asthma attacks. Finishing this is going to require porting one of the MAXIM MAX3010x Arduino drivers. This is something I’m working on. dbagparker, a simple project which uses a distance sensor to tell you how far away from the wall you are when parking your car. I started designing this for Arduino, but I think I’m going to redesign for a CircuitPython board instead. I have a few other ideas for stuff I’d like to work on, but I’d like to finish at least one of these first. Things you think could be easier Overall, CircuitPython is fantastic, and I definitely find it much easier and faster to build stuff than I did with Arduino/C. Some of that is my greater fluency with Python, but the dev/test cycle is just much more intuitive with CircuitPython. Still and all, there are a couple of things I think could be made easier: Dependency management: I don’t necessarily think we should recreate the whole pip ecosystem, but making sure the right libraries are installed on my boards and keeping those libraries updated is still a chore. The CircUp tool helps with the updating part, but I’d like a way that my CircuitPython programs could know what libraries they need and make sure those are automatically installed. Firmware updates: Downloading the CircuitPython .uf2 images for all of the boards in my collection, resetting each one to get it into UF2 mode, making sure I copy the right firmware image to it, and then resetting again and updating libraries is a laboriously manual process. In my ideal world, there would be a workflow where I could run a listener script on my computer (maybe in Mu) and then plug in a board, hit the double reset button, and have the script automatically download and flash the newest firmware image, wait for the board to reset, and then automatically update all of the libraries. When you have 10 or 20 CircuitPython devices, this would make firmware updates waaaaaay faster. Library improvements displayio is a fantastic way to create UIs on boards with OLED displays, but it’s taken me a long time and a lot of trial and error to figure out how to use it. I understand the flexibility that its paradigm of Displays and TileGrids and Groups provides, but I’d love a simpler layer for very common tasks, such as “fill the screen with a solid color and write some text on top of it.” I’d also love it if there was a way for the library to know the device resolution and to describe the UI in a resolution-independent way, so if I switch my project from a PiBadge to a Circuit Playground Express with a TFT Gizmo, I didn’t have to rewrite all of my UI code. In closing I think CircuitPython is an amazing tool which makes the world of microcontrollers and hardware hacking so much more accessible for people who want to move beyond MakeCode. The ecosystem has grown by leaps and bounds in 2019, and I’m excited to see what 2020 brings. I’m also excited to increase my level of contribution in 2020, and if you use CircuitPython and love it you should think about contributing too!

Hello, and Pardon the Dust

Welcome, and pardon the dust. More to come as soon as I finish migrating from WordPress.

New Project - fw_neopixel_pride

My newest project is fw_neopxiel_pride, and it’s a simple piece of wearable jewelry for LGBTQ Pride month, built with a microcontroller and CircuitPython. The project guide is being migrated soon, but you can find the code on GitHub. The project guide is here. Check it out, and Happy Pride!

The Journey Begins

Welcome, and thanks for joining me on my maker journey. My intention is to write about the stuff that interests me as I re-immerse myself in making stuff. I know electronics and microcontrollers (CircuitPython, Arduino, etc.) are going to be a major focus. I want to learn to use the cool tools in my local Makerspace: 3-D printer, laser cutter, CNC router. What else might be included? We’ll find out as we journey together. Since I’m starting afresh, I thought I’d talk about my journey as a maker, and what brought us together in this little corner of cyberspace. My history with making things is long and complicated. It’s ironic, in a way, because making stuff is something that runs in my family. Some of my earliest childhood comfort memories are tied to the smell of sawdust and my grandfather’s workshop with him. My grandmother spun wool and knit and wove fabric, and my mom’s been knitting for as long as I can remember. I have multiple published writers in my family. Since I was small, I was forever taking things apart to try to understand how they worked. I took a machine shop class in 8th grade and an electronics class in my sophomore year of high school. I designed and built a darkroom timer for the photo darkroom I made in my dad’s basement. Heck, I’ve made my living in the software and high tech industry for most of my adult life. But then, although I retained my interest in building and making and creating things, I drifted away from pursuing it. I stopped making things. Why? Because of all the people who told me “that’s not something girls are interested in.” Sometimes when I did try, it was “I’d be glad to help you with your project – what are you wearing right now?” Sometimes it was “here are 30 questions about your knowledge while I condescendingly explain the basics to you and treat you like crap, because it’s clearly not possible for girls to know anything about this.” Often, I was simply ignored and excluded. The messages were clear, unambiguous, and invalidating: People can be makers or women, but not both. And if I dared to try, what was in store for me was invalidation, condescension, disbelief, and sexism. Message received, loud and clear. For far too long and in too many parts of my life, I internalized those messages and took them to heart and let them become barriers. For far too long, I let society’s sexist messages squelch my desire to create, to build, to MAKE. And you know what? All of that is garbage. There are TONS of women, nonbinary people, and men who build stuff. Who know how to use tools. Who weld, who run a CNC mill and a 3-D printer. Who create robots and electronic stuff and mechanical gizmos. Just look at E. Louise Larson (Prototype), Limor Fried (Adafruit), or Gina Lujan (Hacker Lab). So, I’m going to learn the skills I want to learn, explore, create, make. I’m going to encourage other women, non-binary people, kiddos, and really everyone to follow your passions and interests wherever they lead, with reckless abandon. And I’m emphatically and unequivocally rejecting all that ridiculous and toxic gender stereotyping and norm setting. It’s nonsense, and I refuse to play. If I want to learn how to make things out of wires and circuits, or metal, or wood, or use a laser cutter, I’m not letting “girls can’t” or “girls shouldn’t” stand in my way. Not ever again. What do I want to create? Right now, I just want to learn about the universe of what’s possible. All engines, ahead full!