This summer Pratt Institute instructor and SVA IxD MFA candidate Steve Faletti worked closely with Smart Designers and the Lab on a range of prototypes and experiments as part of his internship. A big part of his process involved using microcontroller platforms such as Arduino, though lately he has become fond of some alternative boards. In this blog post, Steve shares the pros and cons of a variety of the tools and methods he’s been using, along with a summary of his typical workflow, from coding to compiling.
I LOVE ARDUINO, I REALLY DO
I feel obligated to begin this post by saying how much I love Arduino. It’s an amazing project that has put physical computing tools and understanding in the hands of many artists, designers, students, and hobbyists. It has changed the world and has become synonymous with microcontroller development and low-level computing. It was my first foray into electronics, providing not only a relatively painless path into playing with microcontrollers, but an immeasurable amount of information and learning along the way. I really do love Arduino and am infinitely thankful to the wonderful people who conceived of and develop it, yet lately I rarely use it in prototyping or development.
That’s not entirely true since I still use the language, libraries, and compiler chain extensively. Software capability and efficiency were the Achilles heel of the project in its early days. In those days—before the board even had a USB port—analogRead and PWM were convenient compared to setting up timers and bit-flipping ports, but used more than a few extra clock cycles to provide that. Now, nearly a decade later, those core libraries have been trimmed down and make much better use of the AVR resources. They’re fantastic.
The core language is great, and keeps growing and evolving for both functionality and speed, but the greatest value of the Arduino project is the thousands of available libraries. When I first started using Arduino, I needed to set up a servomotor for a project. The Servo library either didn’t exist, was unstable, or I just did not know about it, and it took over a week to figure out how to write my own—very buggy—code to control one. Now, while I could roll and debug my own servo code inside of an hour, it only takes about 15 seconds to grab the library and implement an object. Or two if I need it. The same goes for debouncing buttons, accessing EEPROM, communicating via SPI, or countless other tasks. This is the real power of the Arduino project; the huge community of developers that have created and refined simple-to-use and accessible code. (I like to think of Arduino more as an AVR framework than its own microcontroller, and I somewhat lament the fact that the two names have become synonymous.) So, with some regret, here are the reasons why I frequently avoid using the rest of Arduino framework.
The hardware is too big, too expensive, and too limited for my needs anymore. Originally built to be something of a standalone development tool, and based on components sourced in 2005, the standard Arduino footprint is massive. There is also the weird legacy error in pin layout that will forever lock the Arduino to its unique footprint. I like to keep my circuits completely on the breadboard if possible, and the standard Arduino doesn’t allow that. They’re also $30 a pop at the time of this writing. I use a lot of microcontrollers and tend to leave them in projects. Most of the time the cost and size just don’t make an Uno a viable option.
**Note that I develop on OSX, and than instructions here have only been tested on that OS. Some of the software I use, like Cornflake Terminal, is only available for the Mac. There are many Windows and Linux alternatives and equivalents.
SMALLER ARDUINO-BASED SOLUTIONS
For simple projects I tend to either burn the Arduino bootloader straight onto a bare ATMega, or buy one preburned, and then essentially build an Arduino around it (it’s not hard, and a great learning experience—do it at least once). I’m also a hug fan of the ‘Pro’ line of Arduinos from Sparkfun, especially the minis. They’re just cheap enough that I don’t care if I lose or fry one, yet save me 5 minutes of hooking up wires. Note that to program either of these stripped down options you will either need some kind of FTDI convertor or cable, or you can use a standard size Arduino.
THE TEENSY ALTERNATIVE
I find that many of my projects require some kind of interface with a computer, and here the ATmega 32u4 is my new favorite chip. This is slightly different from the 328 on the Uno. It offers more I/O connections, more analog pins, and, most importantly, built-in USB capability. This means that not only do you not need another chip to translate between it and your computer, it can also easily emulate keyboards, mice, and joysticks. Arduino has offered this chip for a while in the Leonardo package, and more recently as the Micro, but I greatly prefer the Teensy 2.0 from PJRC. It ridiculously small, fits on a breadboard, and only costs $16 if you’re willing to source your own header pins. There are usually a few rows of these lying around my studio and soldering them on takes a couple minutes. While this is the same chip in the Arduino options, I find that the bootloader and USB profiles (not open source), are a bit more reliable.
Teensy’s developer, Paul Stoffregen, is a big fan of Arduino and maintains regular communication with the community. As such, he’s ported the loading protocol for Teensy into the Arduino chain by way of a convenient plugin, called Teensyduino. With this installed, there is almost no difference between working with Arduino or Teensy, and the same code can be uploaded to either platform over 95% of the time. Teensyduino also offers the option to add just about every working library upon install, which means I don’t need to go hunting for one later. Paul has also built an ARM-based micro board, called the Teensy 3.0. It’s also cheap, compatible with Teensyduino, easy to work with, and powerful. Paul recommends pairing it with a Raspberry Pi to get a nice, inexpensive, and powerful hardware setup that can handle advanced sound, video, and connectivity. I don’t have any experience with the ARM-based Arduino Due, and looking at the specs, I don’t know that I would try to compare them directly. The Due appears to have more features and pins while the Teensy 3.0 is less than half the price.
TEENSY DEVELOPMENT WORKFLOW
I want to wrap this up by talking about my choice of IDE. In addition to physical computing projects, I do a fair amount of screen and web work. My favorite editor right now is Sublime Text 2. It has some great features, and with the huge collection of packages available, it is very powerful. Anybody who writes more than a few lines of code a week will quickly grow to hate the Arduno IDE, based on Processing. There is nothing wrong with it per se, it’s just a very bare bones editor, offering little more than clean up and highlighting. Thankfully, the Stino project exists to essentially plug the Arduino IDE into Sublime Text 2. I’d suggest using the excellent Package Control plugin for Sublime, though if you’re resourceful you can do it manually. This will allow you full Arduino functionality inside the Sublime editor. You can edit, choose a target board, and upload sketches. It has a serial monitor built in, though I usually use Cornflake. It also brings in Teensyduino, provided it’s already been installed. I use the ST2-Arduino snippet set for completion. This unfortunately needs to be installed manually, but it’s not that hard to do. I just git-cloned the repository into my ‘Packages” folder. I honestly don’t know if this is the preferred method, but it seems to work just fine. This article may help.
So, Arduino is great. Really, really great. But I’ve found that as my development skills grow and I look for more flexibility and convenience, some of the tools offered by the project no longer fit into my workflow. That’s fine. the Intent of Arduino is to help people learn about electronics and physical computing. The fact that parts of it are amazing for rapid prototyping and development is a bonus.
- Steve Faletti, October 10, 2013
Have any tips of your own to share? Is there a new development board that you’re enjoying using? Let us know!