Sparkfun: IR Receiver Breakout Board

Revision as of 14:46, 27 September 2012 by Millerap (talk | contribs) (Reading Using Interrupts and GPIO)
Jump to: navigation, search

Background Information

Model: TSOP85338

Sample Rate: 38kHz

VDD: 2.5V-5.5V

Sending a Signal

The TSOP85338 operates with a carrier frequency of 38kHz. That is, when the IR sensor is receiving an IR signal that is being modulated at 38kHz it outputs a logic 0. Using the BeagleBone to send a message to the TSOP85338 can be done using one of its PWM outputs. To perform testing of these attributes, ehrpwm1:0 can be used. By setting the duty_freq to 38000 and duty_percent to 50, it is possible to toggle an IR LED which if received by the sensor will output a logic 0. If the TSOP85338 is not receiving this modulated IR signal, it outputs a logic 1.

Reading Using Interrupts and GPIO

Receiving a signal from the TSOP85338 can be done on the BeagleBone using its gpio pins. In order to do this, the bitrate must be known initially or measured somehow. Once the bitrate is known, you can write a program that waits until an interrupt is received on a particular gpio pin that triggers on "both" edges. Essentially this will wait for the output of the TSOP85338 to change states. After it triggers, you can read the data received at intervals that match the bitrate until the message is received. This can be done for a set number of bits or until a terminating sequence occurs (user defined). Ex) if transmitting 8-bit char values, you can wait for a \0 ascii character to know that the message has been received.

If working in C, poll.h has some nice tools that can be used to create your interrupts.

Testing and Results

Reading Using PRU


DataSheet & Schematic: TSOP85338 Page on

Consumer IR: Wikipedia page on CIR