How to Build 433 MHZ RC to Control Servos (100% Arduino)




Introduction: How to Build 433 MHZ RC to Control Servos (100% Arduino)

Hi guys!

There is my workaround to bypass timer issue (servo and virtual wire librairies).

Because of the timer issue I had, I decided to bypass it by adding a third arduino.

There is the way it works:

- The transmitter checks inputs and send a number.

Example: send "1" if pin 1 is HIGH and send "11" if pin 1 is LOW. Send "2" if pin 2 is HIGH and "22" if pin 2 is LOW

- The receiver reads the received code and sets equivalent pin to HIGH or LOW depending the code.

Example: receiving "1", so put pin 1 HIGH. Receiving "11", put pin 1 to LOW.

- The 3rd arduino sets servo's position depending the input pin.

Example: pin 1 is HIGH, move servo to the left. If pin 2 is HIGH, move servo to the right.

What do you need:

Transmitter's side:

1 arduino board (smaller is better, but after all, size doesn't matter !)

1 RF 433 MHz transmitter

1 2-axis joystick

Receiver's side:

2 arduino boards

1 RF 433 MHZ receiver

2 Servos

I hope it will help someone!

Contact me if you have questions!

Step 1: Construire Une Télécommande 433 MHZ RC Pour Controler Des Servos (100% Arduino)

Salut !

Voici mon travail pour contourner le problème de timer (des librairies servo et virtualwire). Pour éviter le problème, j'ai décidé d'ajouter un 3ème arduino.

Voici le principe de fonctionnement:

- La partie émetteur vérifie les entrées et envoi un chiffre correspondant.

Exemple: envoyer "1" lorsque l'entrée 1 est à un état "HAUT" sinon envoyer "11" ou envoyer "2" lorsque l'entrée 2 est à l'état "HAUT" sinon envoyer "22".

- La partie recepteur recoit le code et place la sortie dans l'état correspondant.

Exemple: le code "1" est reçu, mettre la sortie 1 à l'état "HAUT". Si le code "22" est reçu, mettre la sortie "2" à l'état "BAS".

- Le 3ème arduino commande les servos en fonction des entrées activées.

Exemple: Si l'entrée 1 est à l'état "HAUT", déplace le servo vers la gauche. Si l'entrée 2 est à "HAUT" déplace le servo vers la droite.

Ce que vous avez besoin:

Pour la partie emetteur:

- 1 arduino (le plus petit serait le mieux, mais la taille n'est pas importante...)

- 1 module emetteur RF 433 MHz

- 1 joystick 2 axes

Pour la partie recepteur:

- 2 arduinos

- 1 module recepteur RF 433 MHZ

- 2 servos

J'espère que ca va aider du monde!

N'hésitez pas à me contacter si vous avez des questions!

First Time Author Contest

Participated in the
First Time Author Contest

Be the First to Share


    • Big and Small Contest

      Big and Small Contest
    • Make It Bridge

      Make It Bridge
    • For the Home Contest

      For the Home Contest



    Question 4 years ago

    i would like to use ultra sonic sensor instead of joystick,please any one help me??

    so i want to control servo with respect to ultrasonic sensor values wirelessly using

    any radio frequency module >>;


    Question 4 years ago on Introduction

    Hey there, I was wondering if you are still offering support for this?


    5 years ago

    I would like to use Potentiometer instead of Joystick to control the servo by using 433MHz RF, how to make changes on the programs?


    6 years ago

    Thank you.


    6 years ago

    your schematic is not clear. tell where to upload which sketch?


    Reply 6 years ago

    Receptur is Translate Receiver RX

    Inteur is Translate Transmiter TX

    Servo Connected with Receiver

    u Can Use Any Arduino Micro Controller


    6 years ago

    servotimer2 is a library to overcome this.

    meanwhile I have another problem due to servo noise interference.

    I can activate the servos but then I cant recive anything. when I disconect the servos the reception is fine.


    7 years ago

    Why 2 arduinos on two receivers?


    Seth Stenzel
    Seth Stenzel

    Reply 7 years ago

    The reason he is using two Arduino's, is that the two libraries needed, Servo.h and the VirtualWire [VirtualWire.h] or RadioHead [RH_ASK.h] both try and use interrupts with timer 1 and have a conflict.

    Having two separate boards do this is handles down the cheapest, easiest, and fastest solution for someone getting into Arduino.

    Fixing this would require allot more work then most Arduino beginners and intermediates are comfortable or able to do.

    I spent hours trying to find a work around that worked with my application, and got no where. The easiest way to do it that I can see to not have to use two Arduino's, would be to not use the VIrtualWire.h Library at all. This would require you to code your own communication protocol between the transmitter and receiver for synchronizing, and sending information, although if you youtube searh a bit on the wireless module, you can find some folks who do that, and you could follow in their footsteps and modify things for your code.

    BUT, with how cheap you can get a clone, getting a nano or something for the other board, is cheap, easy, and for a beginner will save you allot of headache