My friend and I are trying to design a remote controlled car and one of the aims is for the controller to be a smartphone. The original idea was, have a transmitter plugged into the audio headphone jack which would interpret audio signals sent from a controller app and then send an appropriate signal.

My problem is I don't know what sort of signal is appropriate. All that needs to be controlled is forwards/backwards motion and turning left or right. Ideally it would be able to have speed control - not just forwards and backwards.

My initial idea was using something like this for radio transmission: https://www.sparkfun.com/products/10534, but then it would mean doing analog -> digital and sending digital data with some kind of protocol, so then I thought of sending just the analog data but I'm not sure how that would separate the forward/backward and right/left controls.

I am a beginner in this field and would like some direction - what approach do I take that will allow me to keep the cost low (e.g. no bluetooth modules)?


1 Answer 1


The "standard" RC protocol is to transmit bursts of AM pulses[1], the relative positions of which are translated by the receiver into variable-width control pulses that get sent to the servos. It should be fairly straightforward for the smartphone app to send pulses out the headphone jack, which are then used to key a simple RF transmitter on a standard RC control frequency. Then, in the car, you'd use an off-the-shelf RC receiver and servos to control the car.

A standard RC servo requires a control pulse that has a variable width of 1-2 ms (sometimes this is extended to 0.5-2.5 ms) and repeats at a 20-50 Hz rate. A basic RC car might have as few as two servos, while a complex plane might have six or more, each of which needs its independently-controlled pulse.

Rather than sending variable-width pulses over the air, which would be subject to noise and distortion of various types, the transmitter instead sends a series of fixed-width pulses (on the order of 0.5 ms or so), and it's the spacing among these RF pulses that becomes the width of the servo control pulse at the output of the receiver.

For example, a six-channel transmitter will send 7 pulses at a time. The time between the rising edge of the first pulse and the rising edge of the second pulse is turned by the receiver into the control pulse for servo #1. Similarly, the time from the second RF pulse to the third RF pulse becomes the control pulse for servo #2, and so on. After the seventh RF pulse, there's a relatively long gap (10 ms or more), which signals the receiver to reset its decoder back to servo #1.

[1]: I might be wrong about the modulation. Certainly, the earliest systems used AM, but indications are that modern systems are FM.

  • \$\begingroup\$ I know shopping recommendations are off-topic but could you give me an example of an RF transmitter? \$\endgroup\$
    – Ell
    Commented Sep 1, 2012 at 15:04
  • \$\begingroup\$ What you describe is the basic setup, but you'll need some extra stuff to control servos (plural). A simple microcontroller can extract the pulses for each servo from the received signal and send each to the servos in question. \$\endgroup\$
    – stevenvh
    Commented Sep 1, 2012 at 15:43
  • \$\begingroup\$ @Ell: I don't have any specific recommendations, but it looks like if you Google "rc transmitter module", you get a pretty good selection of modules and compatible receivers. \$\endgroup\$
    – Dave Tweed
    Commented Sep 1, 2012 at 16:35
  • \$\begingroup\$ @stevenvh: That's exactly what "an off-the-shelf RC receiver" does. \$\endgroup\$
    – Dave Tweed
    Commented Sep 1, 2012 at 16:36
  • 1
    \$\begingroup\$ @Dave - Can you add info on that protocol to your answer? I only know about the pulse pattern for a servo (1 to 2 ms pulse width, 20 to 50 Hz). \$\endgroup\$
    – stevenvh
    Commented Sep 1, 2012 at 16:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.