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.
| Qty | Name | Price Ea. | Compound Price |
| 1 | MSP430G2201IPW14R (2Kb FLASH) | $1.56 | $1.56 |
| 16 | IRFML8244 | $0.23 | $3.68 |
| 1 | BAT-HLD-001 | $0.26 | $0.26 |
| 1 | 47k 0402 Resistor | $0.04 | $0.04 |
| 2 | 0.1µF 0402 Capacitor | $0.04 | $0.08 |
| 3 | MC74HC595ADTR2G | $0.59 | $1.77 |
| 1 | TL3340AF160QG | $0.64 | $0.64 |
| 1 | Dot Matrix LED 3mm 8x8 R/G CA 24 pin* | $3.50 | $3.50 |
| -- | $11.53 |
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

Saw the post on Hackaday,
ReplyDeleteWould you like to sell 1 assembled+programmed board to me? I'm willing to offer $20 ex. shipping.
Please let me know,
Niek
Neik,
DeleteDrop me an email to greeegs@gmail.com I'll see what I can do.
-Greg
I was wondering if you could tell me the pinout for the programming header? Thanks.
ReplyDeleteHey Daniel,
DeleteIt'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)}
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?
ReplyDeleteYes 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.
DeleteI 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.
ReplyDeleteHave 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.
--matt
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
ReplyDelete