Our New Year's Eve fireworks shows are something to see—or so I gather from the reactions of the crowd. I don't really know, to tell the truth. Running around with a blowtorch lighting fuses doesn't give you a chance to watch the show for yourself and see what everyone's ooh-ing and aah-ing about. So for the last couple of years, my friends and I have been working our way towards the holy grail of backyard pyro—complete, automated computer control of the fireworks show. We started out the usual way, with a variety of electrical ignitors hard-wired into a "nail board" or a console of switches; I'll have to write a more complete history of these attempts sometime, more for my dear readers' laughs than for their technical edification. This year, however, we rolled out the first version of something completely different—a 12-channel, serial-controlled, microcontroller-driven, battery-powered, pyro ignition device!
On to the engineering, then: the microcontroller is an Atmel AVR, a 90S8515 running at 8 MHz to be exact (obsolete chip, sure, but I had one lying around—the next version uses an ATMega16 instead). This accepts RS-232 serial via the MAX-232 driver, interprets the byte it receives and fires the appropriate squib by pulling the gate of a NMOS high. The MOSFETs are STI P16NF06L's in TO-220 packages, good for 16 amps of drain current each; this high-current capability is built in to accommodate some types of very low resistance squibs that need a lot of current to fire.
As a temporary kludge for New Year's (I ran out of time as usual), I packaged the board and a 12V Sealed Lead-Acid battery in a tupperware tub. Since this was sited close to my mortar rack, which might spit out flaming bits onto the plastic box, I protected the top with a folded piece of sheet aluminum.