Next week I’m going to Chaos Communication Camp which takes place near Berlin. Every four years the camp provides an exciting opportunity to hang out and work on projects, attend various talks and socialise.
At the camp I’m planning to spend a lot of time in the Hx2 Hardware Hacking Area. I had originally signed up to give a hands on workshop on Introduction to PCB Etching, but I can’t bring the chemicals on the plane. So I’ve come up with another project for a workshop.
The project for the workshop will be to create a custom m0dul for the r0ket badge which can be used to form a Laser Tag system. This m0dul will be designed from scratch including hardware and software starting this weekend and during the camp, though inspiration for parts has come from DIY discussions on the Laser Tag Forums. Materials cost will be approximately â‚¬50.
This weekend April 29th to May 1st I’ll be helping to run a hardware hacking area in the Hackerspace Tent at MindField – International Festival of Ideas. Taking place inside Merron Square park in Dublin’s city centre MindField offers a diverse programme of talks, debates and workshops covering various topics on culture, technology, politics and inspiration.
Members from Irelands hackerspaces and makerspaces have been invited to build a temporary hackerspace in the park over the weekend. Giving visitors the opportunity to experience the possibilities of hacker and maker culture in Ireland. We’ll be showing off existing projects, teaching new skills through activities and workshops, and working on new projects with visitors and the resources we’re bringing over the weekend.
In MindField Hackerspace I’ll be helping to run a hardware hacking area teaching people to solder repair and re-propose, and giving a free Introduction to Arduino Workshop. I’ll also be talking part in the Hack the Planet! panel discussion on hackerspaces.
In the hardware hacking area I’ll be selling some of my kits including the Mini Mood Light v1, Dual LED Matrix Display and other LED based displays. All along with Arduino Uno’s, TI LanuchPad’s, electroluminescent wire and hundreds of LEDs.
One very special item I’ll have for sale is a basic I Can Solder kit which is in the form of a badge. The I Can Solder badge was inspired by the Electronic Merit Badge from Make:. Which I had the pleasure of using to help teach hundreds of kids and adults to solder during the Maker Faire UK in March in New Castle, England.
Last Sunday I gave a workshop in TOG as part of it’s Engineers Week 2011 activities. We spent the day assembling a 8×8 Red/Green LED Matrix Display circuit which I designed in strip board.
The circuit forms an interface between a micro controller and a 8 by 8 Dual Colour Common Anode LED Module. This type of module has two LEDs per pixel, each row has 8 pixels, with 8 rows. The anodes of each LED in a row are connected, with 16 columns formed by connecting together the cathode of an LED from each row.
A high side switch is needed to turn on/off a row and must be able to source approximately 240 milliamperes (16 multiplied by 15 milliamperes). A low side switch is needed to turn on/off a column, but only one LED is on per column so it only needs to sink 15 milliamperes.
Only one row of LEDs is on at a time, the display uses persistence of vision to give the illusion that all the LEDs are active at one time.
The basic operation for displaying a single frame is. The data for a row is shifted into shift registers one bit at a time, the shift register output is turned off (OE), the row is selected on the decoder, the shift register data is loaded into the output registers (LE) and then the shift register output is turned on. These steps are repeated for each additional row of data. All the steps are repeated indefinitely until the next frame of data is to be displayed.
The circuit was designed around the Arduino micro controller but should work with other micro controllers. The connections are shown in the image. The left hand side of the display is the row select pins the central pins are for power and ground, with the columns connected to serial peripheral interface (SPI) pins on the Arduino on the right.
The photo shows a prototype of a small 16×16 RGB LED matrix display that I worked on during 27c3 in the Hardware Hacking Area.
The display is made up of four 8×8 RGB LED modules which are only 32mm by 32mm which doesn’t give much room to work with. Each module has it’s own TLC5947 a 24-Channel, 12-Bit PWM LED Driver from Texas Instruments sinking the columns and a A2982 8-Channel Source Driver from Allegro MicroSystems source the rows. The display is controlled by an mbed NXP LPC1768 micro controller. With a 74HC238 3-to-8 Decoder and a custom switch-mode power supply module rounding out the board.
Coming up with a suitable schematic and layout only took a couple of days as I’ve used all the parts before in other boards. Etching the board and drilling the holes took about two hours on xmas eve. Reviewing the board and schematic on Day 1 I discovered a problem with the way some part were connected. With a craft knife and some future solder bridges I was able to work around the problem. I’ve already corrected the schematic and layout if I decide to make the board again.
On Day 2 after Mitch Altman’s workshop on Arduino For Newbies I began to solder the board. The process was relatively straight forward with mostly surface mount packages in SOIC and TSSOP package types. The most time consuming part was creating vias by soldering a thin wire between the two sides of the board and inserting the last LED module as the drill holes were very narrow. Though in all the soldering took about six hours.
The smoke test was successful in that it found no faults in the board. So I could now move on to programming the mbed by adapting some code from a previous project. The programming results late on Day 2 weren’t great with significant flashing of the display. Though I did discover a soldering fault which didn’t show up during the smoke test.
Day 4 was much more successful after a good nights sleep. So with a fresh head, the basic operation is. Each TLC5947 contains 24 12-bit shift registers which are connected together in series and driven by one of the SPI ports on the mbed, these registers are the source of gray scale data which is controlled by additional pins connected to the mbed. The high side current coming from the A2982’s is controlled by a 3-to-8 decoder also connected to the mbed. The corrected sequence for displaying a line on the display is that the 1153 (24 * 12 * 4) bits of data is loaded into the shift registers through the SPI port, the output is blanked, then the correct row is selected on the decoder, the data latched into the gray scale registers and the output re enabled. Then repeat for the next 7 lines, to draw a full frame.
Now at the end of Day 3 the display and code can easily operate with no flashing, I’m not sure of the refresh rate. I even spent some time working on random graphics and drawing display modes, though I’m sure better results would be achieved by someone else. I’m very happy with the results as I was expecting an out right failure.
Now what? I’ve got some small changes I could make to the board including reducing the brightness of the LEDs by changing some current controlling registers and the software can always be worked on. This was a proof of concept project for a 16×16 display I’ve been working on similar to the cool [Projekt:Bunt] a large 10×10 RGB matrix. So this prototype and any software developed for it should help the testing or running of a larger display.