ATtiny85 TV-B-Gone
A keychain remote that turns off (almost) any TV in range. Mitch Altman's classic prank, rebuilt on a 50-cent microcontroller.
Difficulty: Through-hole. Estimated build time: about 60 minutes. Estimated parts cost: about US$3.80. 10-line bill of materials. Compare supplier offers when available. A pocket-sized universal off-only TV remote.
Burn the firmware into the ATtiny85
Get the TV-B-Gone source from Mitch Altman's repository (link below). Open the Arduino IDE, install ATTinyCore (board manager URL: drazzy.com/package_drazzy.com_index.json), select 'ATtiny25/45/85' → 'ATtiny85' → 8 MHz internal. Use an Arduino Uno as ISP (File → Examples → ArduinoISP), wire SCK/MOSI/MISO/RESET from the Uno to the ATtiny pins 7/5/6/1, power VCC and GND, then 'Burn Bootloader' to set fuses, then 'Upload Using Programmer'. The hex is roughly 4 KB — fits comfortably in the 8 KB flash.
Wire the IR transmitter stage
Place the ATtiny85 on a small breadboard. Tie pin 8 (VCC) to +3 V (two AA cells) and pin 4 to GND, with a 100 nF ceramic cap across VCC-GND right at the chip. From pin 5 (PB0, the IR output) wire through a 220 ohm base resistor to the base of a 2N2222 NPN. Tie the 2N2222 emitter to GND. Put the IR LED in series with a 10 ohm collector resistor from +3 V to the collector. The 2N2222 boosts the LED current from the ATtiny's 20 mA limit up to about 80–100 mA peak; the resistor sets it. A bright IR LED at 100 mA peak gives you 8 to 10 m of range.
Add the button and status LED, then deploy
Wire a tactile button between pin 2 (PB3) and GND, with the firmware's internal pull-up enabled. Wire a 5 mm visible LED (red is good) through a 470 ohm resistor from pin 3 (PB4) to GND — this blinks while the chip cycles through brands. Power up, point the IR LED at a TV (line of sight, within 10 m), press. About 4 seconds later — click. The firmware iterates through brands in popularity order, so most TVs respond in the first second. Slap it on a keychain. Use responsibly.