Move the World Using the Headphone Jack on Your Smartphone and the EMGRobotics Two Channel Smartphone/Tablet Servo Controller

The EMGRobotics 2 Channel Smartphone/Tablet Servo Controller (A2SCB_M/S) connects your Android/iOS smartphone or tablet to multiple RC servos using the headphone jack. A DSP algorithm running in the servo controller decodes the audio tones generated by the smartphone/tablet and translates the tones into servo control signals.


Any device that can generate audio tones between 1khz and 10khz or playback WAV files sampled at 44100hz can be used to control the servo controller, including laptops, PC’s, and embedded systems.  Examples (including source code) of how to generate the sound sequences required to communicate with the servo controller can be found at

The easiest path to start turning servos is to download the free EMGRobotics Servo Controller Android application from the Google Play store (just search for EMGRobotics). The EMGRobotics Servo Controller application gives you direct control of up to four servos from your Android device. Using sliders, each servo can be set to a specific position in real-time. The positions can be recorded and played back at different rates. The recorded servo position sequences can be saved to a file, edited, and even exported for use in a RFO BASIC program. The EMGRobotics Servo Controller for Android is the perfect application for animatronics. Record your sequences, edit them, save them, and play them back all directly on your Android smartphone or tablet.

The easiest  way to start turning servos programmatically is to use RFO BASIC for Android ( You can download a custom version of RFO BASIC at The custom version of RFO BASIC adds a SERVO command.


EMGRobotics custom version of RFO BASIC - servo command

servo channel, repeat, servo1, <servo2>, <servo3>, <servo4>, <servo5>, <servo6>, <servo7>, <servo8>


Where: channel - 0=both, 1=left, 2=right

            repeat = # of times to repeat the command. Normally set to 5.

            servox = Value between 0 and 180 representing servo position.     



Move 16 servos to position 0

servo 1,5,0,0,0,0,0,0,0,0

servo 2,5,0,0,0,0,0,0,0,0


Move 2 servos; servo1 to center, servo2 to position 180

servo 0,5,90,180


Almost any programming language that can generate audio tones in the range of 1Khz to 10Khz or playback WAV files sampled at 44100hz can be used to communicate with the EMGRobotics 2 Channel Smartphone/Tablet Servo Controller. You can find Android source code at A PC running Python, .NET, even javascript (using wav files) can be used to communicate with the servo controller. The audio protocol is simple and very tolerant of timing. Simply send a 8500hz tone for 1ms or more, followed by a 3000hz to 5000hz tone (servo1 position) for 2ms or more, followed by a 9500hz tone for 1ms or more, and finally another 3000hz to 5000hz tone (servo2 position) for more than 2ms. To control additional servos, add additional 9500hz/(3000hz-5000hz) tones, up to 8.


Each controller controls two RC servos; controllers can be daisy chained to control up to eight servos total. The master controllers (Part# A2SCB_ML/R) plugs into your smartphone or tablet using a 3.5mm headphone jack. The master controller controls two servos directly.


Up to eight servos can be controlled by each master by daisy chaining slave controllers (Part# A2SCB_S). Each slave controller controls two servos directly. Slave controllers are daisy chained using three wires (battery+, GND, and audio). Slave controllers can be connected to separate power supplies and be up to six feet from the master (if shielded audio cable is used).



A master controller only uses one audio channel. Smartphones and tablets that support stereo headphones (almost all of them do) can drive two master controllers, one connected to the left channel (Part# A2SCB_ML) and the other connected to the right channel (Part# A2SCB_MR). Using this configuration up to 16 servos can be controlled.


Both master and slave servo controllers support two jumper selectable modes: absolute and relative. In absolute mode, the servo position is proportional to the audio input frequency. Absolute mode would commonly be used for RC cars, walking robots, and robot arms.


In relative mode, the motion of the servo is controlled as opposed to its position. Relative mode was specifically designed for pan/tilt operation and continuous turn servos.      


The expandable nature of the servo controller make it easy to start small and work your way up. If you are building a RC truck based robot, a differential robot, or pan and tilt device, just order one master controller (Part# A2SCB_ML). If you are building a four servo walker, save money by ordering the 4 servo package. The 4 servo package includes one master (Part# A2SCB_ML) and one slave(Part# A2SCB_S). Finally, if you are controlling a robot arm or a humanoid, check out the 8 and 16 Servo packages. With these packages you save even more money.


All boards ship fully assembled - No soldering required

Views: 2299

Comment by eric gregori on June 8, 2013 at 11:31pm


You need to be a member of buildsmartrobots to add comments!


© 2015   Created by eric gregori.   Powered by

Badges  |  Report an Issue  |  Terms of Service