|
SETSTATE | set IR mod output state Setting the mod output HIGH for a long time can result in blowing the IR transmitter LED out! |
54 | <state> |
SETPARAMS | set coding parameters |
55 | <ir_T> <head_h> <head_l> <bit0_h> <bit0_l> <bit1_h> <bit1_l> <tail_h> <tail_l> |
55 | <ir_T> <skipbits> <togglebits> <firstbyte> <rc5tail> |
SENDPDM | send ir command header pulse high for T*head_h, low for T*head_l data bytes transmitted as: bit#0 bit#1 bit#2 bit#3 bit#4 bit#5 bit#6 bit#7 tail bit is high for T*tail_h, bit0 is high for T*bit0_h, low for T*bit0_1,bit1 is high for T*bit1_h, low for T*bit1_l |
56 | <byte> [byte] [byte] ... |
SENDRC5 | send ir command transmit 2 bytes per ir command: <firstbyte> 8-skipbits bits then <secondbyte>, all 8 bits data bytes are transmitted as: bit#7 bit#6 bit#5 bit#4 bit#3 bit#2 bit#1 bit#0 bit0 is high for T, low for T, bit1 is low for T, high for T This command can be used to repeat a given ir command, but not to transmit more commands one by one, because the toggle bit is only set after sending out all the ir commands. To send more than one ir commands, repeat the SENDRC5 command with the appropriate second byte(s). |
57 | <second byte> [second byte] ... |
ir_T is given in 10 usecs, other timing values are given in ir_T steps
You can use a terminal emulator program to test out the circuit (for example minicom on linux, NC terminal on DOS, or hyperterminal on windows), but the settings usually won't work at first, so it is recommended that you write a small program to set the parameters and send commands by pressing keys on the keyboard.
Download source code here.
To program the controller to send a "channel +" command to an ITT 3520 video recorder, you need to send:
55 38 10 8 1 1 1 3 1 1
This command will set these parameters: T=560 usec, header pulse=16T, header gap=8T. bit0 pulse=1T, bit0 gap=1T, bit1 pulse=1T, bit1 gap=3T, tail pulse=1T
56 31 ce 01 fe
This command will send the required command bytes to the video recorder. You can see that this format contains some type of ID and a command code. Each byte is transmitted normally then with all bits reversed. You can repeat this second command more times to ensure reception.
The easiest is if you find the specification of your remote. Good pages to start are: the SIRCS page and the HP48 remote control program page. If you have no success, you need to measure the signal timings yourself. If you don't have a storage oscilloscope, here is a cheap trick: connect an IR receiver module to your soundcard line input and digitize the modulation waveform of all the buttons on your remote with a sound recorder and editor program. Here is a waveform example for the ITT 3520 video recorder remote.
You can actually measure all the signal times of header, bit0, bit1 and the tail pulse in a sound editor and decode the bits by hand. The yellow bars on the picture show the decoded bits. The last 16 bits contain the button code. The actual code calculated from the bits is "31 ce 01 fe", and will control the video to step one channel up. Another example for the Panasonic remotes POWER button digitized is here:
The encoding scheme is quite similar, with the difference being only in the header/bit pulse/gap times. You can decrypt the command shown yourself. It shows the sequence 02 20 90 00 3d ad, where the first 4 (!) bytes are the device identifier and the last two (3d ad) are the actual command. These remotes employ some strange checksum/code integrity mechanism, where the codes are in byte pairs and the second byte is actually calculated (?) from the preceding one or they contain more than 8 bits and mirror some of the bits.
The first picture shows the controller and the IR transmitter parts. The second shows the (nonstandard) serial interface level translator, which converts the TTL voltages to/from RS232 levels of the serial port.
|