1、IR Communication,October 27, 2004,Sources,Lindsay, Andy. IR Remote for the Boe-Bot. v 1.0 2004.,How Does a TV Remote Work?,On a button press, the remote flashes its IR LED on/off at 38.5 kHz to broadcast a code for that button. The code is produced by controlling the brief amounts of time the IR LED
2、 flashes on and off. It flashes a signal to indicate the start of transmission. For a SONY TV, the remote has to broadcast IR for 2.4 ms o indicate start. The message that follows consists of a combination of 1.2 ms (binary-1) and 0.6 ms (binary-0) broadcasts. The IR detector on the Boe-Bot sends lo
3、w signals that match the time pattern broadcast by the remote.,How Does the TV Dectector Work?,In many cases IR detector/receiver on your Boe-Bot is the same detector found in many TVs and VCRs. This detector sends a low signal whenever it detects IR flashing on/off at 38.5 kHz and a high signal the
4、 rest of the time. When the IR detector sends low signals, the processor inside a TV or VCR measures how long each of the low signals lasts. These are used to figure out which key was pressed on the remote. BASIC Stamp 2 can be programmed to detect, measure, store, and interpret the sequence of low
5、pulses it receives from the same IR detector.,Timing Diagram,This message consists of thirteen negative pulses that the BASIC Stamp can easily measure. 1: the start pulse, which lasts for 2.4 ms. 2-13: will either last for 1.2 ms (binary-1) or 0.6 ms (binary-0). 2-8: indicates which key is pressed.
6、9-13: indicate if the message is being sent to a TV, VCR, CD, DVD player, etc. Pulses are transmitted in least significant bit first fashion. the first data pulse is bit-0. the next data pulse is bit-1 Etc. If you press and hold a key on the remote, the same message will be sent over and over again
7、with a 20 to 30 ms rest between messages.,Timing Diagram,PULSIN Command,Complementary command to PULSOUT The syntax for the PULSIN command is PULSIN Pin, State, Variable Pin: the I/O pin for measuring the pulse. State is used to determine whether the pulse is a high pulse (1) or a low pulse (0). Var
8、iable stores the pulse duration measured by the BASIC Stamp., IR Remote for the Boe-Bot - RecordAndDisplayPwm.bs2 Measure all data pulses from SONY IR remote set to control a TV. $STAMP BS2 $PBASIC 2.5 time VAR Word(12) SONY TV remote variables. index VAR Nib Display heading. DEBUG “time ARRAY“, CR,
9、 “PWM MEASUREMENTS“, CR, “Element Duration, 2-us“, CR, “- -“ DO Beginning of main loop.DO Wait for rest between messages.PULSIN 9, 0, time(0)LOOP UNTIL time(0) 1000,PULSIN 9, 0, time(0) Measure/store data pulses.PULSIN 9, 0, time(1)PULSIN 9, 0, time(2)PULSIN 9, 0, time(3)PULSIN 9, 0, time(4)PULSIN 9
10、, 0, time(5)PULSIN 9, 0, time(6)PULSIN 9, 0, time(7)PULSIN 9, 0, time(8)PULSIN 9, 0, time(9)PULSIN 9, 0, time(10)PULSIN 9, 0, time(11)FOR index = 0 TO 11 Display 12 pulse measurements.DEBUG CRSRXY, 0, 4 + index, “time(“, DEC index, “)“,CRSRXY, 9, 4 + index, DEC time(index)NEXT LOOP Repeat main loop.
11、,A Sample Dataset,Test data for 5 second press of each key 0-9, vol+, vol-, ch+, ch-, power and enter. Dataset, IR Remote for the Boe-Bot - 2BitRemoteBoeBot.bs2 Control your Boe-Bot with an IR remote set to control a SONY TV with the 1-4 or CH+/- and VOL+/- keys. $STAMP BS2 $PBASIC 2.5 time VAR Word
12、(2) SONY TV remote variables. DEBUG “Press & hold a digit key (1-4) or CH+/- and VOL+/-“ FREQOUT 4, 2000, 3000 Start/reset indicator. DO Beginning of main loop.DO Wait for rest between messages.PULSIN 9, 0, time(0)LOOP UNTIL time(0) 1000PULSIN 9, 0, time(0) Measure/store data pulses.PULSIN 9, 0, tim
13、e(1) Decide which maneuver to execute depending on the combination of pulse durations stored in the first two pulse measurements.IF (time(1) 500) AND (time(0) 500) THENPULSOUT 13, 850 ForwardPULSOUT 12, 650,ELSEIF (time(1) 500) THENPULSOUT 13, 650 BackwardPULSOUT 12, 850ELSEIF (time(1) 500) AND (time(0) 500) AND (time(0) 500) THENPULSOUT 13, 650 Left rotatePULSOUT 12, 650ENDIF LOOP Repeat main loop.,