IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by...

18
IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by Andy Lindsay

Transcript of IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by...

Page 1: IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by Andy Lindsay.

IR Communication

Materials taken from a variety of sources including IR Remote for the Boe-Botby Andy Lindsay

Page 2: IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by Andy Lindsay.

The Plan: Use a TV Remote to Communicate with the Boe-Bot

Sony TV remotecontrol

IR signal

PWM

Page 3: IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by Andy Lindsay.

What is IR: Visible Light Waves

Page 4: IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by Andy Lindsay.

What is Infrared

Page 5: IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by Andy Lindsay.

The IR Signal

The IR detector is only looking for infrared that’s flashing on and off 38,500 times per second. It has built-in optical filters that allow very little

light except the 980 nm infrared. It also has an electronic filter that only allows

signals around 38.5 kHz to pass through. This is the type of signal produced by the

remote control. This prevents IR interference from

common sources such as sunlight and indoor lighting.

Page 6: IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by Andy Lindsay.

Important Concepts

Pulse width modulation (PWM): Pulse durations are used in many applications, a few of which are motor control, and communication. Since the IR detector sends low pulses that can be measured to determine what information the IR remote is sending, it's an example of using PWM for communication.

Carrier signal: The IR remote uses a 38.5 kHz "carrier signal" to transmit the pulse durations from the remote to the IR detector.

Communication protocol: A communication protocol is a set of rules for devices that have to exchange electronic messages. Protocols tend to have rules for voltages, the amount of time signals last, carrier signal frequencies and/or wavelengths, and much more. When two or more devices follow the rules of a given protocol, they should be able to communicate and exchange information.

Page 7: IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by Andy Lindsay.

The TV Remote Control You must configure your universal remote

so that it sends PWM messages to a television set using the SONY protocol.

TV remote setup Press and release the TV key. Press and hold the SET key until the indicator

LED on the remote turns on and stays on. Use the digit keys to enter 0001. The LED may

turn off briefly as you press each digit. VCR remote setup

Press and release the VCR key. Press and hold the SET key until the indicator

LED on the remote turns on and stays on. Use the digit keys to enter 1028. The LED may

turn off briefly as you press each digit.

Page 8: IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by Andy Lindsay.

The Protocol

Page 9: IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by Andy Lindsay.

Protocol Details 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. 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 with a 20 to 30 ms rest between messages.

Page 10: IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by Andy Lindsay.

How the IR Detector Works The Boe-Bot IR receiver 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 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. Then, it uses these measurements to figure out which key was pressed on the remote.

Like the processor inside a TV, the Basic Stamp can be programmed to detect, measure, store, and interpret the sequence of low pulses it receives from the IR detector.

Page 11: IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by Andy Lindsay.

Schematic

Page 12: IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by Andy Lindsay.

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). Variable stores the pulse duration measured by the

BASIC Stamp.

The IR pulses are negative pulses. To measure them with the IR detector circuit, you will have to use the command: PULSIN pin#, 0, variableName pin# is the pin connected to the IR detector; pin 9 in the previous slide.

Page 13: IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by Andy Lindsay.

Using PULSINtime VAR Wordcounter VAR WordDO

PULSIN 9, 1, timeIF (time > 1000) THEN

counter = counter + 1

Page 14: IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by Andy Lindsay.

Storing Pulse Width: Arrays

This array declaration creates twelve different word variables, each of which can store its own value: time(0), time(1), time(2), and so on, up through time(11).

Each of the elements in the time array can store a different value between 0 and 65535.

Page 15: IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by Andy Lindsay.

Reading IR Messages

time VAR Word(12) ' SONY TV remote variables.index VAR NibDEBUG "time ARRAY PWM MEASUREMENTS", CR, "Element Duration, 2-us", CR, "------- ----------"DO ' Beginning of main loop. DO ' Wait for rest between messages. PULSIN 9, 1, 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, 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) NEXTLOOP ' Repeat main loop.

Page 16: IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by Andy Lindsay.

Interpreting the IR Message The Idea: represent the pulse sequence as a bit

sequence. The IR message consists of thirteen pulses with

the following format: 1: the start pulse lasts for 2.4 ms. 2-13: will either last for 1.2 ms (binary-1) or 0.6

ms (binary-0). Map the duration of pulses 2-8 to their

corresponding binary value Use PULSIN and RCTIME to measure the

pulse duration Use the .BIT modifier to create the

corresponding binary representation

Page 17: IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by Andy Lindsay.

How It Works

RCTIME is used because the IF…THEN statement does not finish until after the next data pulse has already begun.

Since the start of the pulse (its negative edge) is missed while the IF…THEN statement is executing, PULSIN cannot properly detect the beginning of the pulse.

remoteCode VAR ByteremoteCode = 0

Page 18: IR Communication Materials taken from a variety of sources including IR Remote for the Boe-Bot by Andy Lindsay.

Code Sample

time VAR Word remoteCode VAR ByteremoteCode = 0DO

RCTIME 9, 1, timeLOOP UNTIL time > 1000PULSIN 9, 0, time IF time > 500 THEN remoteCode.BIT0 = 1RCTIME 9, 0, time IF time > 300 THEN remoteCode.BIT1 = 1 RCTIME 9, 0, time IF time > 300 THEN remoteCode.BIT2 = 1

…RCTIME 9, 0, time IF time > 300 THEN remoteCode.BIT5 = 1RCTIME 9, 0, time IF time > 300 THEN remoteCode.BIT6 = 1DEBUG CRSRXY, 4, 3, BIN8 remoteCode,

CRSRXY, 14, 3, DEC2 remoteCode