This document is part of a series covering the Puzzlebox Orbit, a brain-controlled helicopter that features an open design, open hardware, and open software. The helicopter can be operated via an EEG headset plus either a mobile device or the dedicated Puzzlebox Pyramid remote control unit. The Puzzlebox Pyramid includes a micro-controller based on the Arduino.
While we refer to the Puzzlebox Orbit in our examples, the principles, source code, and to a large extent software are all directly applicable to most any toy or devices which use infrared (IR) for remote control.
Step 1: The Remote Control
There is at least 1 infrared LED (or Infrared Emitter, IR LED, IR Emitter) inside every infrared remote control, including the one you use to control your TV set. When you press a button on the remote, the IR LED will give out a certain series of "LOW"s and "HIGH"s which represents a series of "0"s and "1"s. (To be strict, it is common that a "HIGH" and a corresponding "LOW" consist of a "0", and another combination of "HIGH" and "LOW" with different period represents a "1".) Different series of "0"s and "1"s can mean different things, for example maybe "1100100000111" can mean "Turn Off the TV", and "001101011100" can mean "Volume Down".
Infrared is also cast by light and heat sources all around you: light bulbs, sunlight, heaters, even people. Therefore the remote control needs to have a distinct method of sending out infrared code to the receiving device (TV set, helicopter, car, etc.). That's why infrared normally transmits with "carrier" - a high frequency square wave sequence (normally 36kHz, 38kHz and 40kHz). So, if you were to capture and zoom in on an infrared signal, you would find each "HIGH" consists of a sequence of square waves rather than a continuous "HIGH" voltage level.
Check out Wikipedia:Infrared Remote Control for more information about infrared remote controls.