Monday, April 19, 2010

Race Against the Physical Computing Clock Contest

If you can beat my time, I will give the first 5 people who submit a video response to this video free sensors.

My time on this video is 5 minutes and 38 seconds.

The contest has simple rules:

-Beat my time by connecting 5 different types of sensors to the same Arduino one at a time. Only 1 Arduino Duemilanove or Diecimila. You can't pre-wire the sensors, you have to use them the way you got 'em. You can't use 5 of the same sensors.
-If you do, you get 5 free sensors from Liquidware or Modern Device, and free shipping
-If you already bought the sensors from Liquidware or Modern Device, I'll write you a check (none of that "store credit" stuff here)
-If you're the first the break the 60 second threshold, you get a TouchShield Slide for free, also free shipping
-"First" is determined by the date by which you uploaded a youtube video reply to this video

For each person who first breaks the 60 second mark, I will give out a free TouchShield Slide including Pyxis OS + Studio Pro ($194.93). That means 1 TouchShield Slide for each person who breaks the following marks:

4:00 - um maybe not possible?
3:00 - yeah right
2:00 - ha ha ha
1:00 - I will also buy you a beer if you are of legal age
0:30 - And dinner
0:00 - Dream on
No negative times, no backwards running clocks, etc.

Yes, obviously there are multiple per household. Whoever came up with "only 1 per household" seriously pissed me off as a kid. If I collected that many proof of purchases from cereal box tops, you owe me 2 GI Joe action figures, General Mills. I will never forget that. General Mills, you ruined my childhood.

Moving right along.

This is a video of me putting together 5 sensors: a crash test sensor, a 3-axis accelerometer, a dual axis gyroscope, a temperature sensor, and an accelerometer in 5:38. The only things I had were:

1) An Arduino wired up to the computer and an ExtenderShield and protoboard
2) An installation of Arduino Antipasto IDE, the Liquidware branch of the Arduino IDE
3) 5 sensors: Compass, 3-Axis Accelerometer, Dual-Axis Gyro, Temp Sensor, Crash Test Sensor
4) 6 red wires
5) 5 sensor cheat sheets

I hate contests. I really hate when companies run contests that are like, "WIN THIS FOR FREE AND SUBMIT THIS FORM AND WIN A TRIP TO HAWAII YAYAYAYAYAYAYA XOXOXOXOXOX". That's lame. I always feel manipulated, and the contest ends up feeling gimmicky and stupid. Why am I wasting my time doing all this work just for the company to profit off of me?

That's why this is not one of those stupid contests. There's a point to this contest, and this is it:

Open Source Hardware and Physical Computing is done by people like me, DIY'ers who typically have day jobs, and do hobby projects at night and on weekends. I do my work in my own time, and I don't have time to fiddle around with spec sheets for hours just to get a sensor up and running.

DIY projects live and die by the clock. I call it the Race Against the Physical Computing Clock. If there's a portion of the project that takes too long, or is too complex, or requires me to read a 15 page PDF specification sheet in order to figure it out, the project will die.

The project won't get finished in one sitting, then it'll drag out over multiple weekends and weeks, months, it will collect dust. There are more DIY projects of mine unfinished on shelves than there are finished, and they all share one thing in common:

I'm too darn lazy to read technical whitepaper spec sheets.

I don't think I'm the only one, either. Paul and Chris shared my frustration, when it took us more than 19 minutes to get a sensor up and running that we had bought from Radio Shack. Apparently, someone at Radio Shack thinks it's an acceptable idea to sell sensors with bit timing diagrams and URL's where you have to download special drivers to get the sensor working. Are you kidding me? That kills the whole point of rapid prototyping DIY projects and physical computing.

Tom Igoe once told me, physical computing is about being able to see inside the case, open the box, you don't own it if you can't see and tinker inside. He called this the "glass box" principle.

I propose another principle: the "don't waste my time with spec sheets principle". I'll shorten it to the "spec sheet" principle. No DIYer should ever need to understand digital signal multi-wire chip select timing diagrams in order to get a sensor up and running. Ever. Over my dead body.

So Justin, Paul, Chris and I have made "sensor cheat sheets" and a new branch of the Arduino Antipasto IDE that reduce the amount of time required to get a given sensor up and running. We thought about the process that we, and other people we know, used to get a sensor communicating with Arduino.

We coined a metric, called, TBTSWWA, or "Time Before the Sensor Worked with Arduino". We clocked 4 different types of sensors, and averaged the time across the 4 of us. Paul and Chris are "advanced" users, I'm probably a "moderate", and Justin's like an "advanced beginner". I'm probably being generous to myself with that rating :-)

Here are our average results with 4 other commonly used accelerometer sensors, compared to the new Liquidware + Modern Device triple axis accelerometer. The y axis in the chart below is in seconds. The first sensor required soldering, and we had to assume that the soldering iron was warmed up. The next 3 sensors all required various degrees of hunting on the web for the source code that someone else had written for the sensor. That typically meant searching the Arduino forums or playground.

So what's the trick with the LW+MD (liquidware, modern device) sensors? Two things:

1) Sensors pinned out for 5 volts and clearly labeled, and pinned out in a minimal-footprint to make wiring logical and minimize the number of wire connections

2) Sensor cheat sheets which summarize everything you need to know to get the sensor up and running in 1 page

Here are the pdfs (PDF ALERT) for the sensor cheat sheets, and here are the picture samples below: crash test sensor, 3-axis accelerometer, temp sensor, compass sensor, dual axis gyroscope.

3 months ago, Paul from Modern Device, Chris from Liquidware, and I sat down at coffee in New Haven with a bunch of Arduinos and sensors from Sparkfun, Parallax, Radio Shack, Digikey, and Jameco and started hacking together some small fun projects using the sensors to measure the positions of our limbs and 3D objects.

It was surprisingly frustrating.

The problem was, in order to get a sensor working, you need 4 major things:

1) The sensor
2) A breakout board for the sensor
3) Wiring diagrams for how to power up the sensor
4) Code to get the sensor up and running

1 isn't hard to get, you can get sensors for all over the place. 2 isn't bad either, since Nate at Sparkfun does a really nice job with his breakout boards. But 3 is usually buried deep inside a PDF spec sheet written in China that usually looks a lot like the most technical thing you've ever seen. And 4 is a crapshot, and you have to cross your fingers and pray that someone else has ported the code.

So we figured that had to be a better way to do physical computing with sensors.

We promised ourselves we would spend the next 3 months achieving an "order of magnitude increase in time-based productivity with DIY physical computing sensors".

And this is the result of that work.

By the way, if you're curious, here are some "test" videos of me "training" for the 5:38 video shoot :-)

1 comment:

Matt said...

YEAH!!!!!! nice going... interesting idea to have everything popped up and open... minimizes clicking around for sure.

i'm going box up and send one of each of the sensors i have, and a touchshield slide... just email me at inthebitz at gmail with a mailing / shipping address :-)