Unknown Domain

Reverse Engineering a BlinkM

So for the past few weeks I have been working on an idea to light white balloons with a smart RGB LED for our end of year show at uni, however the problem has been cost, the only off the shelf uni available is the BlinkM of which I personally own 2 units.

They are great devices however we need some thing cheap as the budget for the show is tight and we want 100-200 balloons each with its own LED.

The soloution was to create our own version of a BlinkM. We set out trying to see how the BlinkM works, eventually we discovered that the code was not open source and stumbled apon a Google Code project called ‘Codalyze‘ which is an open source alternative to the BlinkM code.

We had the code to program out little device but now we needed to work out a circuit to hook up all the parts, and speaking of parts, which parts did we need? Well a long time ago I remembered looking through an online site (Rapid Online) for electronic components and I saw this really cool RGB LED I wanted to play with but I couldn’t afford to go to the expensive of buying one or two because of the shipping prices.

When looking about I discovered one of the two founders of ThingM (the company who make BlinkM) has a blog called ‘todbot‘ where I discovered that the best all in one package RGB LED was the same cool LED I saw many months before. This Piranha RGB LED (72-8998) is the same exact thing used by ThingM in their BlinkM‘s this got me thinking, if I can get the same LED and micro controller then all I need to do is work out how its wired together and I can have my own personal smart LED like the BlinkM.

So I set about trying to work out what each of the components were and how they were linked using a multi-meter. I first off looked at the data sheet for the LED and discovered the required voltages for the LED to function and using my general knowlege I knew that the micro controller would happily accept 5v DC. Then using an online calculator I was able to deduce the 3 resistor values and then confirmed that with my trusty multi-meter.

So according to the datasheet for the LED, the red bit would need 2 volts at 20mA and the calculator told me I would need a 150 ohm resistor (link), the green and blue LEDs would both need 3.2 volts at 20mA and the calculator told me I would need a 100 ohm resistor (link).

So we knew the resistors and confirmed it using the multi-meter, now to work out what capacitor I would need as the capacitor was a tiny surface mounted unit I would not be able to easily discover this, which is where I used the multi-meter again to test the value. It read an odd value 92nF, after speaking online with some electronics buffs on IRC (irc.freenode.com – #electronics) I learned this was probably a 100nF capacitor that was within its tolerance.

All that was left was to work out which of the pins on the 8 pinned ATTiny45 micro controller went where. Using the multi-meter again, this time in continuity mode (it beeps when there is a connection) I was able to tell if the leg bone connected to the shoulder bone, etc…

After some playing about and use of the ATTiny45’s datasheet I worked out all the whole circuit and produced this little diagram for future reference, I don’t happen to have a CAD program so I used Illustrator as it seemed the most reasonable program to use and I have made a diagram like this in it before.

I finished off by adding a key of the pinouts for the ISP and the ATTiny45.

ATTiny45 pin out

  1. N/a
  2. Red LED
  3. Green LED
  4. Ground (-ve)
  5. I2C Data
  6. Blue LED
  7. I2C Clock
  8. Power (+ve)
ISP pin out – worked out using the ATTiny45 datasheet and this site
  1. Reset
  2. N/a
  3. N/a
  4. Groun (-ve)
  5. MOSI
  6. MISO
  7. SCK
  8. Power (+ve)
Actual ISP head pin out (source)
Parts list
  • 1x Piranha RGB LED
  • 1x 10nF ceramic disc capacitor
  • 2x 100 ohm (.25w) resistor
  • 1x 150 ohm (.25w) resistor
  • 1x ATTiny45 micro controller
  • 1x SIL pins (6 way)
  • 1x DIL .3″ IC socket

Total cost for single unit £2.63 excluding a PCB