From Prototype to Kickstarter to Production: How blink(1) was made
From Prototype
to Kickstarter
to Production
How blink(1) was made
using Arduino & 3D printing
blink(1) Maker Faire Bay Area
18 May 2013
Tod E. Kurt
blink(1)
USB RGB Notification Light
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.
blink(1)
Connect the Cloud to a Color via IFTTT
Via IFTTT or your own code, you can hook blink(1) up to events in the cloud.
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.
My Background
But first, who am I? I write occasionally for Make. I make open source tools for the Arduino community
like the WingShield and the Wiichuck adapter. I founded a hackerspace in Los Angeles, and sometimes
I make big kinetic art installations with others. But what I mainly do is...
BlinkM Family
So blink(1) was easy then, right? Well...
ThingM, the company I co-founded with Mike Kuniavsky. ThingM produces the BlinkM line of Smart LED
products, which we’ve sold tens of thousands of units of.
Here’s a quick demo of some of our BlinkM products. The original BlinkM is a superbright RGB LED
with a tiny computer behind it, and gives you a simple serial interface and scripting engine to
controlling 3-channel PWM for RGB LEDs. BlinkM was designed for Arduino and lets you save PWM pins
on your Arduino and saves you from coding a color-mixing engine in your Arduino sketches. The
BlinkM MinM is the same as the BlinkM, but tiny and works great for wearables. The BlinkM MaxM
works just like the BlinkM but adds inputs to the scripting engine and lets you control several watts of
LED clusters or LED strip tape. We also have our LinkM USB adapter for BlinkMs if you don’t want to use
an Arduino. And since all BlinkMs use the same class of AVR chip that’s in an Arduino, you can
reprogram any BlinkM to run Arduino sketches.
You might think that since we’ve had so much experience in manufacturing, blink(1) would’ve been
easy right?
idea prototype kickstarter production
blink(1) hardware Timeline
2 weeks 3 months 1 month 3 months
actually, it took both less time and more time....
Well, sort of. The amount of time it took is a difficult question, because blink(1) is similar to other
products we’ve done.
In one since, it took less time, because if we didn’t focus so much on the enclosure and software, we
could’ve made it to Kickstarter faster. In our paticular case, it took longer because I’ve been thinking
about USB LEDs for quite a while.
blink(1) Process
■ Arduino sketch to prove the hardware
■ Migrate to smaller chip
■ Add USB
■ Iterate, iterate, iterate
■ Design enclosure, packaging, software
■ Iterate enclosures, 3d print variations
■ Commit to production
This was the rough process for the blink(1) hardware. It doesn’t cover the software, retail packaging,
customer service, etc. etc. All these are actually more important than the hardware, depending on the
device you are creating. We would’ve done better by focussing on the non-hardware aspects earlier.
red
green
blue
How it Started
“a.k.a my first Arduino sketch”
if( Serial.available() == 3 ) {
redVal = Serial.read();
grnVal = Serial.read();
bluVal = Serial.read();
analogWrite( redPin, redVal );
analogWrite( grnPin, grnVal );
analogWrite( bluPin, bluVal );
}
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. But that used up a lot of the I/O of the board, particularly, it
used up all three of the PWMs available at the time.
Smart LED Prototypes
At the same time I was exploring the tiniest microcontrollers at the time. These are “ATtiny” chips.
These chips have just enough I/O for controlling an RGB LED and some sort of control input. I
experimented with sensor-based input and then started thinking about combining this with the
problems of I/O-limitations of Arduino.
The techniques (and much of the code) for these chips is the same as an Arduino sketch.
For more details, see: http://todbot.com/blog/2007/03/25/smart-led-prototypes/
Smart LED Prototypes
to BlinkM
BlinkM!
After several iterations of the Smart LED idea, the result was BlinkM. BlinkM is designed to plug directly
into Arduino for programming, but can work on its own without an Arduino. It’s been a great hit.
I later generalized my desire for smart components in the talk “Smart Interface Components” at
Sketching07. For more details, see: http://todbot.com/blog/2007/07/03/smart-interface-
components-my-sketching07-talk/
AVR USB RGB LED FOB
The same time the Smart LED research was happening, I also was experimenting with USB. Here in
2007 I strapped an RGB LED to my USB research and created the “AVR USB RGB LED FOB”. This used
lightly-modified Arduino sketches plopped into an “AVR-USB” demo.
LinkM USB adapter
The USB RGB FOB turned into LinkM, a BlinkM programmer. By this time, we had many BlinkM users
and some wanted to program them without needing an Arduino. Thus LinkM. It let us play a little bit
with injection-molded enclosures and the logistics issues of managing PCB assembly vs. final
packaging assembly. But it was not meant to be a huge seller; we made it more as a convenience for
our users.
Explore Making it Small
The first real blink(1) task then was making it small like a proper USB dongle should be.
Using Eagle for drawing schematics, and then SketchUp (with EagleUp), let’s you get a good idea.
EagleUp is a plugin for SketchUp. Having a board design with dimensionally-accurate parts is a great
way to explore the “physicalness” of a design without spending a lot of money on prototypes.
Make it smaller
Here is another size study I did using Eagle, SketchUp and EagleUp. This particular case was testing
the size difference between a proper metal USB connector vs a connector created by traces on a PCB.
We found that while the area size shrunk, the height increase (particularly the distance between the top
of the LED to the top of the case), was too much for us. Also, the PCB-based connector could have
flakey electrical connections.
Enclosure Visualization
And with 3D models of the circuit board, we can start fitting it into enclosure ideas to see how things
might all go together. It’s incredibly instructive.
3D Print Enclosures
With a 3D printer like a Makerbot, Ultimaker, Bukobot, or similar, we could try out a bunch of ideas in
physical form using prototype electronics. This lets us get very close to a production look & feel.
Unfortunately, consumer 3d printers don’t have the same resolution as injection-molding, so we had to
intuit a bit what was actually possible for the finer details.
Finalize the Design
You hope. Then you change it yet again.
During the Kickstarter, we finalized the design and started getting production quotes. And we found
that some aspects of our design weren’t actually manufacturable. 3d printers and injection molding &
CNC techniques have different requirements on what’s actually possible. The biggest issue is that all
vertical walls in a molded part actually are at a slight angle, so the part can be pulled out of the mold.
Many many attempts
Makerbot -> Shapeways -> ProtoMold -> CNC
So we did a few more design iterations using 3d printers, Shapeways (which produces higher-res 3d
prints), and ProtoMold to do CNC versions.
Production Problems
Expect production problems. They will cost you money, cost you time, make you feel dumb. In the
top photo are three ways the blink(1)s metal tops were bad: too thick, too thin, or crooked. In the
bottom photo, we had a sizable portion of our retail boxes damaged in shipping.
Production w/ Friends
Don’t do this if you have sizable quantities
And our original production process had the finished electronics being snapped into the enclosure by
me and some friends. This is okay for a few hundred units, but not for 6000.
Time To Ship
And finally shipped all the hardware to our fulfillment house to be shipped to our backers.
Not Covered Here
■ Software Design & Implementation for multiple platforms
■ Shipping / Handling Logistics
■ Shipping Mistakes / Returns / Customs
■ Ongoing Customer Support
In blink(1)’s case, there’s a large aspect of the product that exists as software. And it has to exist on
Mac, Windows, Linux, Raspberry Pi, WRT, Beaglebone, etc. And the Mac & Windows versions need to be
user-friendly, stable, and have good design. This is something we definitely didn’t have much
experience in and we should have started it much sooner.
Shipping 6000 units to 2500 people means there’s lots of ways you can screw up shipments. Having a
third-party help with this can save you from going crazy but even they will make mistakes.
And even if you don’t make any obvious mistakes in packing & addressing, international orders have an
additional level of complexity. And even if you get all that correct, your shipments may still be held up
in customs for no understandable reason. Particularly if it’s German customs, for some reason.
And the most important thing to consider is that you’re making a product. You will have ongoing
customer support questions to handle. You will need to put in place mechanisms to help people.
But Kickstarter is a great community to get to try your product. They are curious, eager to help you do
well, and love to see the details of how you’re doing what you’re doing. Show them your mistakes,
even though it pains you. Part of the fun of being a Kickstarter backer is learning how people go about
creating, so don’t deprive backers of the full story. Show them your successes and your mistakes.
What’s Next?
■ Improve the hardware
■ Improve the software
■ Find better manufacturing partner
■ Streamline fulfillment with resellers
■ Increase production
For blink(1), we’re still working on it. We’re working on a improving the hardware to work on even
more USB hosts. We’re planning a major update to the software that will be easier and more powerful.
We’re also looking at different ways of manufacturing. We used the same company we used for
BlinkMs, who is a great PCB and assembly company, but doesn’t do retail packaging. Maybe we find
someone who can do everything.
We’re also trying to get blink(1)s out there quicker and more efficiently by finding resellers (particularly
in EU)
And once we have those in place, we can really ramp up production.