Remote Control Hovercraft

Our product is a small remote control hovercraft that functions on land. The hovercraft is fast, stable, and easy to control. Its skirt is the main feature. The skirt can reduce the friction, which enables the hovercraft to reach a high speed with a small thrust. The hovercraft uses only brushless motors, and we use an Arduino board as the control chip. A PS2 controller acts as the remote control device.

Although this hovercraft is an assigned task, our team is enthusiastic to brainstorm the design and build this craft. During the project, we encountered some problems and tried our best to solve them. We are eager to share our experience with you and help you to build your own hovercraft!

You need some basic knowledge about programming to build this hovercraft. The programming with Arduino is not easy for rookies. The mechanical structure for this hovercraft is simple. You will only need a cutter knife and a hand drill to build it. The hardest part is to adjust the hovercraft’s balance. If you have patience, it will not be a problem for you.

Our team built this hovercraft within 4 weeks. We spent lots of time designing the structure and debugging the code. I believe that you can finish the hovercraft in 30 hours with this manual.

The hovercraft has two propellers that are dangerous. You need to pay special attention to the ducted fan. The propeller in it spins fast, and you can hurt yourself if you stick your finger into it. We recommend you to set an upper limit for the ducted fan’s speed.

Materials of the frame and skirt

● Foam board

● Balsa wood panel

● Glue

● Plastic bag

● Tape

Materials for power units:

● Ducted fan

● A 5-inch three-blade propeller

● Two brushless motors

● Metal gear servo

● 11.1V Li-ion battery

● Electronic speed controller

Materials for remote control:

● Arduino Uno Board

● PS2 remote controller and receiver

● DuPont wire

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Materials and Tools (With Links to Buy Them)

Our team bought the materials on the shopping site You can also buy the materials on if you are not in mainland China.

The balsa wood panel is light and easy to slice. We use the 3mm thick balsa wood panel on this hovercraft. You can get this panel in any model shop. You can find foam board, plastic bags and tape in local grocery stores.

We used a specific kind of glue to stick the foam board. Normal glue will dissolve the foam board and destroy the hovercraft. You need to ask the seller to make sure the glue can stick foam boards.

Foam board glue:

We recommend you to buy the ducted fan and the brushless motor together. The ducted fan we used is 11.1V, and its maximum thrust is around 1.2kg.

Ducted fan with motor:

Another brushless motor on our hovercraft is Emax BL2215/25 kv950. We use a 5-inch propeller in the size of 5045 to fit with the motor. Do not forget to buy the propeller clip.

Emax motor:


The electronic speed controller (ESC) for the Emax motor is a 20A hobbywing ESC. You can use other ESCs that has a maximum current of 20A. You must choose the other ESC according to the parameters of the ducted fan. We use a 40A ZTW ESC for the ducted fan. You can ask the seller to determine what kind of ESC is fit for your motor.

ESC 20A:

ESC 40A:

Our team uses the Arduino Uno board. You can buy it together with the DuPont wires on You can buy the PS2 controller on or

Arduino Uno:

PS2 controller:

The battery is 11.1V 25c 2200mAh Li-ion battery. You can buy a smaller battery of 1100mAh, but we suggest you to buy the battery of 25c or a higher discharging rate. We use another 3.7V 1100mAh battery to power the servo.

Battery 11.1V:

Battery 3.7V:

The price of our DIY hovercraft for your reference (Counted in USD):

Materials of the frame and skirt

  • Foam board $0
  • Balsa wood panel $2
  • Glue $2
  • Plastic bag $0
  • Tape $1

Material for power units:

  • Ducted fan (with a brushless motor) $13
  • A 5-inch three-blade propeller $1
  • A brushless motor $10
  • Metal gear servo $7
  • 11.1V Li-ion battery $22
  • 3.7V Li-ion battery $4
  • Electronic speed controller 40A $8
  • Electronic speed controller 20A $8

Materials for remote control:

  • Arduino Uno Board $20
  • PS2 remote controller and receiver $6
  • DuPont wire $1

Total: $105

Step 2: Know What to Build

We use some simple sketches as a basic guide in the working process. The sketches include the rough scale drawing of the foam boards and the skirt, together with the rough appearance of the final product.

