RC Plane Transmitter Receiver Arduino Part 1 of 2

Flying an RC plane is awesome and building one is fun. Let us build a long range 4 channel RC Plane Transmitter Receiver Arduino. This not only works for RC plane, you can use it on any robots including rovers, tanks, RC boats or other stationary robots. Yes, you heard that right. A cheap DIY RC Plane Transmitter Receiver using Arduino with a range of 1.8 KM using Arduino Nano, joystick and HC12. Not just for plane, with a little bit of tweak in the code, you can control RC car, Boats, helicopters, quadcopters etc.

I will be doing this tutorial in two parts. In this part, I will explain various components used in the circuit and explain how to do basic configurations and testing of the components. In the next part, I will show you how I assembled all the components mentioned above and explain the working of the transmitter, the receiver and their circuits.

What we are Looking At

You like this video, click the subscribe below to subscribe my youtube channel for future updates.

Components Required

Arduino Nano

The Arduino Nano is tiny micro controller board powered by Atmega 328 chip. It can be connected to the PC using a mini USB cable and can be programmed by Arduino IDE. Due to its small size and light weight, I will be using this for our RC Plane Transmitter Receiver.

This board can be powered using the Mini USB port. Through pin 30, we can supply an unregulated voltage source of 6 to 20V or through pin 27, we can provide a regulated power source of 5V. The power selection will be automatically done by the Nano board.

Common Useful Pins

Serial Communication – 0 (RXr) and 1 (TXr)

Pulse Width Modulated Output using analogWrite() function –  3, 5, 6, 9, 10, and 11

SPI – 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK)

LED pin – 13


HC 12 is a wireless serial communication module, which is capable of making a wireless long range (upto 1.8 KM) connection between multiple devices. Its working frequency is in between 433.4 MHz to 473.0 MHz with 100 channels with a stepping of 400KHz – Starting from 433.4, 433.8, 434.12 …………473.0

It have a transmitting power of  -1 dBm to 20 dBm and receiving power of  -117 dBm to -100 dBm. The communication distance can be upto 1.8 KM (with special antenna).Depending up on the modes of operation, this distance changes.


Modes of Operation

This module has four modes of operations – FU1, FU2, FU3, and FU4. For configuring the modules, we can use AT commands. You can use Arduino, a PC or any other micro controller to configure the HC 12 board.

Inorder to configure the module, we have set the SET pin to logic 0.  You can find all the information for configuring the module from the user manual. Click below links to download user manual.

We will cover more in detail in the following steps.


This is one of the most commonly used analog joystick module which designed to work with arduino. It have two analog potentiometers – one detect the vertical motion of the joystick and other detects the horizontal movement of joystick.

This is really cheap and can be easily be used with various projects like RC car, video game joystick and in our case – RC aeroplane.

You can download sample sketch for testing the working of joystick from the below link.


Before uploading the main code, make sure your joystick works by using this code. Download the code from the above link. In this example, what we are doing is simply collecting the data analog outputs from the Joystick using the analog pins (A0, A1,A2) of arduino. These values are stored in the cariables and are later printed on the serial monitor.

Brushless Motor

A conventional D.C motors cannot be used for operations that  require, very high speed, long term working and stability, because, they have so many mechanical parts that constantly moves and in time, it will wear off. Brushless DC motors are high speed motors that uses minimal mechanical parts and more electronics to provide a stable movement. In these motors, we place the magnets on the rotor and the electromagnets are moved to the stator. Then small circuits are used to power up the electromagnets which in turn rotate the shafts.

In this post, I explained everything about the Brushless motor and configuring ESC to work with Brushless motor. If you are new to this, I strongly suggest you to go through this post.

Why Brushless motor?

The position, speed and direction are all controlled by the controlling circuit, which makes it more precise and efficient than conventional DC motors. Since there is not making and breaking of connection between the moving parts, there is no generation of spark and very less noise. These motors generates very less heat than the conventional DC motors due to the fact that the electromagnets are kept inside the stator. The precision of control can be increased by simply adding more electromagnets to the stator.

ESC (Electronic Speed Control)

