RC with your web browser – more intuitive and more agile

In previous blogs related to RC with a web browser I presented solutions which were suited for simple and none time critical applications due to the user interface and the system response time.

The initial concept of a button based user control was relatively slow because the web page had to be re-transmitted and rebuild on the client side after each user interaction.

The improved “joystick”-based interface was already deploying AJAX to improve the system agility. However, in order to initiate a command you would have to touch the screen and to stop the movement you would have to touch the screen at another location which is not very intuitive. You would probably expect a movement to last as long as you touch the screen.

The latest version of httpRC presented here does address both requirements based on a button based UI: a command is executed only as long as you touch it in a very agile way.

The source code for the ESP8266-01 is provided through github and the programming itself can be done via the programming adapter described earlier.

Additional information regarding the receiver kit you would find on the respective PiKoder page.

Control your Ardupilot Mega Rover with your Android Smartphone (III)


The Ardupilot Mega (APM) and other flight controllers are frequently controlled by a PPM stream rather than the parallel input per channel which I described in part 1 of this blog. The new PiKoder/PPM wRX receiver with its PPM frame output brings this capability to you. The connection between the receiver and the flight controller is reduced to a single 3 strand cable as shown in the featured image.

Setting the receiver up

The PiKoder/PPM wRX receiver will be controlled by the udpRC4UGV App as described in part 2 of this blog.

The feature set of the app has been extended to allow you to freely determine the position of the direction and throttle channel within the PPM frame through the app preferences.

To change the channel setting please select the respective preference and enter the channel number (1 .. 8). E.g. the APM Rover configuration features direction on channel 1 and throttle on channel 3.

Please note that setting the APM’s input mode from parallel to PPM requires a jumper between channel 2 and channel 3 input as shown below.

Control your Ardupilot Mega Rover with your Android Smartphone (II)


As already indicated in my previous blog Control your Ardupilot Mega Rover with your Android Smartphone I continued to implement more features resulting in the new udpRC4UGV Android(TM) app with a number of rover specific functions. The most important enhancements are the selection of the flight mode and the toggling of channel 7 making a number of APM special functions available.


As outlined in the previous blog a PiKoder/SSC wRX receiver replaces the standard RC receiver in the rover. The smartphone RC uses WLAN for command transmission: the PiKoder does offer an access point (AP) to which the smartphone will connect.

The udpRC4UGV app fashions various usage preferences: a simple button controlled interface, a virtual joystick, and an accelerometer based user interface.

Every user interface offers next to the generic control elements for RC the option for selecting the flight mode. Additionally, channel 7 can be triggered by hitting the CH7 button (thereby e.g. in LEARNING mode storing the current position as a way point for a mission).

The app is available free of charge in the Goggle Play Store. The user manual can be downloaded on the PiKoder webpage – it describes not only the program but also the hardware setup in more detail.

Control your Ardupilot Mega Rover with your Android Smartphone


In the standard setup of the Ardupilot Mega (APM) for Rovers you would deploy a conventional RC for manual control:  the RC receiver feeds the input channels of the APM with PWM signals for Rover movement and for executing special functions such as switching flight modes.

Replacing the RC receiver in this configuration by a PiKoder-Receiver such as the WLAN receiver PiKoder/SSC wRX gives you full control of the Ardupilot using your Android smartphone with the udpRC4UGV app which is available at the Play Store.

Setting up the Rover

Use the Mission Planer to configure your APM with the standard ROVER – configuration; the default settings worked for me perfectly.

The following image shows the straight forward hardware setup.

Connect the PiKoder – channel 1 with the APM input 1 (Steering) and PiKoder – channel 2 with the APM input 3 (Throttle). For the APM output the standard-rover-setup is used. (servo at channel 1, ESC with BEC at channel 3). In this configuration the Ardupilot provides the power for the receiver.

The Ardupilot does not process any PWM-signals outside of the standard range from approx. 1.000 – 2.000 µs. Therefore, you would have to adjust the PiKoder’s min. and max. lengths as shown in the following screen print using the PiKoder Control Center (PCC).

Please refer for more information about connecting and programming your PiKoder to the User’s Manual for the PiKoder/SSC wRX.

This completes the hardware setup. For a detailed description of the app’s user interface please refer to the respective user manual.

Radio control with your webbrowser – improved user interface

A few days ago I found the ESP8266 MikroE Buggy project.

This project implements a web server on the ESP8266 – similar to the setup described in my blog Radio control with your webbrowser. Using this concept, a browser based (and therefore operating system neutral) radio control could be easily made available. In this project, especially the HTML5 based user interface implementing a joystick caught my attention.