Step 3: Make the Base Plate

Part A: Building the upper layer base

1. Cut a rectangle of 30cm*25cm from the foam board with an art knife for the upper layer base.

2. Open a 6cm*6cm hole in the center of the base.

3. Enlarge the hole on one side of the base with an art knife and an electrical grinding machine. Make sure that the length of the enlarged hole is greater than the diameter of the lifting propeller since the propeller will rest there later.

Part B: Building the lower layer base

1. Cut out rectangle of 10cm* 20cm from the basal wood panel for the lower layer base. Open a hole of 6cm* 14cm in the center.

Notice: Be careful with the electrical grinding machine. It can injure your finger. You need to press hard to cut the balsa wood panel. Be careful when you are cutting.

Step 4: Make the Skirt and Add It to the Board

1. Make measurements and draw the outline of the skirt on the plastic bag as shown in the sketch with a ruler and a mark pen. Cut along the lines with a pair of scissors.

2. Open a 14cm*6cm hole in the center of the skirt.

3. Fix the skirt on the lower layer base with glue. Overlap the hole on the base with the hole on the skirt.

4. Cut out four 1cm*2cm*3cm cubes from the foam board. These are pillars that connect the lower layer base and skirt with the upper layer base.

5. Glue the pillars to the four corners of the lower layer base. Then attach the pillars along with the whole lower layer base and the skirt to the side of the upper layer base that has the enlarged hole.

6. There are four inclined edges on the skirt. Fold one of these into an overlapping corner and seal it with tape. Repeat this step for all the rest three corners.

7. Fix the whole skirt onto the upper layer base with tape. Seal every inch with tape such that no air can go in or out.

Notice: The drilling part is dangerous. Please be careful and use the drilling machine in the proper way.

Step 5: Mount the Motor and the Lifting Fan

1. Cut out a 150*80*3 mm board from the balsa wood panel. Drill four holes on the board .

2. Cut two 60*20*20 mm polyfoam cubes . Glue two cubes onto the same side of the wood board

3. Install Part A, B and C in order to mount the lift fan to the blue motor.

4. Assemble the platform to the blue motor by four M-3 screws . Then, assemble the blue motor to the wood board by four M-3 screws .

Step 6: Fix the Steering Engine and Propeller

Part A: Assemble the steering engine

1. Assemble four M-2 screws onto the platform , and assemble the platform to the steering motor by an M-3 screw .

Notice: Be careful with the rotation angle of the steering engine.

Part B: Assemble the propeller

1. Cut a 100*30*120 mm polyfoam block, and cut a diameter hole from the block .

2. Fix the propeller into the hole .

Part C: Connect the propeller with the steering engine.

1. Cut out a 140*50*3 mm board from the balsa wood panel. Drill eight holes.

2. Glue four foot stools onto the polyfoam block.

3. Connect the wood board and the polyfoam block by four M-4 screws and screw caps.

4. Connect the wood board and the steering engine by inserting the screws into the polyfoam block.

Step 7: Connect the Electronics

Part A: Set up the controller

1. Insert two triple A batteries.

Part B: Set up the controller receiver

1. Connect wires between Arduino board and the controller receiver as figure 39. Connect 4 to “GND”, 5 to “3.3V”, 2 and 6 to two PWM ports (labeled with “PWM”), 1 and 7 to two digital ports (labeled with “DIGITAL” without “PWM”).

Part C: Set up the steering engine

1. Connect the orange wire of steering engine to a digital port.

Part D: Set up electronic speed controllers (ESC)

1. Strip off the insulated cover of two wires of an ESC each for the length of 5mm, but do not cut off the wire.

2. Cut the T-shaped plug and strip off the insulated cover on the top of two wires of another ESC for the length of 10mm.

3. Wind the naked wire of the second ESC on the naked wire of the first one, red one on red one and black one on black one. Weld the conjunction with soldering tin (silver wire-liked metal).

4. Connect the orange or white DuPont port of the two ESC (square hole) with two PWM ports.

5. Connect the three wires with round ports of the bigger ESC to the similar three wires of the tunnel motor.

6. Connect the other ESC to the brushless motor as what you just did.

Part E: Set up the power supply

