decoded IR signal doesnt follow any known protocol

im trying to decode an infrared signal from a room locator, the locator send an infrared signal to a receiver the receiver decode the signal and tell if its room 1 or 2 or 3 ..etc

so i want to decode the IR signal instead of that receiver , the room locater can be programmed from room 001 to room 777 .

i used this script to get my data and used gnuplot to plot them .

the plot below show the signals for rooms 1,2,3,4,5,6,7 and room 10

i just wanna make sense of these signals , i dont want to retransmit the signals , just identify them and print if the signal came from room 1 or 2 ..etc

it doesnt follow any known protocol like sont, NEC , JVC ... etc , can somebody make sense of these signals. what can i do to recognise them if they dont follow a known protocol !


The code for our Gadget Shield shows how to decode and learn arbitrary IR protocols, then print out which code was pressed at a later time:

The Rugged Motor Driver: two H-bridges, more power than an L298, fully protected

thanks for the reply, i really appreciated .

im using Aurduino uno whis is not listed in the code, what do i need to add that .


i see many codes , im confused how to add them to the arduino ? should i make multiple files and upload them all at once ? please explain , or let me know if there is a tutorial out there ......


The code will work on an Uno without modification as the Uno is really the same as the Duemilanove in the microcontroller, pin assignments etc.

The code should just run as-is. You will have to connect your IR detector to digital pin 2 (D2), or else modify the definition of IRLOGIC_PIN at line 128.

The code shows the basic principle of IR decoding, but as for adding the code to your own custom code....that is something that requires some effort, trial, and error :slight_smile:

The Quick Shield: breakout all 28 pins to quick-connect terminals

im not sure , how this should work ...

the ir sensor connected to pin 2 , i uploaded the code as-is , the hyperterminal shows :

Begin by pressing '0' to prepare the EEPROM to store encodings
Press a key:
0: Erase/initialize EEPROM
1: Learn a new encoding
2: Test last
learned encoding
3: Save last learned encoding to EEPROM
M: Output stored enco
V: Verify stored encodings in EEPROM
F: Print free EEPROM space
H: Prin

is there extra hardware need to be attached . it says press a key !?

Oh ok , this code for your shield ,,,, i see .

i want to use just the IR sensor for decoding, i already have my own hardware, decoding the IR is an extra feature for my device, i cant use or add another hardware.

No, you don't need our hardware, you can use your own. Just connect your IR logic detector to pin 2 (and don't forget to supply power and ground to it too).

Then, press the '0' key in the GUI Serial Monitor (and ENTER) to initialize the EEPROM. This is where the IR sequences are stored after they are learned.

Then, press the '1' key (and ENTER) to learn an encoding. Point the remote control at your IR logic detector and press a key.

Then, press the '2' key (and ENTER) to test it: point the remote at the IR detector and press the same key again several times. The software should show you that it recognized your key press.

You can then continue to learn more codes.

The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, light sensor, potentiometers, pushbuttons

oh i see,

it actually works fine for regular remote control . i tested it with a stereo tv remote control .

how ever in my case, the room locater send the signal continuously every 30 seconds or so. so its hard to store the learn the signal and test it .
i keep getting mismatch key pressed, i think because the signal keep going, i cant control the time like pressing a key on a remote control .

are there easier way to do this .

like having an algorithm that calculates the on off periods and generate a unique code for that signal .

It is possible that the signal is too long (has too many bit periods). You can try increasing the value of MAX_EDGES at line 39 to a bigger number (try 256?). Though looking at the graphs in your initial post I'm guessing this isn't the problem.

You could try increasing CODEBOOK_MAX_CODES (line 52) or increasing CODEBOOK_CLUSTER_TOLERANCE (line 59) to see if that makes a difference.

The Rugged Motor Driver: two H-bridges, more power than an L298, fully protected