Wifi PPM (no App Needed)





Introduction: Wifi PPM (no App Needed)

I wanted to control my diy micro indoor quadrocopter with my smart phone but I couldn't find a good solution for this. I had a few ESP8266 wifi modules laying around so I decided to make my own one.

The program starts a wifi access point with a HTML 5 website to control the PPM signal. The PPM signal is generated by interrupt.

Thanks to HTML5 you can control your RC device with any smart phone without any app.

You can also connect to the website with a PC and use a joystick for controlling. At the moment this works only in Firefox.

In this inscrutable I will explain how to set up the ESP8266 and how to configure the receiver in Betaflight.

Step 1: Parts List

Let's start with the parts list. You just need a few components:

- ESP8266: Any module should work. I use the ESP 12-F module: http://www.watterott.com/de/ESP8266-ESP-12F-WiFi/W...

- a 3,3V USB to Serial converter for uploading the scetch the first time. (After the first upload you can use the OTA update). Use Something like this: https://www.banggood.com/de/RobotDyn-USB-Serial-A...

- a 3,3V voltage regulator: The ESP8266 needs 3,3V. Any voltage above 3,6V will kill the device. It can also drop about 200mA peak current. If you don´t have a strong enough 3,3V supply at your RC model you need an additional voltage regulator. I use this step down regulator with a 3,9K Ohm resistor: http://www.produktinfo.conrad.com/datenblaetter/15...

- a PC with Arduino IDE: https://www.arduino.cc/en/Main/Software

- ESP8266 support for Arduino IDE. Follow these instructions: https://learn.sparkfun.com/tutorials/esp8266-thing...

- Websocket library for Arduino: https://github.com/Links2004/arduinoWebSockets

- Maybe a 3,3V/5V level shifter if your PPM decoder doesn´t support 3,3V inputs. For most quadcopter flight controllers you don´t need this.

- The WifiPPM scetch: Download file below or https://goo.gl/Qj5Gwb

- A smart phone or a PC with a joystick and Firefox

Step 2: Set Up the Electronics and Upload the Program

The first thing to do is to set the power connections to the ESP8266. You can see the wiring in the picture. Make the following connections:

RST, EN and VCC to 3,3V

GPIO15 and GND to GND

Put a small capacitor between VCC and GND (about 100 nF)

TXD to RXD of your USB2Serial device

RXD to TXD of your USB2Serial device

Put GPIO0 to GND while powerup to enter the flash mode.

After you have installed the Arduino IDE, the ESP8266 support and the websocket library open the sketch. Hold GIO0 to GND while powering up the ESP8266 to enter the flash mode. Now you can upload the sketch.

After you have uploaded the sketch, the controller will reset. You should find a WIFI Access Point named WifiPPM. If this is OK you can power down the chip and disconnect the TXD, RXD and GPIO0 wires. In the future you can update the program over OTA. To do so connect to the Access Point and go to "" in your web browser.

Step 3: Website

Now you can connect GPIO5 to the PPM input of your flight controller or whatever you use to decode the PPM signal.

After powering up the module you can connect to the Access Point "WifiPPM". There is no password. Open the address in your browser.

You will see the site of the first picture. On a touch device you can control the sticks with your touch screen.

If you open the site with a PC you must use Firefox. As soon as you connect a joystick, the site will change to the one you can see at the second picture. You can control the sticks with your joystick.

In the next step I will explain how to set up Betaflight, because I use it. If you use some other controller you have to go on yourself from now on.

Step 4: Setting Up Betaflight

I use the WifiPPM controller for my quadcopter with Betaflight. I explain now how to set it up.

- Connect your flight controller to the PC

- open Betaflight

- connect to the flight controller

- go to Receiver tab

- type RTAE1234 into the channel map field

- change the "Stick Low Threshold" to 1020, the "Stick Center" to 1500 and the "Stick High Threshold" to 1980

- save the changes

- open the wifiPPM website with your mobile phone and test if the adjustment is OK

Thats it. You are done. Now you can fly with your mobile phone without any additional app.



  • Water Contest

    Water Contest
  • Clocks Contest

    Clocks Contest
  • Creative Misuse Contest

    Creative Misuse Contest

14 Discussions

I uploaded a new version of the sketch. A "Connection alive" signal is now implemented to detect a lost connection.

Will this code work for coreless motors and f3 evo brushed flight controller ?

Please help, because it is not working in my case.

1 reply

Do you get a wifi connection to the ESP8266? Can you check the output of the ESP8266 at GPIO5 with an oscilloscope?
If not, can you messuare a frequency of 25Hz at GPIO4 with a multimeter?

How does your wiring look? You have to connec the PPM output(GPIO5) of the ESP8266 to RX2 of your flight controller. Set the UART2 to PPM and the receiver mode to PPM in Betaflight.

It would be helpful to mention that you need to set Receiver Type to PPM from Betaflight > Configure > Receiver Type

Great project, thanks a lot for sharing I wanted to do also but I'm not fully sure about which pins I should connect to my flight controller which is hollybro kakute, ppm is for sure but others?

Screen Shot 2018-03-13 at 5.12.08 PM.png
5 replies

For your flight controller you need an additional 3,3V voltage regulator which can handle at least 200 mA. Better more. Connect the Voltage regulator input to the 5V output of your flight controller. Connect the 3.3V output of the Voltage regulator to the ESP8266 3.3V inputs like in the picture. Ground to ground. PPM to PPM. Be careful about the current draw if you have additional parts at the 5V output of your board. If the current is too high you can damage it.

I've tried to do what you've said but couldn't make it work maybe because of the board because I have Lolin ESP8266 12E version attached images are my connections basically I used computers input for voltage (testing purpose) and connected GPIO5 port to flight controllers PPM (PPM to PPM) could it be related to 3.3V and Ground or do you think I need to edit code?

If you need more question please let me know.


OK, let's start from the beginning. First check if the program is running correctly. To do this power your ESP8266 board without any connection to the flight controller. Then search with the laptop or smartphone for the WIFI network "WifiPPM" and connect to it. When you are connected open the address in a web browser. If you can open the website the program is working.

Next step is to check the signal. If you have a oscilloscope you can measure the ppm signal on GPIO5. If you don't have an oscilloscope you can measure a frequency of about 25 Hz at GPIO4 (Debug Pin).

Check these points, then we can go on with finding the problem.

Thanks for detailed explanation Andi :) It worked when I changed the sigPin to D1.

#define sigPin D1 //set PPM signal output pin on the arduino

So probably I was either connected from different pin or my 5th pin is different.

I'm pretty sure you're up to something awesome between this and stereo vision..

1 reply

Yes, I'm working on a cheap stereoscopic camera system which is small enough for a micro indoor quadcopter. Also I don't want to buy expensive goggles. At the moment I have a working prototype with a raspberry pi and a small screen as 3d goggles. I'm working on an android app to use a smartphone with google cardboard as goggles. When the app is working I will post an instructable.

I made this project to get rid of the expensive RC transmitter. So in the end I hope to have a complete stereoscopic indoor 3d fpv quadcopter for small money without expensive additional parts.

Great project!
I have a NodeMCU tank platform I'd love to adapt this for.

That's a neat control system, I'd love to see it in action :)