How to build a Smart Lightbulb in a Weekend

After years of building random unfinished prototypes and never documenting them, we decided to do a proper blog post to share the love.  We have lots of love to share.

For a few weeks now we’ve been dabbling around with Bluetooth 4.0, otherwise known as Bluetooth Low Energy (BLE).  During that process we thought of a few cool applications and decided to go out and build one of those.

The basic idea is this:  You take a lightbulb, and you stuff it with a bluetooth antenna, an arduino and a bunch of RGB LEDs.  Then control dimming, color, and anything else you can think of with your (BLE enabled) phone.  Good stuff.

Hardware

Since we are making a lightbulb, we have to start somewhere, so we bought a bunch of different light bulbs at Home Depot and ended up picking the biggest one. There are a crap-ton of components so we gonna need the space.  Once we had the lightbulb, we emptied out the boring old fluorescent bulb to make space for the imminent awesomeness.

IMAG0518 IMAG0514

First off, we need a way to power our circuit.  Being the badass engineer that you are, we know what you’re thinking, “I should build a transformer circuit that converts mains power to 5V”.  Good idea!  Except that would take up way too much space, think about it, have you seen the size of those things?  Using the power of laziness, we decided to use one of those teeny iPhone chargers.  Now we have 5V to power everything, next step.

IMAG0529

With 5V we can power the Arduino and the LED’s, but not the Bluetooth module, which runs at 3.3V.  Again, we know what you’re thinking: “Hey, you have an Arduino Pro Mini, and that has an internal regulator that we could use to power the BT module!”.  Well, that’s actually a really good idea, but we are not as crafty as you are so we bought the 5V version of the Pro Mini, instead of the 3.3V.  That means we had to make a 5V to 3.3V regulator.  Not bad, now we’re even.

IMAG0524

Awesome, now we can power the whole project.  Wait, no we can’t, because the Arduino pins are a bunch of wussies who can only drive 40mA. (Someday I’ll design a microcontroller that can drive 1000A per pin.  It’ll be the size of a refrigerator, but I’ll be happy.)  Now that may sound like a lot but it’s not enough for what we want.  RGB LED’s are technically three LED’s all packed inside of one (red,green, and blue).  Each of these LED’s has maximum forward current of 20mA, easily managed by the Arduino pins.  So what’s the problem?  We are planning on putting as many LED’s inside the bulb as we can (We ended up just using 3, don’t judge).  So we would need one pin per color per LED.  That’s a lot of pins, so we used a transistor to drive each color.  That’s 3 pins, for any number of LED’s that we want (if the transistor can drive the current, that is).

Let’s not forget the resistors on those LED’s.  We didn’t have a whole lot of resistors lying around so we couldn’t make all the LED’s run with exactly the same forward current.  Still, it was close enough.

Red = 17mA     Green = 16mA     Blue = 18mA

IMAG0533

Now it’s just a matter of connecting everything together.  And this is how everything looks together,  in all it’s hot-glued glory.

IMAG0532IMAG0537IMAG0547IMAG0536 IMAG0540IMAG0550

Software

Great, all the hardware’s done.  Now for the brains of the operation, which is divided in two parts.  The Arduino firmware, and the iPhone application.  The firmware is pretty straightforward.

Right now,  the Arduino isn’t reading serial data from the BLE module, it’s pretty much working as a pass-through for whatever the BLE module says.  It reads the value of three of the BLE’s GPIO’s to control each color of the LEDs.  In the future, it should read serial commands from the UART and have a big list of awesome things that it’ll do.  Naturally.

And as you can see, it looks gorgeous.

IMAG0555IMAG0554

For the iPhone application, you’ll have to wait for a future post, by our very own Ramón González.

Parts List

Finally, if you want to build your own, here’s a rough list of all the parts, and their prices.

Lightbulb: $10 for two.
This bulb is great for this because it’s pretty big, and easy to open up.

Charger: $5
We used a cheap knockoff sold at a local hardware store.  You can use any, as long as it fits inside the lightbulb.

BLE Antenna: $44

Arduino Pro Micro: $10
We used the 5V version, but you’re better off buying the 3.3V one.

LED’s + Miscellany: ~$10

For a grand total of about $80 for the whole thing.

Tips for a better customer interview process

