Diy Wifi Controlled Tiny Plane

About the project

Have you ever dream about building

Items used in this project

Hardware components

ESP8266 Serial WIFI Module ESP8266 Serial WIFI Module Flight Controller and WiFi Receiver x 1
LiPo Battery 180mAh 25C 3.7V LiPo Battery 180mAh 25C 3.7V x 1
Crazyflie 2.0-7x16mm Coreless DC Motor Pack (4*Motors) Crazyflie 2.0-7x16mm Coreless DC Motor Pack (4*Motors) x 1

Story

Talking about range of the plane... I have got around 70 meter LOS range using my Moto G5S mobile acting as WiFi Hotspot and remote controller. Further real-time RSSI displayed on Android App and if plane about to go outside range (RSSI fall below -85 dBm ) than mobile phone starts vibrating. If plane goes outside range of Wi-Fi access point than motor stops to provide fail safe landing. Also battery voltage displayed on Android app and if battery voltage fall below 3.7V than mobile phone starts vibrating to provide feedback to pilot for land the plane before battery gets fully drained. Plane is fully gesture controlled means if you tilt mobile phone on left than plane turn left and opposite for right turn.

So here, I am sharing step by step build instruction of my ESP8266 based WiFi controlled tiny Plane.

Build time required for this plane is around 5-6 hours and requires basic soldering skill, little bit programming knowledge of ESP8266 using Arduino IDE and having Cup of hot coffee or chilled beer around will be great :).

Step 1: What You Need

Electronics Parts : If you are electronics hobbyist than you will find many of the parts listed below in your inventory..

Total Cost--------> 13$ Approx

Other Parts:

  • 2-3 nos. Barbecue stick
  • 1 nos. 50cm x 50cm 3mm depron sheet or any rigid 3mm foam sheet
  • Single core insulated jumper wire
  • Nodemcu or cp2102 USB to UART converter as programmer for upload firmware to esp8266
  • Scotch Tape
  • Super Glue

Tools Required:

  • Hobby grade Soldering Tools
  • Surgical Blade with blade holder
  • Hot glue gun
  • Scale
  • Computer having Arduino IDE with ESP8266 Arduino Core
  • Android Mobile phone

That's it all we need... Now we are all set to build our crazy WiFi Controlled Plane

Step 2: Control Mechanism

This Plane uses differential thrust for yaw control (Steering) and collective thrust for pitch (climb/descent) and air speed control hence no servo motor needed and only two main coreless DC motor provides thrust and control.

Polyhedral shape of wing provides roll stability against external force (Wind gust).

Intentionally avoiding servo motor on control surfaces (elevator, Aileron and Rudder) makes design of the plane very easy to build without any complex control mechanism and also reduce cost of the build.

To control the plane All we need is to control thrust of both Coreless DC motor remotely via WiFi using Android App running on mobile phone.

Just in case, any one want to observe this plane's design in 3D, I have attached Fusion 360 screen shot and stl file here.. you can use online stl viewer to look at the design from any view angle.. once again it is just a CAD design of plane for documentation, you do not need 3D printer or laser cutter.. so don't worry :)

Step 3: ESP12e Based RX/Controller Schematic

ESP12e (ESP8266) Based receiver cum control module Schematic:

Lets start with understanding function of each component in schematic,

  • ESP12e : This ESP8266 WiFi SoC receives UDP control packets from Android App and controls RPM of Left and Right motor.It measures battery voltage and RSSI of WiFi signal and send it to Android App.
  • D1: ESP8266 module safely operates between 1.8V~3.6V as per its data sheet, hence single cell LiPo battery cant be used directly for ESP8266 power supply so step down converter is required. Reduce circuit weight and complexity I have used 1N4007 Diode to drop battery voltage (4.2V ~ 3.7V) by 0.7V (cut in voltage of 1N4007) to get voltage in range of 3.5V~3.0V which is used as supply voltage of ESP8266. I know its ugly way to do so but its working just fine for this plane.
  • R1, R2 and R3: these three resistors are minimum required for ESP8266 minimum setup. R1 pull-up CH_PD(EN) pin of ESP8266 to enable it. RST pin of ESP8266 is active low so R2 pull-up RST pin of ESP8266 and bring it out of reset mode. as per data sheet on power up, GPIO15 pin of ESP8266 must be low so R3 used to pull-down GPIO15 of ESP8266.
  • R4 and R5: R4 and R5 used to pull-down gate of T1 and T2 to avoid any false trigger of mosfets (motor run) when ESP8266 power up. (Note: R1 to R5 values used in this project is 3.3Kohms, however any resistance between 1K to 10K will work seamlessly)
  • T1 and T2: These are two Si2302DS N-channel power mosfets (2.5 Amp rating) controls RPM of Left and Right Motor by PWM coming from GPIO4 and GPIO5 of ESP8266.
  • L_MOTOR and R_MOTOR: These are 7mmx20mm 35000 RPM Coreless DC motors provides differential thrust for fly and control plane. Each motor provides 30gram thrust at 3.7V and draws 700mA Current at speed.
  • J1 and J2: These are mini JST connector used for ESP12e module and Battery connection. You can use any connector that can handles at least 2Amp current.