An ESC is simply an electric circuit which controls the speed and direction of the brushless motor. In some situations, they can also acts as dynamic brakes. They convert our DC power supply to three phase AC power and fed to the motor, energizing the electromagnets that are kept inside the stator of the motor. The position of the motor is sensed by the ESC (usually by Back EMF feedback systems) and are used to set the correct phase of the AC power supplied to the motor.

There are various types of ESCs available. The one we will be using here is a common ESC, in which we can set the maximum and minimum speed of the motor in the beginning.  We convert the voltage variations from the joystick to Pulse Width of PWM signals. This PWM signal is sent to the ESC which will adjust the speed of the motor with respect to the pulse width.

Inorder to change the direction of rotation, all you have to do is switch any 2 of the 3 leads of the motor to the ESC.

Configuring the ESC using Arduino

The Configuration of the ESC is different for different units. In this post, I showed you how to configure and test a brushless motor and ESC. During the configuration, you will hear so many beep sounds.

In order to simplify this, I have created a simple code that will calibrate the ESC when we power up the receiver. You can download the code by clicking the button below.


Bread Board

While trying our RC Plane Transmitter Receiver Arduino for the first time, there is a greater chance of making mistakes. So it always better to use a bread board. All the components using in this tutorial are breadboard friendly; including the micro controller.

Building and troubleshooting electronics circuits in bread board is much easier as it does not require soldering. Once the final design is tested, we can create the PCB and solder it permanently.

You like this video, click the subscribe below to subscribe my youtube channel for future updates.

In the next post, I will show you how I assembled all the components mentioned above and explain the working of the transmitter, the receiver, their circuits etc.

RC Plane Transmitter Receiver Arduino Part 2 of 2

Click the link above to proceed to next part.

Rate the Project

Did you find this page useful? Help us to improve by rating this page.


RC Plane Transmitter Receiver Arduino Part 1 of 2
4.4 rating based on 12,345 ratings
Overall rating: 4.4 out of 5 based on 253 reviews.

Written by Jithin


Leave a Reply
  1. Hi man. Great tutorial. I wanted to know how much range u got with the hc-12

    • Thanks Michael
      Range of the HC12 Wireless module depends up on the type of the antenna you are using with it. If you are using the antenna with maximum power, you could get 1.8 KM range (Ideal Conditions).

        • It also depends on the mode. FU1 and 2 are essentially power saving modes(2 saves more power than 1) with less range and speed, you don’t want to use those.
          F3 has the lowest latency, only 5-20 seconds and Still an optimum range of 1km if a baud rate of 5000 is used.
          F4 got a latncy of 1000ms(thats a whole second) and in that mode you can reach 1.8 Kilometer range in optimal conditions.
          But good luck flying a plane with one second delay.
          I’d use Fu3 and with that one you can get a 1000m range maximum.

          • 5-20ms in Fu3 of course, not whole seconds, oops.

  2. which of type Brushless motor? its 2700v?

    • papp,
      That depends up on the weight and size of the plane.

  3. Sir can you plz tell how to use this type of transmitter and receiver in my rc boat…. What changes I have to make for using dc motors….

    • The use of AC (brushless) or DC (brushed) motors is kind of independent of the above TX/RX design. Meaning, as long as you are using the correct ESC for your motor, you should be able to hook it up just as listed above. Ultimately, servo/esc/switch etc is whatever you want it to be. just make sure you have your ESC hooked up to the channel he has displayed as the ESC will provide power to the board via the built in BEC.

  4. hi, I went through the tutorials it was great. one question from me is did you do a test run like flying it. if you don’t mind can you share me the final picture of the plane.

  5. Can you give me the wiring diagram of these transmitter and receiver

  6. Hey this is using HC 12 module.. but can we use NRF905 module? and the code for the same?

  7. Bu vericinin ve alıcının bağlantı şemasını verir misiniz

  8. Will it work perfectly?

  9. Which pins should I use to connect the hc-12 module to the arduino in the transmitter and reciever part?

  10. please give me full code( tx & rx)
    input joystick 1 & 2 or more
    input button 1 more

    rx or output


2 Pings & Trackbacks

  1. Pingback:

  2. Pingback:

Leave a Reply

Your email address will not be published. Required fields are marked *

IP Address Types – Working of IP

RC Plane Transmitter Receiver Arduino Part 2 of 2