1. Strip off the insulated cover on the top of power wire for Arduino.

2. Wind the two wires onto the T-shaped plug, red on red and black on black. Add a little hot melt adhesive between the two conjunctions on the two plug of T-shaped plug to ensure the insulation of the positive and negative electrode.

3. Weld a naked wire to three pin header connectors. Use this pin header connector and wires to connect the smaller battery’s black wire, Arduino’s GND, and steering engine’s black wire.

4. Connect the smaller battery’s white wire to the steering engine’s white wire.

5. Connect the black wire with DuPont port of the smaller ESC to Arduino’s GND.

6. Plug the ESC’s T-shaped plug to the bigger battery.

Step 8: Program and Debug



//for v1.6


PS2X ps2x; // create PS2 Controller Class

//right now, the library does NOT support hot pluggable controllers, meaning

//you must always either restart your Arduino after you conect the controller,

//or call config_gamepad(pins) again after connecting the controller.

int error = 0;

byte type = 0;

byte vibrate = 0;

Servo lifter,propeller,turn;

int pro=30,lif=104,balance=77,a=15;

int state=0; // propelling state

int std_lif=90,std_lif_dif=5,std_pro=50;

void setup(){



//CHANGES for v1.6 HERE!!! **************PAY ATTENTION*************

lifter.attach(9); // smaller ESC 's white wire

propeller.attach(6); // bigger ESC 's orange wire

turn.attach(10); // steering engine's white wire

turn.write(balance); // setup balance position

error = ps2x.config_gamepad(4,3,5,2, true, true); //setup pins and settings: GamePad(clock, command, attention, data, Pressures?, Rumble?) check for error

if(error == 0){

Serial.println("Found Controller, configured successful");

Serial.println("Try out all the buttons, X will vibrate the controller, faster as you press harder;");

Serial.println("holding L1 or R1 will print out the analog stick values.");

Serial.println("Go to for updates and to report bugs.");


else if(error == 1)

Serial.println("No controller found, check wiring, see readme.txt to enable debug. visit for troubleshooting tips");

else if(error == 2)

Serial.println("Controller found but not accepting commands. see readme.txt to enable debug. Visit for troubleshooting tips");

else if(error == 3)

Serial.println("Controller refusing to enter Pressures mode, may not support it. ");

//Serial.print(ps2x.Analog(1), HEX);

type = ps2x.readType();

switch(type) {

case 0:

Serial.println("Unknown Controller type");


case 1:

Serial.println("DualShock Controller Found");


case 2:

Serial.println("GuitarHero Controller Found");




void loop(){

/* You must Read Gamepad to get new values

Read GamePad and set vibration values

ps2x.read_gamepad(small motor on/off, larger motor strenght from 0-255)

if you do not enable the rumble, use ps2x.read_gamepad(); with no values

you should call this at least once a second


if(error == 1) //skip loop if no controller found










//control lifting:



























//for adjusting the balance positon of the steering engine









// turning:












//change lifting's power under standard braking mode









//change lifting's difference between braking and propelling:









ps2x.read_gamepad(false, vibrate); //read controller and set large motor to spin at “vibrate” speed



Use the Serial monitor and press pink button on the controller to see the position of the steering engine. Change the balance position till the proper position.

Notice: Remember to test the hovercraft in an open space. When you are testing the hovercraft, do not use full power at first. It can go out of control and hurt people. Check the electrical component’s temperature in case they short-circuit.

Step 9: Final Adjustment

Fix the Arduino, the two ESC s, and the controller receiver on the top board of the ship with tape. Cover the pin header conjunctions with insulated tape. Fix wires in bunch with tape.

Bundle the two batteries with tape. Attach Velcro under the battery and on the tail of the ship. Adjust the lifting power in program to eliminate the self-rotation. Adjust the balance position of the steering engine in the program until the tail of the propeller point to the center of the ship. Adjust the position fixing the battery group (with Velcro) until when you propel the ship, the ship will go in a straight line.

Be the First to Share


    • Book Character Costume Challenge

      Book Character Costume Challenge
    • Made with Math Contest

      Made with Math Contest
    • Cardboard Speed Challenge

      Cardboard Speed Challenge

    2 Discussions