1.1 Remote Decoder System (top)
The overall system can be portrayed by
the block diagram below, and is the final system used for the project
to accomplish the desired objectives.
The system can be characterized as working as follows:
1) Remote sends IR signal
2) IR transceiver module receives the signal, translates it into a one-wire signal labelled ‘data’
3) Using a single pin on the printer ports’ inputs relay the data signal into the computer.
4) Run a specialized program which detects, analyses, decodes the incoming data signal.
5) Display on the screen information about the signal including which button was pressed
6) Having detected a specific button, create some output in hardware through the printer port.
1.2 Reverse Engineering the signal (top)
Going with the assumption that the signal
on the data line coming from the transceiver is a digital signal, the
initial program simply polls the parallel port and then notes any changes
on it. By noting the time it takes to poll the entire signal, the result
is that each signal has the same approximate length and there are the
same number of high-low and low-high transitions no matter which button
is pressed. By modifying the program to fill an array with the time it
takes from transition to transition in the digital signal, the array can
be displayed on the screen upon completion of the incoming signal. Then
analysing this output on the screen by comparing individual index locations
of the array it is noted that many of the transition times are the same
and only a few are different between different button presses. This
discovery seems to show that this is exactly how the message is contained
in the received digital signal.
1.3 Hardware Output (top)
The program is designed with the ability
to recognize fifteen distinct button presses so as to operate a maximum
of ten devices. This means that up to ten devices can be controlled from
the program, but in a minimal sense. It is chosen that the devices can
simply be turned on or off. For the project, an 8-bit shift register
is used (see Figure below), connected to the parallel port with three
connections for: Strobe, Clock, and Data. This has the benefit that
only three pins are used on the parallel port’s 8 outgoing bits located
at LPT1 (address 278). To keep things simple, the choice is made that
Keys 1-4 can be used to control 4 devices. They can be turned on using
play, and off using Stop. The reset button will turn all outputs off.
1.4 Functionality (top)
The fifteen buttons that are detectable are as follows: Keys 0-9, Volume Up/Down, Play, Stop, and Reset. To make use of the Volume buttons, PWM functionality is implemented for two outputs. When the correct output, say Key_3 (bit 3 on output) is selected, then by pressing the volume up button the duty cycle of the PWM increases, and decreases on volume down. This is accomplished by refreshing the shift register at a rate of 1000Hz where the frequency of the actual PWM outputs is approximately 100Hz, allowing the duty cycle to change by about 10% on each volume up/down press. The four output devices are described as follows:
1) Key_1 Functionality: On/Off, relay (to switch on halogen light bulb) operated by shift register, driven by small transistor
2) Key_2 Functionality: On/Off, LED hooked up to shift register.
3) Key_3 Functionality: On/Off with PWM (dimming), hooked up to shift register
4) Key_4 Functionality: On/Off with PWM (dimming), hooked up to shift register