Control an RGB LED Matrix With Android and IOIO




Introduction: Control an RGB LED Matrix With Android and IOIO

About: Al is a wearable tech entrepreneur and creator of a line of smart phone controlled LED handbags With 22 years of experience in the IT industry, Al is currently Senior Director of Info...

**** Product version of this project available at *****

An Android controlled interactive mirror. Running various Android apps, the interactive mirror displays pictures, running text, simple games, and video streamed from an Android device over Bluetooth.


RGB 16 x 32 Matrix from Adafruit - $80
PIXEL Maker's Kit (includes bluetooth dongle and microSD card)
Black Fabric (an old Black T-shirt will do)
Black Foam Core Board
5V 2A Power Supply
2-Way Mirror - $20 for 12" x 12" size
Picture Frame (Antiques shops are good places to find unique looking ones)
Duct tape
Android Phone - 2.3.3 or above if using Bluetooth

Step 1: Installing the IOIO Board Application Firmware

For those not familiar with IOIO, IOIO (pronounced "yo-yo") is an open source microcontroller. Think of it as like Arduino but very well integrated for Android. Unlike Arduino based methods of interfacing with Android, IOIO differs in that the firmware is taken care of for you.  You have full control of the analog and digital pins from within your Android application code using the supplied IOIO Java-based libraries; no additional Arduino sketches are required!  This significantly simplifies the process, allowing you to focus solely on your Android application code.  In addition to basic digital input/output and analog input, the IOIO library also handles PWM, I2C, SPI, and UART control. The firmware is easily upgradeable using the IOIO Manager app from your Android phone.

For this project, you'll need to install a custom IOIO application firmware that supports the 16 x 32 RBG LED matrix from Adafruit which can be downloaded from here (scroll down the page to the RGB LED Matrix section). One cool feature of IOIO is you can install the difference firmwares using your Android device with a USB connection to the IOIO BoardIf you're a developer modifying the source code, you'll also need a special version of the IOIO libraries here. To do this, first install the IOIO Manager app to your Android device and then follow these instructions to import the RGB Matrix application firmware into IOIO manager and then download to the IOIO board over USB. Special thanks to Ytai Ben-Tsvi, the creator of IOIO, who wrote this custom firmware for this project.

There are currently two flavors of the IOIO board. The base IOIO board from Sparkfun and a version from Seeedstudio and Adafruit that includes some additional features like an on-board LiPO charger, LiPO battery, header pins, Bluetooth dongle, mini USB board power/charging port, and mint tin case.

Step 2: Wiring Schematic

Wire everything up per this schematic.

If this is a permanent installation, you can cut off the other end of the included LED matrix cable (this cable ships along with the 16x32 LED matrix from Adafruit) and solder directly to the pins on the IOIO.

Before mounting in the picture frame, check that everything is wired correctly before continuing. Supply 5V power to the IOIO board and 5V power to the LED matrix. Also plug in the Bluetooth dongle to the IOIO board. Bluetooth pair the IOIO to your Android phone, the pairing code is: 4545. Then install one of the apps in step 5 on your Android Phone and run it. If all is well, then you’ll see the LED Matrix light up per the app.

Step 3: Mounting in the Picture Frame

Cut the Black Foam Core board to the size of your picture frame and then cut a center rectangle in the middle of the foam core board to fit the LED matrix. Mount the LED matrix in Black Foam Core board. You can secure the back of it with duct tape.

Now cover the front of the matrix and foam core board with the black t-shirt. This is needed for the effect of the 2-way mirror. If there is any white exposed, the mirror effect will be ruined.

Secure the t-shirt using duct tape or some other adhesive.

Use a glass cutter to cut the two-way mirror to the size of the picture frame.

Step 4: Final Installation

Now just mount LED matrix into the picture frame. It should be a tight fit so it won’t move around much but you may also want to secure it with duct tape or some other frame mount.

Assuming you have covered the LED matrix correctly with the black t-shirt and there is no white showing, it will look like a mirror when turned off.

If the LED matrix is not covered in black fabric or something else that is equivalent black, the mirror effect will be lost and the LED matrix will show through the two-way mirror.

Step 5: Android Apps and Source Code

I wrote four Android apps for the IOIO LED matrix which can be downloaded from Google Play (formerly known as the Android Market). You can see the apps in action in the video at the beginning of this Instructable. Ensure before running the apps, you Bluetooth pair your phone to the IOIO using pairing code: 4545. If you’ve got an Android phone 2.3.3 and above, this pairing step need only be done once.

Soure code for the apps is here