(Note : I completely understand importance of decoupling capacitor in mixed signal circuit design, but I have avoided decoupling capacitors in this project to avoid circuit complexity and part count as only WiFi part of ESP8266 is RF/Analog and ESP12e module itself having necessary decoupling capacitors on-board. BTW without any external decoupling capacitor circuit works just fine.)

ESP12e based receiver schematic with programming connection in pdf format is attached with this step..

Step 4: Electronics Build Log

Above video with caption shows step by step build log of ESP12e Based Receiver cum controller designed for this project. I have tried to place components as per my skills. you can place components as per your skill by considering schematic given in previous step.

Only SMD mosfets (Si2302DS) are too small and needs taken care while soldering. I have these mosfets in my inventory so I have used it. You can use any bigger TO92 package power mosfet with Rdson < 0.2ohms and Vgson < 3.7V with current rating of >1.5Amps. (Suggest Me if you find such mosfet easily available in market..)

Once this hardware is ready, we are all set for upload firmware of WiFi Plane to nodemcu this process discussed in next step.

Step 5: ESP8266 Firmware Setup and Upload

ESP8266 firmware for this project is developed using Arduino IDE.

Nodemcu or USBtoUART Converter can be used to upload firmware to ESP12e. In this project I am using Nodemcu as a programmer to upload firmware to ESP12e.

Above Video shows step by step process of the same..

There are two methods to upload this firmware to ESP12e,

  1. Using nodemcu flasher: If you just want to use wifiplane_esp8266_esp12e.bin binary file attached with this step without any modification in firmware than this is best method to follow.
    • Download wifiplane_esp8266_esp12e.bin from attachment of this step.
    • Download nodemcu flasher repo from its official github repository and unzip it.
    • In unzipped folder, Navigate to nodemcu-flasher-masterWin64Release and run ESP8266Flasher.exe
    • Open config tab of ESP8266Flasher and change binary file path from INTERNAL://NODEMCU to path of wifiplane_esp8266_esp12e.bin
    • Connect ESP12e based WiFi receiver module to your computer via Nodemcu-as programmer or USB to UART Converter.
    • Open Operation tab of ESP8266Flasher at this step you should see COM port number of attached programmer, if so hit flash button and wait till firmware upload process completes.
    • You need to remove programming connection (At least GPIO0 should be removed than uploaded firmware will boot)
    • If all goes fine than you can See blue LED on ESP12e start flashing at every one second.
    • Cheers ESP12e is now ready to communicate with Android App.
  2. Using Arduino IDE: If you want to edit firmware (i.e. SSID and password of WiFi network - Android Hotspot in this case) than this is best method to follow.
    • Setup Arduino IDE for ESP8266 by following this excellent Instructable.
    • Download wifiplane_esp8266.ino from attachment of this step.
    • Open Arduino IDE and copy code from wifiplane_esp8266.ino and paste it in to Arduino IDE.
    • Edit SSID and Password of your network in the code by editing following two lines.
char ssid[] = "wifiplane";   //  your network SSID (name)
char pass[] = "wifiplane1234";    // your network password (use for WPA, or use as key for WEP)
  • Connect ESP12e based WiFi receiver module to your computer via Nodemcu-as programmer or USB to UART Converter.
  • Hit Upload button from Arduino IDE and wait till firmware upload process completes.
  • If all goes fine than you can See blue LED on ESP12e start flashing at every one second.
  • Cheers ESP12e is now ready to communicate with Android App.

