Official website

Thursday, June 26, 2014

Arduino radio remote control [ RF 433MHz/315MHz ]

In this post we will develop an Arduino remote control that will receive and transmit at 433MHz/315MHz. This will allow us to control devices that operates in that frequencies such as plug socket receivers.

What we need:
So, let's get started!

After wiring modules to arduino, download and install rc-switch lib. To do so navigate to Sketch/Import Library/Add Library

After installation is complete it will appear in library list.

Upload the sketch using codebender
Alternatively download the sketch and upload it to arduino.

Open serial monitor and press a button of the remote control. You should receive a binary code.

Of course Jubito and jaNET Framework provide the capability to listen the serial port via judo API.

Syntax: judo serial listen <ms>
milliseconds are optional. By default it is set to listen for 10 seconds (10000ms).

If you successfully complete the above steps, then, scan all the buttons of the remote control and write down the corresponding readings. At this time you are ready to create your virtual remote and accomplish transmissions from Jubito.

First make sure you have properly configured arduino's serial port and then enable it.

From Instruction Sets menu press Add New Launcher. Enter a name (handler) and type the following command...

judo serial send 000111101100000001100001

the binary code is the corresponding key press. For example the button A of the remote control that turns on the plug. To test if the 'plug-A-on' launcher is working, go to terminal tab and type...


this command should power up the plug!

Dashboard Interface
When you create launchers for all buttons you are ready to create the virtual remote control. Again from Instruction Sets menu press Add New Instruction Set and fill the mandatory fields (name, action, category, header) and some optional if you desire, e.g. Thumbnail URL.

Notice that in action field we add an asterisk in the beginning. It is used to point the plug-A-on launcher. You can write some additional text also if you like, for example...

*plug-A-on Socket A is on

which will cause a response 'Socket A is on' to the button press instead of the 'Operation Completed' system message. After that the new instruction set is accessible from the dashboard.

Now you are able to clone any remote control at 433/315MHz.


  1. Are you able to use this with the phone app Utter? Could you upload the command list to a Web server and then access the command list though Utter?

  2. Jubito is the web server. The phone app is a client that connects to it. It also provide some extra functionality like speech recognition, speech synthesis and geo-location based auto check-in.
    You can do anything from the web UI from a web browser, android client app, tablet or any device can view html.

  3. another example with Arduino, Raspberry, Gertboard and the same RF transmitters

  4. Firstly great tutorial! I have got the server running and am able to turn the light on and off via the web gui and my android phone but there is a significant delay if I try to turn the light back on immediately. In the youtube demo it seems instant so was wondering how I could achieve this? I am currently using a nano if that makes any difference. Thanks for any help

  5. Thank you Paul!
    It should be instant even over the internet. I'm using a dynamic dns with no delays. I'm not sure what is going wrong. You can send me your sketch and your AppConfig.xml via email to test it.


Note: Only a member of this blog may post a comment.