Introduction: 3D-Printed Cubic ROV

This was a project done for the Make-course at the University of South Florida. It was my first time wiring, CAD designing, 3D printing, and coding.

If I were to redo this project I would add bigger holes for the water to go through and I would either make it smaller or get larger motors to make it go a bit faster.

This project could be upgraded by adding another function like a gripper arm or an underwater camera.


- three motors -

-roll of wire - (36ft) -

-waterproof adhesive -

-screwdriver (regular size and mini)

-3D printer

-flat-head screws -

-waterproofing spray -


-Funduino shield -


-two L298N H-bridges

-alligator clips -

-battery packs

-double A batteries

-wire cutters

-wire crimpers

-pool noodle

-film canisters -

-foam padding

-Soldering Iron -

Step 1: CAD Design

The first step is to design the different parts of the structure of the ROV using CAD software. I used a cubic shape to increase the stability, however, this does slow the speed of the ROV. I also decided to add a pattern of holes to increase water flow through the ROV. I also added extra materials on the side of the ROV. I also designed a slot that starts at the top in a tube shape with the size to fit a film canister and two holes going to the bottom for the wires at the bottom of the top motor.

Next design the side motor holders, again with a big enough space for the film canister and two holes for the wires. I designed the side motor holders with four screw holes. That way the side motor holders can be screwed into the extra material on the sides.

Next, I design the weight holder at the bottom. It is a simple box that can easily hold small rocks or other weights. I made sure that it had an extra hole for the wires to get through.

Then design the propellors, there are many propellor designs available for free online. It is also relatively easy to design one. I ended up making flat propellors because they were easier to do a tight press fit.

Step 2: 3D Printing

Next is to print all of the parts. The propellor caused me the most difficulty. I tried drilling a hole for a press fit but 1/16th inch was the smallest I could find which was too big. I printed using the Ender 3 Pro and 1.25mm diameter worked for the press-fit the best for me. This of course varies by printer.

Step 3: Attaching and Building

First, use a screwdriver to secure the side motor holders to the base.

Then cut two small holes in the bottom of the film canisters and one in the top.

Then cut wires at the maximum length you would like the ROV to be able to travel. I used my arm span which is six feet. Two wires will be required for each motor.

Then cut and strip the ends of the wires and solder or otherwise attach them to the motors.

Insert the motors into the film canisters feeding the wires through the bottom holes. Use padding to secure the motors into the canisters.

Then use waterproof adhesive to secure the film canisters to the holes made for them feeding the wires through the small holes at the back.

Then feed the bottom wires through the weight holder and use the adhesive to attach the holder to the bottom of the ROV base.

Then cut up the pool noodle to the appropriate size and use the adhesive to attach it to the top. I used shoelaces to tie up the pool noodle pieces first to see how much I wanted and then cut off the excess and attached it permanently.

Then push the propellers onto the motors and crimp the alligator clips to the other end of the motors. I also used painter's tape to label the different wires.

Step 4: Wiring

First, put the Funduino shield onto the Arduino.

Then take the first H-bridge, loosen the screws with a small screwdriver. Plug wires into the side slots. The side wires go to the motor wires. Plugin the side motor wires into those slots. For the front three slots, the left is attached to battery packs. The middle goes to the ground on the Arduino and the right goes to the 5V power on the Arduino. Then the IN pins need to be connected to the arduino. The cover for the EN pins can be removed and attached to PMW enabled pins on the Arduino to change the speed of the motors. I just kept them covered which makes the motors go only at top speed.

The second H-bridge is connected the same way only with one motor.

Step 5: Coding the Arduino

First, run the Joystick code to test the outputs of the joystick movements. Use these x and y values to make the if or switch-case statements in the main code.

Then run the main code to run the motors. This sets the joystick movement to the side motors and the C button to the top motor.

This code can be adjusted to fit any other needs, the low and high for the digitalWrite codes can be reversed to make the motors run in reverse. I used if statements because I have more experience with them but it may work better with switch-case statements instead.