Now in next step I will provide step by step build information for making Airframe for this project.

Step 6: Airframe Build Log

Airframe build log is shown step by step in video above. I have used 18cmx40cm piece of depron foam for airframe. Barbecue stick used to provide extra strength to fuselage and wing. In above image Plan of of Airframe is provided, however you can modify plan as per your need by just keeping basic aerodynamics and weight of the plane in mind. By considering electronics setup of this plane, it is capable to fly plane with maximum weight of around 50grams. BTW with this airframe and all electronics including battery flying weight of this plane is 36grams.

CG Location: I have used general thumb rule of CG for smooth glide...its 20%-25% of the of chord length away from leading edge of wing... With this CG setup with slightly up elevator, it glides with zero throttle, level fly with 20-25% throttle and with added throttle it starts climbing due to slightly up elevator...

Here is youtube video of my flying wing airplane design with same electronics to just inspire you to experiment with various design and also to prove that for this setup can be used with many airframe design type.

Now with Airframe with all electronics mounted on it, we are all set to test the plane control function with Android App in next step.

Step 7: Android App Setup and Testing

Android App Installation:

You just need to download wifiplane.apk file attached with this step to your smartphone and need to folow instructions.

About App,

  • This Android App is developed using Processing for Android.
  • App is not signed package so you need to enable unknown source option in setting of your phone.
  • App need only right to access vibrator and WiFi network.
  • Trim motors, Arm/Disarm, RSSI, Battery Voltage, Throttle, Beginner/Expert Mode options in app.
  • Refer above image to know more about App GUI.

Installation of Android Application for WiFi plane to your smartphone is quite easy and its step by step process is in this video.

Pre-flight Test of Plane using Android app:

Once Android App is up and running on your smart phone, refer above video to know how App works and various cool features of the app..

If your plane responds to App same way as above video,

than its GREAT ... YOU HAVE MADE IT...

Step 8: It's Time to Fly

Ready to fly?...

  • GET IN TO THE FIELD
  • DO SOME GLIDE TEST
  • CHANGE ELEVATOR ANGLE or ADD/REMOVE WEIGHT ON NOSE OF PLANE UNTIL IT GLIDING SMOOTHLY...
  • ONCE IT'S GLIDING SMOOTHLY, POWER ON PLANE and OPEN ANDROID APP
  • HAND LAUNCH PLANE FIRMLY WITH 60% THROTTLE against Wind
  • ONCE IT'S IN THE AIR, IT SHOULD EASILY FLY AT LEVEL WITH AROUND 20% to 25% THROTTLE

I am sure, You gonna fall in love with it...

Video with this step shows how slow and Low its flying...View this video till end... I bate, You cant stop your self to build and fly this crazy baby Plane.....

Finally with this quote "I'm not afraid of flying, I'm afraid of not flying...."

ENJOY................HAPPY MAKING...............HAPPY FLYING...................

Step 9: Limitations and Future Update Plan

Limitation : Access Point's SSID and Credentials are Hard coded in ESP8266 Firmware, so need to change ESP8266 firmware if you are making multiple planes and want to fly them all at common field. It is really annoying to tie up ESP8266 to computer for upload edited firmware.

Solution : I am planning to include Wi-Fi manager in ESP8266 firmware and Wi-Fi Configuration part in Android App in future Update, so by just pressing a button ESP8266 act as a Access Point and SSID and Credentials of preferred WiFi network can be passed to ESP8266 using Android App itself. I would also like to add more degree of freedom in Airframe design and electronics so some cool aerobatics can be performed by the plane. Look and feel of Android App need professional makeover and it will going to take lot of time so I am looking for some helping hand who contribute in the same. Happy to help you,

Your Questions/Comments/Suggestions/Critics are welcome...

Hope you Liked and Enjoyed my First ever Instructable..

Cheers,

Ravi

Schematics, diagrams and documents

Schematic

All Files

CAD, enclosures and custom parts

STL Plane model

Just for visulization

Code

All Source code/ Android App

All source and Android App can be download from https://www.instructables.com/id/WIFI-CONTROLLED-RC-PLANE/

Credits

Photo of ravibutani03

ravibutani03

Hacker Maker Aeromodeller Educator

   

Leave your feedback...