Customer interviews are an important part of any lean start-up.  Once out of the building you will certainly learn a lot about your customer segment and the problem you are trying to solve.  We’ve learned a lot about our own customer segment this way, but we have also learned through trial and error  how to talk to people. So we’ll go over some lessons learned from talking to customers and include what to do, what not to do, how to find them, and more.  Some of these may seem a little obvious but the difficulty comes in their execution.  Try to keep track of these tips and you’ll do great.

Before the Interviews:

Create questions around the problem and see if your customer arrives to the problem without you telling them explicitly.  One of your goals should be to see if what they need is your value proposition or how is it different from what you are offering.

Finding Customers:

On your first couple of interviews it doesn’t really matter all that much where you go and who you talk to. You’re trying to get a feel for the problem and your potential customer. Over time, you will define your customer segment more accurately and should try to avoid noise in your feedback as much as possible. For example, early on we made the mistake of assuming we would find our customers in our distribution channels.  However, we quickly realized that channels are where your customer is going to look for your product, not necessarily where they will be hanging out.

Make sure you nail your customer segment and figure out where you can find your customer. Do “A day in the life of your customer”, where you put your self in your customers shoes and try to figure out what they do throughout the day. I assure you that it will pan out. For example, if your customer segment is parents with young kids, they will probably spend part of their weekends doing some fun activities for their kids. So try to figure out what places near you kids can have fun (e.g. parks) and go there to find your customers.

Driving the Interviews:

  • The 5 minute promise. We always approach customers by introducing ourselves and asking just for five minutes of their time. It will always take longer than that, but it is gateway to saying: “Hey, I promise I won’t take too much of your time”.
  • There is no such thing as bad feedback. Our first step is always to let the customer know that there is no right or wrong answers and that all feedback is good feedback. Make sure they understand this so they don’t feel pressured to give you the “right” answer. Some customers will not give you the best possible feedback because they don’t know technology like you do. So it is your job to let them know they can say or ask whatever comes to their head, whether they think it is possible or ridiculous. Sometimes we tell customers to imagine that they have a magic wand and that they can create or improve anything; and ask them what would they create or improve.
  • There are three roles when doing interviews. Asking, listening, and documenting. Tackle the interviews in teams of two to facilitate the process. Have one person drive the interview and do the asking and listening; and have the other documenting. Trying to do them all at once is a bad idea.  Please note that we are not saying you should not do interviews if you do not have a partner, it’ll simply be a bit tougher to juggle the three roles.
  • Be aggressive. Unless you are interviewing friends which should only be done sparingly at the beginning of your customer discovery process  you’ll probably always be interrupting your customer.  This is expected. You won’t find people that have been waiting all day to answer your questions. So be aggressive, the worst that could happen is that they say no, simply move on to the next interviewee.
  • Listen, listen, listen. Don’t interrupt them and don’t ask questions until the customer is done talking.
  • Don’t be in a hurry. Take your time and try to relate to a topic or situation they feel close to.  Ask as many questions as possible. Try to make them laugh, it will relax the customer and put them in a good mood to help you.
  • Look decent. We have had much better results when we look our best than when we look like we’re homeless.  For example, I’ve had better results with my beard trimmed.  It may seem a bit shallow but remember, you are talking to strangers whom you gave less than a minute to figure out if they can trust you.
  • Accept the craziness. We have done interviews where people have dropped lines like, “You look like you smoke weed.  I love weed, and my problem is…” – in all honest, I should have trimmed my beard.  We’ve also had comedic responses like “Honey, my only problem was my ex-husband and he’s gone.”  The point is, people are crazy.
  • Accept the rudeness. We have done interviews where people try to trash our idea or believe they are startup experts; and thus try to tell you what you should be doing,  Some people simply feel threatened by someone with bigger ambitions, don’t take it personal.
  • Don’t correct your customer unless it’s necessary. Some people perceive it as rude. Does it really matter? Does it affect your value proposition? Ask questions around the issue so you can find out the information you need.
  • Highlight pains and excitement. Make sure you highlight in your notes their pains,  things that got them excited and things they hated. It will make analyzing the data that much easier.
  • Blend in. Wherever you are doing the interview, if you can consume or pretend interest on a product, do so.  This will confuse the people (e.g. employees, managers) there and think you are just a customer talking.

Lastly, no matter how many times you do it, you probably won’t be able to do the interview in the same order every time. Sometimes because you forget the questions and other times because you learned the pains are completely different from what you were expecting. That’s the beauty of doing personal interviews over surveys and anything with a defined structure; an interview can go many ways so just have a conversation with your customer and let it flow.

I hope these tips help you in your journey.