Published on

Parsing signals from an RC receiver

Authors
  • avatar
    Name
    lalugue
    Twitter

I wanted to see for myself the signals emitted by an RC (remote control) receiver while controlled by an RC transmitter, so I used an Arduino to read them!

Remote control signals - A quick run-through

RC receivers generally emit square pulses in 20ms (50Hz) intervals (also known as periods). These pulses, also called PWM (Pulse Width Modulation) signals, vary in width. Wider signals mean that the pulses last longer in terms of time. Additionally, the ratio of a pulse width to its interval is called a duty cycle.

Components such as servo motors and electronic speed controllers read and interpret these signals for control.

Sparkfun and Oscar Liang's articles give more information and a good grasp on PWM:

Sparkfun - Pulse Width Modulation

Oscar Liang - PWM and PPM Difference and Conversion

Setup

The setup is mainly an RC receiver and an Arduino Uno connected together. The RC receiver's channel signal pins are connected to the Arduino Uno's external interrupt pins (D2 and D3). The Uno's 5V and GND pins are connected to the RC receiver to power it.

In this case, I used a DumboRC P6FG receiver with an X6 transmitter, though other brands of remote control receiver and transmitter pairs should work as well.

RC parser diagram
A rough diagram of the RC receiver and Arduino Uno's connections

One more note on powering up the RC receiver is that only one channel's power pins need to connected to power and ground.

Parts

  • DumboRC P6FG receiver
  • DumboRC X6 transmitter
  • Arduino Uno
  • Dupont jumper wires

Sketch

The main idea of the sketch is to measure the duration of pulses in Channels 1 and 2. The sketch leverages interrupts to more precisely measure pulse widths. When moving the throttle and steering of the transmitter, the pulse widths change, which in turn are displayed by the Arduino through the serial monitor 🖥

The repository of the base sketch is here: repository

The next build[s]?

By reading and leveraging what an RC receiver emits, the possibilities with remote control are endless! For what I'll make with these findings, stay tuned to my blog 🥂