Jan 20, 2012

8bi8 Overview

The 8bi8 is a small self contained 8x8 bi-colour LED matrix toy. It has emerged after various prototypes. From here I want to create a new revision building on what I have learn from building this version.

 Overview video:

Soldering video:

The hardware: (BOM)

This is the bill of materials. (the prices listed here are from the sources that I used and I am not associated with them nor am I responsible if their prices change.) It's should also be noted that most of these parts could be easily substituted for similar parts based on availability.

QtyNamePrice Ea.Compound Price
1MSP430G2201IPW14R (2Kb FLASH)$1.56$1.56
147k 0402 Resistor$0.04$0.04
20.1µF 0402 Capacitor$0.04$0.08
1Dot Matrix LED 3mm 8x8 R/G CA 24 pin*$3.50$3.50
All parts here are based of digi key prices expect for the LED matrix which was sourced from ebay.

Note these prices are based on buying parts to create 1 LED matrix toy. Making a batch of 10 would reduce cost considerably per device. (for example buying 10 LED matrices reduced their indv. price to $1.49)

The PCB used for this is based on the design files below and I had mine manufactured at ITeadstudio using their 10pcs 5x5cm service. This adds $0.99 per device for the PCB cost.

CR2032 batteries can be bought cheaply online, offline or salvaged form old computer motherboards.

The Software:
The software is written in ASM and has been designed to be compiled with naken430asm the tiny open source MSP430 compiler. A simple perl script has been included to convert a simple PNG image sprite image into code the 8bi8 can prccess.

Download: 8bi8 Version 1

The Design:

The design is made in eagle and was designed to fit as much as I could onto the limited space. After soldering up 2 prototypes the only issue I have is the very small space that you have between the mosfet channel drivers.

Download: Eagle files (v6),  PDF schematic, Gerber files


  1. Saw the post on Hackaday,

    Would you like to sell 1 assembled+programmed board to me? I'm willing to offer $20 ex. shipping.

    Please let me know,

    1. Neik,
      Drop me an email to greeegs@gmail.com I'll see what I can do.


  2. I was wondering if you could tell me the pinout for the programming header? Thanks.

    1. Hey Daniel,
      It's just the standard TI 0.05" spacing for MSP430 programming. it matches J4 on the launchpad kit. The outer 2 pins are used for a UART interface, since they are not needed for programming and debugging via the SBW-interface they were not included in this design.

      {0. UART TXD (Not included)}
      1. VCC
      2. SBWTCK
      3. SBWTDIO
      4. GND
      {5. UART RXD (Not included)}

  3. I was also wondering if you cold do the compiling and flashing in TI's CCS (I'm using Windows). I believe this can use assembly. Am I right?

    1. Yes that should work. you will have to modify a few things. I don't have a windows machine, so I can't test it out. but you'll need to change things like the include, the #defines to .equ etc, check the example code from TI's website to help you get started.

  4. I ordered the parts and assembled one of these this evening while watching the mars landing. I've not worked much with msp430 and not really dug into the software side yet. I'm thinking about using Energia.

    Have you made any software/board updates? I might try to add some IR in/out once i get the matrix working well.

    thanks for publishing all this. it has been very fun so far.


  5. Hey, this is kind of cute! You could add some neat flexibility for additional use with your next version...might I suggest: 1) you could use a lower cost n-mosfet because you really don't need such a low Rds-on and the one you chose has a very high input capacitance, which wastes battery power on every cycle, 2) adding a 10ohm series resistor (use a network to save space) between the mfet gate and driver will increase the life of the mfet and driver and reduce radiated emi, 3) consider swaping the shift register data and output-enable to other pins to free up the MSP's I2C port and bring the I2C port to a tiny 5pin connector/header with pwr, gnd, and the pwr-btn signal so you can connect multiple units together in multi-drop and create larger displays that are sync'd; I'm not familiar with the MSP's I2C port, so I don't know whether it can run the I2C dynamic addressing protocol to assign addresses; you may need to use several other pins as inputs to set unique I2C addresses upon startup; use 22k~47k pullups on SCL and SDA on each board to function like a 'pay as you go' pull-up configuration; using a pin to set the addr, you can use an analog input with switch settable resistive divider to read more than just a binary state. -- BrooksL