Introduction: Autonomous Hovercraft

The objective of this project was to create a hovercraft. For this design, either a singular fan or multiple fans can be used. If the hovercraft is to only be used in water then a singular motor can be used. If the hovercraft is to be used on land then a lift fan will be required.

Step 1: Materials


Motors: the motors I chose are no longer available, you will need 2 quad copter motors with ESC and propeller.

Arduino Uno

9V Battery

JB Weld or some other epoxy (will be used to mount components)

You will need access to a 3D Printer

Step 2: Design and Printing

For the design of the hovercraft it was made to generate an air pocket below the hull as opposed to using an air bag. A main flotation system is needed, for this case since i was making something to be used in a pool I used a pool noodle.

I have provided a base thruster mount and rudder that can be used. All of these parts were 3D printed and epoxied together at each others center.

Step 3: Assembling

As mentioned before, all of the components were epoxied together, including the motors. Then the wiring was run to the arduino board.

Step 4: Code

#include  //calls in servo library to allow easy programming

#define echoPin 7 //echo pin for proximity sensor

#define triggerPin 10 // defines pin for receiver of proximity sensor

Servo ESC; // creates a servo variable to allow control of Electronic Speed Controller

Servo Rudder; //creates a servo variablr to allow control of rudder

void setup() {

pinMode(echoPin, INPUT); // sets echopin as input

pinMode(triggerPin, OUTPUT); //sets triggerpin as output

ESC.attach(9,1000,2000); //attaches ESC to pin 9 and sets maximum and minimum pulse times Rudder.attach(8); //attaches rudder to pin 9

Rudder.write(53); //sets rudder position as straight

ESC.write(0); //sets motor speed to 0


void loop() {

digitalWrite(triggerPin, HIGH); //turns trigger pin on


digitalWrite(triggerPin, LOW); //turns trigger pin off

int distance = pulseIn(echoPin,HIGH); // reads input from echopin (distance to wall)

distance=distance/148; //changes distance reading to inches


// the following if statement says that if the distance read by the proximity // sensor is greater than 10 inches move forward

if (distance > 10){

Rudder.write(53); //rudder is straight

ESC.write(140); //speed set to 125 of 180



// the following if statement says that if the distance read by the proximity // sensor is less than 10 inches turn to avoid obstacle

if (distance <= 10){

Rudder.write(25); // rudder set to 28 degrees from center

ESC.write(180); // full speed to turn faster


Rudder.write(53);//rudder set to straight after turn

ESC.write(125); // regular speed for going straight