Arduino Compatible programmable universal IR blaster
Universal remote controls are very cool devices that can be programmed to operate various brands of one or more types of electronic devices. You can point the universal remote control to any device and control it with buttons available on the remote. Low-end remote controls can control few appliances of the same brand, but high-end universal remote control allows the user to program new control codes to the remote. The control codes programmed can be updated to support new brands or models of devices not currently supported by the remote. There are also learning remotes that can adapt the code for any button on many other IR remote controls.
Mitch Altman invented the TV-B-Gone, consisting of an infra-red LED, two CR2032 cells, and an integrated circuit containing the television power code database. It is a very well-known kit among makers and hackers. This device can be pointed at any noisy TV in the public space and turn it off. The TV-B-Gone covers almost any television, including the latest flat-screens and plasma TVs. Hundreds of IR remote codes in the code database intended to power off the TV makes the IR LEDs blink out in rapid succession. This way, any TV can be turned off with a single button, but the functionality of this device is limited for this use.
Djordje Mandic from Serbia recently showcased his Arduino compatible programmable universal IR blaster. He designed the firmware for the TV-B-Gone hardware, and he describes it as a “TV-B-Gone on steroids”. The IR blaster can connect to your computer and control it directly through the serial connection provided by its CP2104 USB to Serial Converter chip. The designed hardware is 25.5mm x 45mm in dimension and can be powered by a li-ion or polymer battery.
Besides Arduino compatibility, the designed IR blaster has an onboard battery charging and protection circuit, measurement circuit of charging current, ESD protection for USB data lines, high power output stage for IR LEDs, and a PTC Resettable PolyFuse on VBUS. Moreover, the board is expandable. It has a flat-flex cable and dummy pull-down resistors for debugging and expansion. Talking about controllability, it has four buttons, one of them connected to INT0.
With the upgraded hardware, along with the newly designed firmware, one can do anything else than controlling TV by simply writing codes on Arduino IDE for the device’s ATmega328P microcontroller. One can use a simple plain-text control protocol to modify the behavior of the device and monitor its status.
The firmware designed by Djordje includes the following key features:
- EEPROM check to prevent the firmware from running on different hardware
- Internal 1V1 reference voltage is stored in EEPROM for calibration and better accuracy
- Control via Serial port
- Multiple ‘users’ that are selectable using option switches and via Serial port
- Watchdog timer protection for IR LEDs in case something goes wrong
- Sleep mode can be temporarily disabled during boot
- Codes are decompressed into a 1kB buffer in RAM before actually emitting code elements for better ‘off’ time accuracy
- Charging current and supply voltage can be monitored
- STAT LED blinking every 2 seconds if sleep mode is disabled (overridden)
- STAT LED brightness controllable using PalatisSoftPWM by per1234 & Palatis
- Low Battery indication via STAT LED fading out 2 times