SequenceDecoder - Study and send/receive wireless signals (both RF and IR)

Hello.
Just making this post to present this project I created called SequenceDecoder. It uses Arduino + Processing to read different types of signals from the Arduino, and displays a graphic representation, analyzing pattens and generating Arduino code automatically to handle those signals.

It helps understanding and using different wireless types of data transmission (using either infrared or radio signals). Using an Arduino and the right type or receiver/emitter , it's easy to analyse and reproduce signals coming from different types of remote controllers, such as TV's, multimedia centers, air conditioning, home domotics, garage door openers...

Along with SequenceDecoder, there is also an Arduino library called WirelessController to easily send and/or receive commands after they have been decoded.

And finally, Ardomote is a project build upon the WirelessController library, that easily creates an universal remote controller using an Arduino Ethernet.

Motivation for using this project:
There are other libraries out there that already allow an Arduino to send or receive commands from remote controllers. So what it the advantage of using SequenceDecoder + WirelessController?

  • Supports both infrared and radio controllers. All of the libraries I found online are aimed only infrared controllers. This is the most common in audio and video equipament. However, when the devices are too far away from the controllers, or aren't in line of sight, radio is the only option. Devices like domotic controllers, thermostats, garage door openers typically use radio.

  • Adapts to new unknown protocols. The usual approach when creating these types of libraries has been creating the basic library and then creating some sort of database with the most common protocols (usually focusing on multimedia devices). This might be more efficient, but less flexible. When encountering a device not on the list, either you need to find out the protocol yourself and change the library to support it, or it won't work. Also since these libraries focus on multimedia devices, if you want to use something other than a TV or a specific media player, it won't probably be supported.

  • Easily learn and study the protocols. This was actually my first motivation. When you use a library that already supports your device, that's great. You can just say "Ok I have a Sony TV and I want to control it" and it will probably work. But if you're not sure of your device type, or even if you do but for some reason it doesn't seem to work, then you are completely in the dark. You have no idea if what you are transmitting or receiving is anywhere near what it was supposed to be. SequenceDecoder can help here... It shows you a visual representation of the signals and automatically analyses the information. You can easily compare the signals sent by your original remote control with the ones sent by your Arduino (assuming you have a second arduino to install SequenceReader).
    Easily create your own protocol. Let's say you have a project where for some reason you need to send 7 bytes of information using infrared, or another where you need to send 15 bytes on information using radio... With WirelessController, you just need to edit 6 lines of code to create a custom protocol and start sending and receiving messages.

  • Non-blocking readings. This is not an unique feature to WirelessController, but it does not appear in all the other libraries I found. Non-blocking readings mean that when we are waiting for commands, the Arduino will not be stuck when readings commands. This is a great advantage, because it means we can use one Arduino to send and/or receive commands from different controllers at the same, or have it doing some other tasks while waiting for a command.

I'm certainly interested! 8)

Way cool...

  • Ray

Definitely agree this is cool. Have a project for it already - replacing a garage door receiver. Am an arduino newbie (christmas present!) and just gave it a go..... sadly I can't compile the code for some reason.... I have the libraries installed, using 1.0.2 of the software, but I keep getting "SequenceDecoder:24: error: expected ',' or '...' before 'sequence'" (followed by more errors) when trying to compile SequenceDecoder.pde. I deeply suspect, given my newbiness, that I have missed something obvious. Will keep playing - so thanks for putting in the effort for documenting this so well! Cheers.

really cool and usefull project and it's well documented, too

yes i agree, this is the best library i have tried so far, even though the amazing decoder software couldnt recognise my signal pattern as it is non standard it let me see it, as you would in audacity via your sound card.

then it was fairly easy to use the library to reconstruct the wave form in arduino code that i needed to recognise.

the author was also of great help when i contacted him via his site email.

there's also an easy circuit you can make here Sniff and retransmit RF-signal - #6 by martin_bg - Interfacing - Arduino Forum & Interface with Remote Power Sockets – Final Version « RAYSHOBBY.NET with your soundcard to see your wave forms which is handy if you only have one arduino, as you can transmit with your arduino and capture it and compare it with your soundcard.

i want to add some more detail to what you could call "advanced" documentation of his WirelessController class and 'method' for specifying a button code in my next post.