The software of this project is open source so that I could make the changes needed to use it in combination with the PiKoder/SSC wRX. Additionally, I adapted the code for controlling a ‘normal’ car or boat (one channel for speed, one channel for direction). The revised source code is provided through a github repository.

The steps for programming the ESP8266 ars described also in the Radio control with your webbrowser blog. Please note, that the ESP8266 MikroE Buggy project deploys the Arduino file system. For the installation and the usage please refer to this page.

Digital servo tester


This servo tester is designed around a PIC12F675 controller to provide for precise and reliable pulse generation (pulse length: 1 ms – 2 ms). The internal chip oscillator is specified for a 1% frequency tolerance.

Additionally, this servo tester supports voltages from 4.8 V to 6 V covering a broad range of different servos and allowing to use the BEC feature of speed regulators (please make sure to use either BEC or an external power supply to avoid a short). You can configure the polarity of the servo control pulse with a respective jumper.

Finally, this servo tester allows you to use standard servos for a wide range of additional applications such as e.g. controlling pan and tilt cameras.


The PIC12F675 controller firmware is controlling the pulse generation and the user interface of the servo tester. The supply voltage of the controller (3.3 V) is generated by a low drop voltage regulator; running the controller at this voltage guarantees the internal oscillator’s precision and allows you to apply the various supply voltages to the tester.

However, this design requires a driver (transistor Q1) in order to adjust the voltage level from the controller’s output pin to the servo’s input. The power itself is directly feed into the servo.

The polarity of the servo control pulse is determined by jumper JP3. Please note that the LED is a bi-color type.

User interface

Using the servo tester is simple and intuitive. The servo tester features two operating modes: Manual-mode, which allows you to control the servo by turning P1 and to move the servo into the neutral position and Exercise-mode, which will make the servo tester move back and forth automatically. You can switch the mode by pushing S1. The build-in LED would indicate which mode the tester is in.

If you turn on the device the tester would be in Manual-mode by default and you can determine the pulse length by turning the pot P1. As long as the pulse length would be shorter than 1.45 ms or longer than 1.55 ms the LED will lit green. In order to easily find the neutral position, the LED color will change to "yellow" meaning that both colors will be visible when you enter the window from 1.45 ms to 1.55 ms. Once the pot is moved to the neutral position of 1.5 ms the LED color will turn to red. This design allows for hands-free neutral position allowing you to easily perform mechanical adjustments and such.

In Exercise-mode you would have two different speeds available. The LED will always blink red and the blinking frequency indicates speed selected: 0,25 s for a cycle from one end to the other is represented by 2 x blinks/s and 15 s for a cycle which would be coded by 2 s on, then 2 s off). You can select the speed by turning the pot P1: if a position in the left half would be selected then then the higher frequency would be selected and a position on the right half of the scale would translate into the lower speed operation.

Software Download

The current servo tester software (release 1.0) can be downloaded below. This firmware is provided as freeware, but only for private, non-commercial use. Please refer to the End User License Agreement (EULA) included in the download for more information.

Servotester kit and components

In the Store you will find a complete kit, the pcb only and a controller programmed with the latest firmware.

Wifi based RC with Arduino

The Arduino based open source digital radio control arduinodtx is build around transparent serial communication. Therefore, a wifi communication module such as an ESP8266-01 can be used in concert with a PiKoder/SSC wRX wifi based receiver to easily build a feature rich radio control.

In addition to the components for the basic setup of the arduinodtx you would need a logic level converter, a dc-dc converter, two jumpers as UART multiplexer and the wifi module as shown in the image above. The wiring of these building blocks is shown below (you would have connect all signals with identical names):


The setup is fairly simple and can be easily done on a prototype board. Please note that Arduino signals are shown in blue.

Then you would have to configure the transmitter’s wifi radio to establish a transparent link to your receiver radio – similar to binding a transmitter and receiver in a standard rc environment. This would be done by setting the jumpers as shown above to connect the radio directly to your computer. To avoid any interference from the Arduino it is necessary to upload the “DoNothing”-sketch to your Arduino:

void setup() {
// do nothing…

void loop() {
// do nothing…

The ESP8266 will be programmed using the standard AT command interface. This requires either your Arduino IDE’s Serial monitor or another terminal application running on your PC. The following description is based on the open source program Tera Term which can be downloaded for free.

You would start by setting up the serial port according to the default parameters of the ESP8266. Select „Setup“, then „Serial port…“ and you would see the following screen:


Select the serial port connected to your Arduino and select the “Baud rate” 115200. Then you would have to adjust the terminal setting by selecting „Setup“ followed by „Terminal…“:


Match the configuration shown above. Now communication can be established. Please initiate a reset and you will see a cryptic message indicating a complete reset:


The first step is changing the baud rate to 9600 baud. Please type the command „AT+UART=9600,8,1,0,0“. After hitting “Enter” the ESP would acknowledge command execution with OK:


Since the Baud rate for the port was changed you would have to make the respective change also in your terminal program by going from 115200 to 9600 Baud (see above).

Now you can start to program the radio’s wifi parameter. Since the receiver is offering an access point (ap) you would have to run the transmitter in station mode to log into the receiver’s ap. You would enter “AT+CWMODE=1” to get the right setting.


The next step requires you to enter the network parameters of the ap. The correct command would be “AT+CWJAP=”SSID”+”PASSWORD”” with SSID representing your receiver’s SSID and the respective (optional) PASSWORD. Please note that you have to turn on your PiKoder/SSC wRX receiver to allow the controller to acquire an IP address and connect to the ap – otherwise you will receive error messages similar to the ones shown in the screen print:


The final step will save all parameters and set the transparent mode. Based on the default configuration of the PiKoder/SSC wRX you would enter: “AT+SAVETRANSLINK=1,”″,12001,”UDP”,12000″.


This completes the programming of the radio. After reconfiguring the jumpers of the UART multiplexer to the right position and resetting the Arduino your transmitter would be completed.

Arduino based XBee radio control

Combine the Arduino based open source digital radio control arduinodtx with an intelligent serial servo controller such as the PiKoder/SSC, an Arduino XBee shield and an XBee module to easily build a feature rich radio control.

The XBee communication link would be setup in transparent mode. Therefore, no changes are required in the Arduino sketch or the PiKoder/SSC firmware. The complete feature set of the radio control would be available.

The setup of the transmitter including the jumper configuration is shown below – for details regarding the wiring please refer to the arduinodtx webpage.


The configuration of the receiver comprised of an XBee breakout adapter, the PiKoder/SSC board and a dc-dc converter to generate the 3,3 Volt required by the receiver is shown below. For more details – including the programming of the XBee modules – please refer to the PiKoder/SSC Application Note #3: XBee Communication.


Receiver module prototype

Radio control with your webbrowser

If your rc model would offer an access point and run a webserver, then you could control your model with a webbrowser running on your smartphone – no matter whether this is a Windows or Android device or an iPhone.

The PiKoder/SSC wRX (see below) is well suited as a hardware platform for this concept: the ESP8266-01 offers the access point and runs the webserver, the PiKoder/SSC manages all realtime aspects of controlling the servos and the electronic speed control.


PiKoder/SSC wRX

The standard configuration of the PiKoder/SSC wRX requires the ESP8266-01 to act as a transparent bridge. Since we will be needing a webserver, we would have to flash this wifi controller with a new firmware. This can be easily accomplished by using the latest Arduino IDE which is supporting generic ESP8266 modules.

The new controller firmware is open source and would be available through the github repository makerprojects/httpRC. After downloading open the sketch in the Arduino IDE. At the beginning of the source code you will find the settings recommended for compiling the program. [Update December 27, 2018: The httpRC sketch has been completely revised and updated. Please check this blog for more details.]

In order to flash the ESP8266-01 you will need an USB-Serial converter, since the wifi module does not feature a USB port. Please keep in mind also, that the ESP8266 requires a supply voltage of 3,3 Volts – the board is not 5 V tolerant! The offering of USB-Serial converter offering a 3,3 Volt supply as well as 3,3 Volt signal level is limited; therefore it might be easier to use a converter with 5 V supply and 3,3 V signal level such as the PL2303TA readily available at ebay (shown below) and build your own converter from 5 V to 3,3 V.


USB-Serial converter

Since you would need a “reset” and “program” button for flashing the module you might consider to construct the little adapter shown below using a prototype board.


Programming adapter for the ESP8266-01

The schematic for the programming is shown below.


The conversion of the 5 V provided by the USB-Serial adapter to 3,3 V follows the design of the PiKoder/SSC wRX and requires a standard low drop voltage controller LF 33 CV (please refer to the following excerpt of the PiKoder/SSC wRX schematic; the 5 V input would be to the left, the output is to the right).


Unfortunately the flashing of the ESP8266 does not start automatically as you might be used to when downloading a program into your Arduino but has to be initiated manually. You would push the RST and PROG button simultaneously and release the RST button while still holding the PROG button. After releasing the PROG button, the module would be in flash mode. Now you would start uploading the program. Once the upload is complete your controller would require another reset prior to being operational.