How blink(1) was made – Hackaday 10th anniversary talk

25
From Prototype to Production via Kickstarter How blink(1) was made Hackaday 10th Anniversary 4 Oct 2014 todbot / Tod E. Kurt Tuesday, June 23, 15

Transcript of How blink(1) was made – Hackaday 10th anniversary talk

From Prototype to Production via Kickstarter

How blink(1) was made

Hackaday 10th Anniversary4 Oct 2014

todbot / Tod E. Kurt

Tuesday, June 23, 15

Alternate title of this talk

Alternate title:How to fail multiple times and still ship 20k units

Tuesday, June 23, 15

Tuesday, June 23, 15

In mid 2012 we decided to try out Kickstarter as a way to help us fund the initial production run. It ended up being a *lot* more popular than we anticipated. So in 2013, we decided to do it again.

What I do

wiichuck adapter

ScrewShield

Crystal Monster

NCM Cash Machine

Spooky Arduino

Tuesday, June 23, 15

But first, who am I? I’ve been playing with Arduino since the beginning, creating a set of Arduino tutorials in 2006 that still find use today. I make open source tools for the Arduino community like the WingShield and the Wiichuck adapter. I co-founded a hackerspace in Los Angeles, and sometimes I make big kinetic art installations with others. But I mainly do ThingM & blink(1).

(2006)

Tuesday, June 23, 15

Hackaday came around right as I was leaving the dotcom and JPL space. It was exactly the kind of site I needed and its coverage of my Roomba hacks led to my book deal to write the book on Roomba hacks, called “Hacking Roomba”.

What is blink(1)?

USB RGB LED, that’s it.

Tuesday, June 23, 15

What is blink(1)? It’s just an RGB LED that you can control over USB.You can control it via many different applications and programming languages.Make anything visible to your computer, visible as a flashing colored light.

Connect the Cloud to a Color via IFTTTor, Connect System Events to a Color

Tuesday, June 23, 15

Via IFTTT or your own code, you can hook blink(1) up to events in the cloud.

PixarMicrosoftSharpCBS SportsflukePARCTwitterFacebookAdobeShutterflySony PicturesAutodeskGoogleDisneyUniversity of Californiaamong others

C / C++JavaProcessingC# / .NETcommand-lineGoPythonRubyNodeJSLinux kernel

APIs Used by

#  cd  /sys/class/leds/blink(1)::1234  #  echo  200  >  fade  #  echo  FF0000  >  rgb  #  echo  255  >  brightness  #  echo  0  >  brightness

entirely open source & USB HID so no driversTuesday, June 23, 15

blink(1) is entirely open source. We have APIs in just about every language, including being part of the main Linux kernel branch. blink(1) devices are used by many large companies for server status notification or cube presence indicators.

How it Started / “My First Arduino Sketch”

red

green

blue

if( Serial.available() == 3 ) { redVal = Serial.read(); grnVal = Serial.read(); bluVal = Serial.read(); analogWrite( redPin, redVal ); analogWrite( grnPin, grnVal ); analogWrite( bluPin, bluVal );}

(~2006)

Tuesday, June 23, 15

I got started playing with Arduino in mid 2006.Arduino was a game-changer. I wrote a widely-distributed post called “Arduino, the Basic Stamp Killer” that highlighted what I felt were many of the benefits of Arduino over the previous easy-to-use embedded kit.(http://todbot.com/blog/2006/09/25/arduino-the-basic-stamp-killer/)

I quickly started using RGB LEDs with it. And one of the first sketches I (or anyone really) wrote was one to control an RGB LED via USB.

AVR USB RGB LED FOB

AVR USB RGB LED FOB (2007)

Tuesday, June 23, 15

I also was experimenting with USB around that time. In 2007 I strapped an RGB LED to my USB research board and created the “AVR USB RGB LED FOB”. This used lightly-modified Arduino sketches plopped into an “AVR-USB” demo.

idea prototype kickstarter production

2 weeks 3 months 1 month 3 months

1st Kickstarter

(+5 years)

Tuesday, June 23, 15

The idea of a USB LED just kind of sat there for about five years while I and ThingM did a bunch of ubicomp & Internet of Things work. Eventually we came back to a USB RGB LED and thought a Kickstarter would be a great way to help cover the startup costs of doing a real retail product.

More Details than KitsEnclosure Design Packaging Design

End-user AppsTuesday, June 23, 15

Retail products have a lot of parts that kits or prototyping hardware don’t have to deal with: enclosures, packaging, friendly software

So of course we had problems

Tuesday, June 23, 15

Production ProblemsBad CNC

Bad Packaging

Tuesday, June 23, 15

Production w/ Friends

We’re not a pizza-based economy. Don’t do thisTuesday, June 23, 15

2nd Kickstarter■ It’ll be so much easier!

■ Fix USB compatibility w/ awesome new PIC16F1455

■ Redesign to use WS2812

■ Hire proper dev team for GUI application

■ A slam dunk. We’ll be done in two months

Tuesday, June 23, 15

So of course we had new problems

Tuesday, June 23, 15

Chips? What chips?

These are all I could get for 6 months

Tuesday, June 23, 15

WS2812 LED timing, sigh.

Turns out not all WS2812s are created equal

Tuesday, June 23, 15

Post-production Problems

Tuesday, June 23, 15

Cross-platform Open Source Application Development is Hard

Pick the wrong dev team, lose 4 months, do not collect $200

Tuesday, June 23, 15

But we shipped!~20k units now

Tuesday, June 23, 15

Lessons

■ Friends don’t use friends for production

■ Lock-down inventory for any single-source component

■ Test hardware on different batches of critical components

■ If contracting s/w dev teams, parcel out smaller work units

■ Use Kickstarter to bootstrap production, not fully fund

for anyone else doing hardware products

Tuesday, June 23, 15

What’s Next?■ Another 10k production run starting now, with SeeedStudio

■ Update IFTTT functionality & Improve the GUI app

■ Continue looking at business case for wireless version (BLE or WiFi)

& MORE LEDS!!!Tuesday, June 23, 15

@todbot / @thingm

http://thingm.com/http://todbot.com/blog/

Thank You

Tuesday, June 23, 15