The Google I/O at the Moscone Center in San Francisco is a meet and greet for lots of people and companies, a big dot-com over-the-top party, and most of all it’s geared towards “web, mobile, and enterprise developers building applications in the cloud with Google and open web technologies… Products and technologies to be featured at I/O include App Engine, Android, Google Web Toolkit, Google Chrome, HTML5, AJAX and Data APIs, Google TV, and more.” Maybe not so much Google TV or Google Wave this year but for open hardware and mobile folks, this was one of the most important weeks in history.
In this week’s column, I’m going to talk about Google choosing the open source hardware platform (Arduino) for the “Android Open Accessory” kit, and why this matters. I’m also going to talk a little about how Google could make it better. And then, I’m going to do what I always do in many of my columns: make predictions (Why The Arduino Won And Why It’s Here To Stay). 1) Google will have a “Kinect-style” surge of creativity for the Android + Arduino; 2) Apple will start to abandon their restrictive “Made for iPod”(TM) program and adopt the Arduino in some way for accessory development, 3) Microsoft/Nokia/Skype are likely paying attention to all this, and they should look at the Netduino for their accessory development for Windows Phone 7.
If mobile companies want to see the phone market blossom with creativity, with accessories never imagined, this is how it can happen.
Let’s jump right in…
Some quickie Android stats (according to Google):
- 100 million activated Android devices
- 400,000 new Android devices activated every day
- 200,000 free and paid applications available in Android Market
- 4.5 billion applications installed from Android Market
OK, boom — lots of people with these phones, even Apple has to be a little nervous about all these phones. Google told the world this week they’re using Arduino for ease-of-development in creating accessories for the Android platform called “Android Open Accessory.” It’s a perfect choice, we’ll get into why shortly. Here’s what they said, and you can also watch the keynote:
From the beginning, Android was designed to extend beyond the mobile phone. With that in mind, we’ve developed Android Open Accessory to help developers start building new hardware accessories that will work across all Android devices
What is an Arduino?
Let’s start out with how the Arduino team defines it:
“Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It’s intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments.
“Arduino can sense the environment by receiving input from a variety of sensors and can affect its surroundings by controlling lights, motors, and other actuators. The microcontroller on the board is programmed using the Arduino programming language (based on Wiring) and the Arduino development environment (based on Processing). Arduino projects can be stand-alone or they can communicate with software on running on a computer (e.g. Flash, Processing, MaxMSP).
“The boards can be built by hand or purchased preassembled; the software can be downloaded for free. The hardware reference designs (CAD files) are available under an open-source license, you are free to adapt them to your needs.”
The “what” is still a little vague, and that’s the Arduino’s strength. It’s the glue people use to connect tasks together. The best way to describe an Arduino is with a few examples.
- Want to have a coffee pot tweet when the coffee is ready? Arduino.
- Want to have plushie steaks glow? Arduino.
- How about getting an alert on your phone when there’s physical mail in your mailbox? Arduino.
- Want to have a Professor X Steampunk wheelchair that speaks and dispenses booze? Arduino.
- Want to make a set of quiz buzzers for an event out of Staples Easy Buttons? Arduino.
- Want to make a light-up arm cannon from Metroid for your son? Arduino.
- Want to make your own heart rate monitor for cycling that logs to a memory card? Arduino.
- Want to make a robot that draws on the ground, or rides around in the snow? Arduino.
For someone who doesn’t know about electronics, or microcontrollers, this sounds cool and fun, and you’ll want to join this club. This is the type of stuff kids want to make — you can even trick them into learning some things along the way. These are the projects science fiction stories are made of, the things gadget sites blog about. What do all of these have in common? They’re ideas that usually wouldn’t actually happen, things we normally just dream about. But now these fantastic ideas are brought to life, and it’s very likely a non-engineer made them.
That’s a big deal because engineers tend to design platforms for other engineers, not for artists, weirdos, or kids who want to connect stuff up in a simple way to share an idea. The Arduino team is not made up of hardcore electrical engineers. They’re designers, teachers, artists, and (from what I can tell) techno-hippies (this is a compliment, I hope I didn’t offend them.) The Arduino is mostly based in Italy, and every year I read another article about how Italy is struggling to find “their own Google” when they already have it. It’s the Arduino — they just don’t realize it yet.
If you look at examples of Arduino projects you’ll see the makers were more interested with the what — not the how — of the electronics. The cranky people who enjoy being mad about Arduino’s success love to say that the Arduino doesn’t teach the underlying electronics, “Bah! this isn’t REAL electronics,” they say, “It’s too easy!” Yes, it is. If you want to make an LED blink or a motor move without using an Arduino, good luck if you’re an artist or designer. We’re talking days to get it right (if it works at all). Sure, it’s nice to pay your dues and impress others with your massive Art of Electronics book, but for everyone else out there, they just want an LED to blink for their Burning Man costume.
I think my favorite example of how parts of the old-school microcontroller community viewed the Arduino comes from AVR Freaks, the official community dedicated to the AVR processor (same one used in the Arduino). You would think they would love all this new attention, bringing AVR microcontrollers to the masses. But many in the AVR Freaks community do not like all these non-engineers with their weird art projects messing up their hierarchy. My favorite quote (and I want this on a T-shirt) is:
“Arduino: baby-talk programming for pothead” – ArnoldB, AVRfreaks.net
This mistaken attitude actually helped Arduino, because it pushed the Arduino fans to build their own community, and one that I would say is more inclusive and shies away from condescension.
The Arduino is simple, but not too simple. It’s built around the idea that students will be using these to “do” something: get sensor data in, have a bit of code, do something with that. Maybe they didn’t even write the code, they cut and pasted it to get started. It’s hot glue, not precision welding. No one is going to cut a hand off or burn down the studio experimenting. One of the Arduino team members teaches designers and artists — everyday, the platform is being built and improved for step-by-learning, building on lessons and sharing code — these designers and artists are using Macs and tinkering in Processing (Arduino’s older sibling).
OK, so it’s all warm and fuzzy, an artsy love fest, and that’s why it’s the DIY success story? No, there’s way more! Let’s get a little more specific…
The IDE Runs on Macs, Linux, and Win
The IDE works on a Mac, Win, and Linux, and it’s completely open source. The IDE is how you program the Arduino — it’s based on Processing (a graphics programming language and development system popular with artists and designers), which has been around for a long time. It runs on Macs and Linux, not just Windows, and that matters if you want to be inclusive. It’s based on a strong and well-supported backend, the open source gcc toolchain, and wrapped in Java, so porting is easy and bugs can be found and fixed. There are enough smart people using and working on the IDE to keep it going strong. Want freaky cool people to do neat stuff with your platform? You gotta have your IDE run seamlessly on a Mac and also Linux.
The Driver Actually Work On Macs, Linux, and Win
Again, like the IDE, the drivers to use the board work on Mac, Win, Linux, and the FTDI drivers “just work.” Sticking with serial, a well understood (but slow) interface, was a good call. Sure HID or something custom is cool and all, and can be much faster, but the serial chip works, can be used for debugging as well as programming, and easily slots into software tools like Java, Python, Perl, C, NET, BASIC, Delphi, MAX/MSP, and PureData, Processing, etc.
Libraries, Easy-to-Do Simple Things, Easy-to-Do Hard Things
There are tons of object-wrapped libraries to do complex things, like writing to SD cards, LCD screens, parsing GPS. And there’s are also libraries to do simple things, like twiddle pins or debounce buttons. We’ve written UART setup code 10 times for 10 chips and frankly, we’re tired of it. Much nicer to just call
Serial.begin(9600) and have it sort out the registers for us.
Lightwight, Runs on the Metal
The code runs directly on bare metal, with a well-tested and understood compiler (we would even say that avr-gcc is the default/standard compiler for AVR.) It’s not interpreted like .NET or BASIC. It’s fast, it’s small, it’s lightweight, and you can use the HEX file to program fresh chips in bulk.
The Arduino really took off because it has analog-to-digital input, in other words, you can take in sensor data like light, temperature, sound, or whatever using the low-cost sensors already on the market and get that into the Arduino easily. It also has ready-to-go SPI and I2C for digital sensors. This covers 99% of sensors on the market. You can’t easily do this with other platforms — it’s completely bizarre to see a BeagleBoard (great product) with an Arduino basically strapped to it just to get sensor data in.
Simple, But Not Too Simple
Many dev boards are historically enormously complex with a lot of added-on parts like LCDs, buttons, LEDs, 7-segments, etc,. showing everything it can do. Arduino has the bare minimum. Want more? Get a shield. There are hundreds of Arduino shields, from LCD to Wi-Fi, but it’s up to the user to add that. Shields add extra functionality easily, and there is a business incentive for others to make them.
Not Made By a Chip Maker
The board was not designed by a chip maker. Why is this important? Chip makers often want to show how their product is different so they add weird things to differentiate themselves. The Arduino highlights commonalities between microcontrollers, not the differences. This means that the Arduino is a perfect beginner platform – everything you can do with an Arduino you can do with any other microcontroller, and the basics will last you for a long time.
You can get an Arduino for $30, and we’ll probably see $20 Arduinos soon. Many dev boards start at $50 and could easily get to $100+, although now we’re seeing chip companies start to realize that its worthwhile to have a more pragmatic pricing strategy.
While it’s nice that Arduino is open source, and commercial use is allowed if you make a clone, it’s not the biggest reason, which is why it’s down near the end of the list. However, that isn’t to say it doesn’t matter at all. Specialized derivatives can be made without paying someone or asking anyone. It’s open source hardware so a company or school can use it without any per-seat licensing. There’s no risk that it will be discontinued and the software gone forever. If you want a new feature, you can spend the time and get it added. When thousands of people have a small stake in something, or ownership, they care more. Does anyone even debate if open source software is a good idea any more?
That’s why it “won” (at least that’s why I think it won). There isn’t another platform that does this. Some are very close (like the Netduino, a great platform that fills a niche), but they still have a few more things to do. You might be checking off these points in your head with agreement, or you might be hyperventilating with a big reply forming about how FPGAs are so much better. Either way, unless you can check off each of these points, your platform isn’t ready to compete against the Arduino. Especially if you’re going to call it an Arduino Killer.
Why Arduino is Here to Stay
The barrier to entry isn’t a monetary one, it’s a philosophical one. This requires boldness and getting out of committee-think. A chip company needs to show off chips — they don’t care about Mac support, or writing tons of software, libraries, and IDEs. Chip companies are (historically) the ones who usually make the platforms. We’ll see some of the big players flood the market with subsidized hardware to beat the $30 price point of the Arduino, but that doesn’t matter if the Arduino support and quality stay high.
Why else is it here to stay? The community. How can you get 100,000+ people to jump ship? You can’t. To get close, you’ll need to develop something just like the Arduino, support its shields and accessories, and write a lot of code (something chip companies hate to do.) Great software for multiple systems, lots of libraries, drivers that work, simple, low cost, and open source. And you know what? I think that’s what the Arduino team really wants. They’re techno-hippies — they want to see other platforms with the same ideals — that’s the game they’re actually playing. And I think it’s what we all want, whether it’s called an Arduino or not.
If you want to beat them, you’ll need to take a leap and become them. The best solution for users is what really already won, and it’s here to stay. Long live King Arduino!
Check out our new Make: Arduino page for the MAKE take on all things Arduino