BlinkM Smart LED as the Smallest Arduino

Did you know you can run Arduino programs on tiny BlinkM Smart LEDs? It might make BlinkM the smallest Arduino so far. To use a BlinkM as an Arduino, all you need is the free Arduino software, a low-cost AVR programmer, some wire, and a BlinkM.

And if you snip off the RGB LED, the three I/O lines used by it can be used as analog or digital inputs.

Most libraries will probably not work without some modifications. You don’t get a hardware serial port either, but SoftwareSerial works.

Software Setup

To enable the Arduino software to program BlinkMs, you’ll need to teach Arduino about new “Boards”. This is done via a set of config files and AVR core code. This work has been done by the High-Low Tech group at MIT and Alessandro Saporetti.

The BlinkMuino.zip zip file contains everything you need. This zip file works for Mac OS X, Windows, and Linux.

Unzip the BlinkMuino.zip file, and copy the resulting “hardware” folder into your Arduino sketchbook folder. You can find the location of your sketchbook by opening the Arduino preferences and looking at the “Sketchbook location” field.

Restart the Arduino software and the “Tools” -> “Board” menu should now have entries for BlinkMs. There are three sets of entries, depending on the type of BlinkM and programmer you have. Select the entry that is correct for your hardware.

Hardware Setup

You will need an AVR-ISP programmer to program the BlinkM boards. If you have an Arduino board, the ArduinoISP sketch turns the Arduino into an AVR-ISP programmer. However, it doesn’t work for all Arduino boards. Or you can use a regular AVR-ISP programmer. These are fairly low-cost: the Atmel AVRISPmkII is 35 USD, while the Adafruit’s USBtinyISP is 22 USD.

With a programmer acquired, wire up the BlinkM to it. If using a regular AVR-ISP programmer, it should be wired up like below. The intro video shows a practical method of using a breadboard and jumper wires to convert the 6-pin AVR-ISP connector to something a BlinkM can use. Note that some programmers do not supply power to the BlinkM, so you may need to run power too.

If using AruinoISP, the hookup is as below. See the diagrams and photos on the ReflashBlinkM page for details.

Using BlinkM as an Arduino

When you press the “Upload” button, the Arduino software will use send your program to the AVR-ISP programmer you’ve hooked up and it will program the BlinkM.

While the BlinkM is being programmed, its blue LED will flash. Once it stops flashing, the BlinkM starts running the Arduino sketch. At this point you can disconnect the BlinkM from the programmer and use it however you like. It runs stand-alone, no computer or Arduino board required, just power.

As an example, below is the “BlinkMuinoServoKnob.pde” sketch shown in the video. It assumes it is hooked up to a potentiometer knob and a hobby servo as in this diagram:

Getting BlinkM back to Factory Firmware

Programming a BlinkM board with Arduino sketches erases the normal BlinkM firmware. If you want that functionality back, there is a collection of BlinkM factory firmware files and an application to program them called ReflashBlinkM. Use this to get your BlinkM back to factory-fresh conditions.

Have Fun!

Using the BlinkM board as a general purpose microcontroller board is a real blast. It’s astounding being able to reprogram something so small with the easy-to-use Arduino software. If you develop something neat with a BlinkMuino, let me know in the comments.

Will this still be compatible after the Arduino software was updated to 1.0? Have a couple of BlinkMs laying around and I’m planning to make a neuralyzer from Men in Black for a costume party where I want to incorporate it.

blink(1), the USB RGB LED

blink(1) is a super status light. It fits into any USB port on almost every type of computer: Mac, Linux, Windows, Raspberry Pi, Beaglebone, WRT router, etc. No drivers needed and APIs in about every language you could want. And it's all open source.
Buy one now!