CircuitPython Creates New AT Opportunities

For those of you who don’t know, CircuitPython is a programming language and environment for small computers and microcontrollers that is sponsored by our friends at Adafruit.

It is a variant of Python, and a fork of the popular MicroPython that’s been out for a few years.  However, CircuitPython has a few differences that are really helpful for Assistive Technology., and we’re going to use it to amazing things!

[Note: All product images courtesy of Adafruit and thanks to their awesome Creative Commons licensing]

Lots of Board Options

CircuitPython is specifically designed to run on some popular and inexpensive chips that Adafruit and others produce.  In particular, it works on:

  • All of the Atmel SAMD21 (referred to as “M0”) and SAMD51 (referred to as “M4”) boards.
  • The Raspberry Pi 3 and Raspberry Pi Zero boards (and variants with tweaks)
  • The inexpensive Wifi-Enabled ESP8266 (with tweaks)
  • The newer NRF52 boards from Nordic (in the very latest CircuitPython builds)

What this means for us is that we have a variety of boards that cost between $5 and $40 that can all be programmed very easily using a language that most students and Makers know: Python!

Circuit Playground Express

Circuit Playground Express

The Circuit Playground Express is Adafruit’s Education board: it is specifically designed to let students learn physical computing and has all kinds of input and output devices baked right into the board.    You can learn all about it in their product page.

For us, it’s an amazing choice for things like:

  • Making a custom mouse/keyboard/joystick that uses capacitive touch switches or the tilt-sensor
  • Using the bright LEDs (NeoPixels) for notification, and status indicators
  • Creating a proximity sensor using the Infrared sensor and LED
  • Using the microphone as an activator or the speakers for feedback

In short, it’s an incredibly powerful tool – and it’s just $25!

Adafruit’s Feather Line

This isn’t just one board, it’s a whole eco-system.. and lots of the options can run CircuitPython.  The boards cost from $15 to about $40, and from $5 to $40 for add-on “wings” that connect with no wiring – just simple-to-solder headers.  This lets you build solid, simple solutions that can:

  • Connect to IFTTT.com and Amazon’s Alexa over WiFi
  • Communicate using RF signals between boards (up to 2km away)
  • Sense the environment including GPS Location, Infrared Camera, Audio Input (and Output),
  • Provide beautiful graphical output for menu systems, badges, etc.

We use Feathers’s quite a bit but being able to use them with CircuitPython will dramatically increase the simplicity of our designs.  In fact, our SwitchBoard Relay Device is actually in a FeatherWing format!

Itsy Bitsy and Trinket boards

These boards are tiny and cheap!  They’re as simple as possible while still being useful, and we love them!

Trinket M0

The Trinket M0 is just $9 (about $7.15 in bulk with Adafruit’s discount) and is the size of your thumbnail!

Itsy Bitsy M4

The Itsy Bitsy M0 is just a touch larger (1.4″ x 0.7″) and costs about $12, but has way more input & output chips.  It’s also a bit easier to use, and there’s an M4 version for even more power (at $15)

We’ve already started using these tiny boards!  You can see them in use in our solution for Michelle Brose’s “Hand Raising” solution and in the upcoming “KeySwitch” Switch Interface for Everyone!

Simple Programming and Customization

Perhaps the biggest benefit to using CircuitPython instead of other options like Arduino is that there is no IDE or programmer you need to purchase or install.  In fact, when you plug in one of these devices, they show up as normal USB Mass Storage devices–that is, they look like thumb drives!

They have a text file named “main.py” on them that you can edit with any text editor (notepad, Emacs, etc.) or use an editor like Mu that has built-in Python syntax support, but is still just a text editor.

Why is this important?  It means that you can let your end-user modify the system!  Our new KeySwitch device will have a “Settings.ini” file that end-users can edit to change how each switch should behave.  We can have end-users fine-tune things like:

  • De-Bouncing (for folks with tremors or super-sensitive switches)
  • Delayed Repeats (how long should a button be pressed before it starts sending repeated keystrokes/mouse movements)
  • Chording (combinations of switches send different events)
  • Mode-Changes (change how the switches behave after a long-press or specific chords)

And they can do all of this just by editing a standard text  file.  Certainly any OT, SLP, or STEM club member can do this.  For those who want to go further, the actual Python code can be changed to create more complex options like Morse Code, Game Pad Key combinations and much more!

This is Happening!  Join us!

I’m happy to say that ATMakers will definitely be using CircuitPython this year as we build more and better AT Solutions for our end-users, so we’ll need some help!

If you’re a programmer (even one like me who’s mad skills are NOT rooted in Python!), a mentor for a STEM club, a student on a Robotics team, or just want to learn an incredibly easy-to-use physical computing platform, we need your skills and effort!

You can learn lots more on the official Adafruit CircuitPython Guide and join us on the ATMakers Facebook Group to share the journey!