Have you ever dream about building <15 $ DIY remote control park flyer plane that control by your mobile phone (Android App over WiFi) and give you daily dose of adrenaline rush of 15 minutes (flying time of around 15minutes)? than this instructable is for you guys.. This plane is very stable and slow flying so its very easy for even kids to fly it.
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 :).
Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.
Step 1: Step 1: Components and Tools List
Electronics Parts :If you are electronics hobbyist than you will find many of the parts listed below in your inventory..
- 2 nos. Coreless DC motor with cw and ccw prop --> 5$
- 1 nos. ESP-12 or ESP-07 module --> 2$
- 1 nos. 3.7V 180mAH 20C LiPo battery -- > 5$
- 2 nos. SI2302DS A2SHB SOT23 MOSFET --> 0.05$
- 5 nos. 3.3kOhms 1/10 watt smd or 1/4 watt through hole resistors --> 0.05$ (3.3K to 10K any resistor will work)
- 1 nos. 1N4007 smd or through hole diode --> 0.02 $
- 1 nos. TP4056 1S 1A Lipo Charger module --> 0.06$
- 2 male and 1 female mini JST connector --> 0.05$
Total Cost--------> 13$ Approx
- 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
- Hobby grade Soldering Tools
- Surgical Blade with blade holder
- Hot glue gun
- 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: Step 2: Understanding 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: Step 3: Controller Schematic Based on ESP8266
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: Step 4: Controller Assembly
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: 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,
- 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-master\Win64\Release and run ESP8266Flasher.exe
Open config tab of ESP8266Flasher and change binary file path from INTERNAL://NODEMCU to path of wifiplane_esp8266_esp12e.bin
Than follow steps as per above video....
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. and follow steps as per above video.
char ssid = "wifiplane"; // your network SSID (name)
char pass = "wifiplane1234"; // your network password (use for WPA, or use as key for WEP)
Step 6: Step 6: Airframe Assembly
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.
Step 7: 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 as per above video.
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.
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: 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...
Participated in the
Make It Fly Challenge