IOIO Pics to LED Matrix – Choose a pre-set image and display it on the LED matrix
IOIO 8-Ball – Magic 8-Ball fortune teller. Displays the answers to your questions on the LED matrix.
IOIO Verbage to LED Matrix – Displays random words on the LED matrix
IOIO Camera to LED Matrix – Streams a small portion of the camera frame to the LED matrix. This one is not really that useful as the portion of the camera video displayed is very small and is really more of a proof of concept that the IOIO LED matrix can also do video.
LED Contest with Elemental LED

First Prize in the
LED Contest with Elemental LED



    • Creative Misuse Contest

      Creative Misuse Contest
    • Tiny Home Contest

      Tiny Home Contest
    • Metalworking Contest

      Metalworking Contest

    24 Discussions


    You did an amazing job! Have you tried doing this project with 2 or more RGB LED Matrix Displays? Which parts would need to be changed? Would the Android app need to be adjusted? Thanks much. Have a nice day.

    1 reply

    hey thanks, we did this also with a 32x32 matrix here . But to answer your question, the firmware and Android app would need to be modified in order to support cascaded displays. It's all open source so could be done.

    here's how to upgrade the firmware , there is also a new version out which you can get from the link, scroll down to the bottom of the page, you'll also see a youtube on how to do the firmware upgrade. I don't recognize the LED matrix, where did you get it? With that firmware, you can also use the latest apps . In the Android apps for Pixel, go to the settings section and try both 32x32 LED matrixes as the software supports two different kinds, hopefully yours is compatible with one of them.

    Hi again,

    I'm having difficulty in displaying the images in the RGB 32*32 Matrix. I already downloaded the IOIO Manager into my HTC cellphone. I tried the HelloIOIO app and the on/off button works perfectly in IOIO board.

    I also downloaded the APP-MIRR0003 firmware into my cellphone, but I don't know how to download it to the IOIO board. Is there something I'm omitting?

    I attach you an image of my Matrix, IOIO board and cellphone.



    I have an IOIO OTG Board, I know it is compatible with both USB and Bluetooth dongle. My question is whether the apps you created can be run with USB?



    1 reply

    Hey Juan, it works fine now USB from Android using the IOIO v1 board. I'm assuming your question though is USB from the PC which as you know only the IOIO OTG board supports this connection. Haven't had a chance to test that. It should work in theory but would need to test it all out to be sure.

    Dear akinke,

    In the picture I see you connect the 13 pins cable from the matrix to ioio board <
    You use pins 22 23 and 24 9red on 23)
    Except power , there not anymore cable to fix to ioio board? I mean you just connect these 3 of 13 cables?
    tks in advance

    I have taken a look at the instructable and it is the type of strip I'm looking to control but I'm looking to be able to play animations and display images on those strips arranged in a matrix similar to this video
    Most of the videos and research I've gone over have the strips controlled with either arduino boards or dmx controllers with complex programming software etc. Would you happen to know if the pins (3 and 4) he plugged the led strips in directly send the bluetooth info to the strips

    1 reply

    in this case too, you'd need to do some complex programming assuming you could find a way to control multiple strips. If you want to just load in existing animations / art, that's what this project does, but it's very specific to a particular 32x32 LED matrix used by the project, converting it to LED strips probably doable but would require some low level firmware tweaking. It's all open source so it's possible but I don't think an easy job.

    Could this board be connected to rgb led strips arranged in a matrix and produce the same results? I'm looking for a simpler way to create an led deadmau5 head without programming, excessive soldering, and complicated builds. But if I can make my own animations put them on my android and control them from there it would be great!


    1 reply

    Potentially, check out this one to see if that meets your needs

    very nice project. It's amazing.
    Could you tell me why you use IOIOmint + matrix shield in the Pixel's project and not in this one ?
    Thanks a lot

    1 reply

    Hey Pierre, thanks. This project was done prior to PIXEL (, actually it is the first prototype of PIXEL, PIXEL evolved from this project. When I did this one, I just happened to have an extra IOIO board lying around but IOIOMint and IOIO are pretty much the same board, IOIOMint just has a few extra features. The goal for PIXEL was to make available an LED display that a non-technical person could use with zero wiring, coding, etc. As you can see in this project, there is a fair amount of wiring and soldering involved. OK for technical folks but not something a non-technical person would be able to handle. So that's what the shield does, then you can just plug in the cable from the LED display and then use the smart phone app to drive the LED display.



    Here's another version of this project . In that one, you can add your own images to your Android phone's sd card which will then display on the LED matrix. I don't have a way to do text directly yet but as a work around, you can fire up your favorite image editor, put some text, and then save that file as an image (.PNG format). That text will then display on the LED matrix.

    Quick question about reliability. Did you loose your tennis match?