Light Brigade IR Badge Board and Soldering Workshop
We were approached by the organisers of the White Night 2010 celebrations to run a workshop for the event. The theme this year is 'Illumination', so we figured some kind of light-displaying kit would be ideal. It would need to be a small and easy to put together kit, for any level of ability, and cost very little money to produce.
We've all previously seen and played with the Trippy RGB kit from Mitch Altman's Cornfield Electronics, which uses a combination of an IR sensor and IR LED to reset a pattern of colours sent on an RGB LED, and thought that would make an excellent base to start the project with.
We wanted to take it a step further though, and have actual data sent over IR from device.
Matt created a board design for the project pretty early on, and got that shipped to PCBcart for production. Previous workshops have taught us that whilst its possible to etch custom boards for these events, the quality of them makes it difficult for folk to solder, and there's a much higher risk of shorts and track lifting.
The board does differ from the Trippy RGB board, in particular as we wanted the PCB to be worn as a badge, it has been made single sided with a front-mounted battery holder. We also changed the pin-out, which in retrospect was not a great idea - though the code can be translated it did mean that we had a reasonable amount of effort translating the prototype (on a cornfield board) to our new design - and now we need to provide two versions of the code. Hey ho, live and learn.
Thankfully, our board works too! (And are available for purchase from The Shop :)
The software side is still evolving as we get closer to the workshop, but the current version of the code is up on Github: 
Software-wise, most of the effort has been spend porting the NECrcv and IRremote Arduino libraries to the ATtiny25. This was quite a learning experience, getting to grips with how Timers and Interrupts work, plus the register-based programming of the ATtiny25, in avr-gcc. Joy.
IRremote was originally chosen so that we could potentially support more than one protocol (though we had selected NEC-IR early on, as it has error checking built into the protocol). However, we realised a little late in the day that the ATtiny25 has significantly less memory than a ATmega168, and the decoding routines of the IRremote lib were not going to work. 128 bytes of RAM is not a lot to play with.
Fortunately for us, NECrcv (that IRremote was based on), does not use as much memory, since it decodes the IR on the fly. Phew.