Sei sulla pagina 1di 7

Infrared Protocol Decoder With Arduino

By hamlam in CircuitsArduino
1,151
4
DownloadFavorite
By hamlamFollow
More by the author:

About: A fellow tinkerer. More About hamlam »

Infrared communication is an easy way of wirelessly transmitting


signals. A normal set up consists of a receiver and an emitter. The
emitter works like a normal LED, only the light that it emits is not
visible to the naked eye (most cameras can detect it though). The
receiver then listens for any signals and converts the received signal
into a binary message consisting of HIGHs and LOWs (5v and GND).
The duration and time between bursts of signals dictate the protocol
used and the message sent. Whether for another project or just for
general curiosity, knowing which protocol your remote communicates
with is always helpful.

This project will use the infrared decoding, receiving, and sending
library IRLib2 which can be found here.

Read more about IR here.


Add TipAsk QuestionCommentDownload
Step 1: Build the Circuit
Since this is a simple circuit, start by building it. Looking at the circuit,
we notice it only has one component, the IR decoder. The IR decoder,
like many components, is simply a bunch of parts combined into one.
In the image above, you can see that the IR decoder has a
demodulator, which turns the messy square wave output into
complete 5V pulses. In the third image, you can see the wave signal
that the Arduino will receive.There are complex protocols and
identification procedures in place that turn simple pulses into actual
binary digits.

The IR decoder has 3 pins, one for GND, one for VCC and another
one for the signal output. Your Arduino microcontroller is responsible
for reading the signals coming from it. Therefore your code must also
reflect this and constantly scan for signals. Precision is of the
essence; if you miss one signal the entire message could be
misinterpreted or even not read at all. To ensure accuracy, use a
library that has been extensively tested in your code.

Note: I'm using a TSOP4838 IR decoder - depending on which one


you have the pin layout might be different. Always double check!

Obtain the datasheet for the component here.


Add TipAsk QuestionCommentDownload
Step 2: Software
After installing IRLib2 (open the ZIP file from GitHub, drag the 5
folders into the libraries folder of your Arduino root install), use the
dump example sketch (file>examples>IRLib2>dump) to test the
receiver.

You can obtain verbose output by providing the Decoder object


.dumpResults() function with a boolean true. This gives you
information about the duration of the pulses and the time between
them. The first line tells you the protocol used and its number,
followed by the value of the message which you can then access in
your code by using the Decoder object .value attribute.
In the code above, we create two objects of the IRLib2 library, a
decoder, and a receiver. The receiver object is solely responsible for
taking the voltage pulses from the receiver component and measuring
time details. Then the decoder interprets this data and assigns it a
value and a protocol based on the receiver data. The decode()
function gets the data from the receiver, after we know it's there since
the getResults() function has returned true, and does the rest for you.
Add TipAsk QuestionCommentDownload
Step 3: Test the Circuit

Now that everything is working, it's just a matter of using different


remotes, examining the protocols, the data and seeing if long presses
make any difference for the value (hint: RC5). Try all the buttons and
see how the value has to do with the previous value. You might get an
unsupported protocol but that's OK, just switch to another remote.

This part is a lot of fun so get clicking!


Add TipAsk QuestionCommentDownload
Step 4: Closing Thoughts
Infrared communication is extremely useful for simple data
transmission for a project. However, you must be aware of its
limitations:

- It can be easily blocked by any opaque object

- It does not have a very long range

- IR light is readily available in our atmosphere and can easily interfere


with your signals

Make sure that you are aware of these limitations when choosing IR
as your communication format.

In this tutorial, you learned how to use a TSOP4838 Infrared receiver


(or equivalent) to decode signals coming from an IR led in your
remote.

Please favorite and comment if this was useful!

Potrebbero piacerti anche