Introduction: Build Your Own Underwater ROV From Scratch

I am very lucky to live in a coastal town and during summer, I regularly go snorkeling near rocky creeks to admire fish, sea stars and corals.

I used to I take my camera with me to capture some scenes, and after several attempts of filming the sea fauna and flora, I have come to the conclusion that filming underwater is really challenging!

You have to focus on the scene and stabilize your body without making too much movement to make sure the animal do not become frightened. Second problem: the apnea. It is very frustrating when you lack of air while filming a small octopus quietly walking on the sand!

Most of the time, the result is a short and shaky video sequence...

These are the reasons why I decided to build a kind of "underwater camera holder", which can go a few meters deep and take stabilized videos as long as the battery allows it. And why not adding lights to recover all the real colors underwater ?

This Instructable explains how to build a simple and affordable underwater ROV, the so-called CROC (Compact Remotely Operated Companion), which has the following basic features:

  • can be controlled while snorkeling with a waterproof wired remote control,
  • has LED spots to improve the quality of your sequences,
  • has around one hour operating time.

Keep in mind that this project is a guideline for building your own underwater ROV, feel free to add/remove/modify anything ;)

You can find the complete 3D model here.

Have fun !

Step 1: Materials

Hull and frame

  • All the following parts are PVC components:
    • 1 x pipe 140mm diam., 150mm length
    • 2 x couplings 140mm diam.
    • 2 x access caps 140mm diam.
    • 4 x T shape couplings 50mm diam.
    • 4 x access caps 50mm diam.
    • 8 x pipes 50mm diam., 40mm length
    • 8 x access caps 40mm diam.
    • 8 x couplings 40m diam.
    • 1 x pipe 32mm diam., 50mm length
    • 1 x T shape coupling 32mm diam.
    • 8 x pipes 32 diam., 20mm length
  • 2 x wooden sticks, 2m length, dimensions 5mm x 5mm
  • 1 x 3mm thick Plexiglas plate
  • 1 or 2 Kg lead (scuba diving weights)


  • 1 x Arduino (compatible) Mega2560 REV3 board (Aliexpress)
  • 1 x switch (Aliexpress)
  • 1 x pair of female/male Molex 4 pins connector (Aliexpress)
  • 8 x terminal blocks (Aliexpress)
  • 2 x 3-axes analog joysticks (Aliexpress)
  • 50m RJ45 cat6 wire (Aliexpress)
  • 1 x female/female RJ45 couplers (Aliexpress)
  • 3 x dual H-bridges L298N (Aliexpress)
  • 2 x LED 5W 12V DC lamps (310-320 lumen) (Aliexpress)
  • 1 x rechargeable 12V 12A.h sealed battery, dimensions 151mm x 98 mm x 95 mm (it must fit in the 140mm diameter pipe!) (Amazon).
  • 1 x LM2596 current regulator 1.3-37V DC (optional) (Aliexpress)
  • 1 x pair of male/female banana plugs (red and black) (Aliexpress)


  • 4 x 1100GPH 12V DC boat bilge pump (you just need the motor) (Ebay)
  • 4 x propellers, dimensions 43mm x 26mm x 9mm, diam. 4mm shaft (Hobbyking)
  • 4 x drive dog 3.18mm (Hobbyking)
  • 4 x threaded rod, 4mm diam. 20mm length
  • 4 x screw shaft couplers, 4mm diam. (Robotshop)


  • Wood and metal saws
  • Screwdrivers
  • Metal file
  • Sandpaper
  • Rotary tool (Dremel)
  • Soldering iron
  • Wire cutter
  • Pliers
  • 1 x 500 mL pot of PVC glue
  • 2 x tubes of epoxy glue
  • Nuts and bolts, diam. 3mm
  • 1 latex glove (for the remote control)
  • Cable ties

Step 2: The Hull

I will assume here that you know how to glue two PVC pieces one to each other, and if you don't, please find some tutorial or ask someone because we are going to assemble a lot of PVC elements!

Let me however explain how to build a PVC structure which will be called here a "tube" (the ROV is roughly obtained after assembling those structure together).

As you can see on the pictures, it is made of the following parts (from one end the other): access cap, coupling, pipe, coupling, and access cap. Note that the length of the tube depends only on the length of the pipe in the middle.

You can also replace the couplings by T shape couplings, so that you will end up with something like in the picture. Note that the angle in T shape couplings is around 87°, preventing the water to stagnate in the pipes, so you will have to orientate the two couplings in the same direction.

The main structure of the hull is the following:

  • The principal tube: contains the battery, the electronics, supports the motors and the camera.
  • Two superior tubes: contains the lamps, and serve as stabilizers.
  • Four feet: used as weights.

First of all, you have to decide on the length of the main hull. It should be neither too small (you may lack space to put the electronics and the battery inside) nor excessively tall (you will need to add a lot of weight for the ROV to be able to sink). In my case, 310mm length was enough, which corresponds to twice the length of the 140mm diameter couplings.

1. Build the principal tube (see above) of length 310mm and diameter 140mm.

2. Build the two superior tubes with T shape couplings. The perpendicular parts must be aligned!

3. Glue one 40mm length x 50mm diameter pipes into each perpendicular end of the superior tubes. These will connect the superior tubes to the principal one.

4. Now put the superior tubes on the principal one and mark the spots where the connection will be made. Let the angle between the two superior tube be around 90°.

5. Drill the principal hull at the marked spots. Be careful, drill the PVC so that the pipe fits perfectly into the hole (it is even preferable to make a hole which is slightly tighter than the diameter of the plugged pipe).

6. Glue the two superior tubes to the principal one. Use PVC glue outside and inside to make sure the connection is waterproof.

7. Now check if everything is waterproof: screw the 6 caps until its tight, immerse the hull into a basin of water, and check if there are bubbles escaping from it. In my case, I spotted 4 "holes", and I made it completely waterproof by adding more PVC glue on it. The main structure of the hull is over! Let us now prepare the superior tubes for the future lamps and wirings.

8. Drill a 32mm hole in the center of two 50mm diameter caps. Glue a 20mm length x 32mm diameter pipe into it and let it stick out by approximately 15mm outside.

9. Take the other two 50mm diameter caps and remove the central part of it (see the photo below). Cut two disks of Plexiglas of the correct diameter and glue them on the front of the caps with super glue or epoxy glue (PVC glue will not work). Be careful: super glue may produce vapors which can irremediably corrode the surface of the Plexiglas (you will get white spots on it).

10. Again, screw all the caps to the hull and check waterproofness (let the open caps outside of the water!). Add PVC glue if necessary. Now, let us add the feet.

11. Build four T shape tubes using 40mm diameter pipes. I built mine making the T shape couplings touch each other (minimal length). Glue a piece of pipe inside each perpendicular endings. This time, it is not necessary to drill the principal tube, this would unnecessarily add a potential risk of leakage. Just glue the feet on the surface of the principal tube: you will have to carve the pipe in contact with the surface of the hull according to its curvature (this will strengthen the connection). In my case, I chose the angle between the feet to be around 70°.

Remark: with a little hindsight, it would be more efficient to build 2 feet exactly the same way as we built the superior tubes, instead of 4 feet. The first reason is that the more you have components, the weaker the global structure will be. The second is reason is that you can add more weight in two feet than in 4 feet, and this will be useful in the stabilization step.

12. Add a mount for the camera: glue the half of a pipe on the front of the hull and screw the fixation of your camera (see the picture).

13. (Optional) Glue a T shaped 32mm diam. coupling at the rear of the hull (the Eternet cable will pass through it).

Step 3: The Internal Frame

This element is used to attach the electronic components together and prevents the battery from sliding when the ROV moves. The dimensions and shape of the internal frame highly depend on the interior diameter and length of the hull, and also on the size of the battery.

1. Build the frame according to the figures. The external dimensions are 127mm length, 116mm wide, and 90mm height.

2. Insert the battery and block it with paper or carton if needed.

3. The arduino Mega is slightly wider than the internal width of the frame, so carve the wood so that the board can be attached on the front of the battery (see the pictures).

4. Attach the Arduino board, the 3 Dual H-bridges with 3mm diam. screws. A starter hole is needed to prevent the frame from cracking. Glue the switch on the front of the frame.

5. Attach the terminal blocks on the other side of the frame, with glue or cable ties.

Step 4: The Remote Control

Since the ROV has no video feedback (it is actually a choice), you will have to control it while snorkling around it to see where you are filming. After long researches I did not find a way on how to build an affordable and waterproof remote control with joysticks. The following model is based on the same structure than the superior tubes, with 50mm diameter pipes. Actually the one I built is made of 40mm diameter pipes, but it was a real challenge to insert the two joysticks and all wires inside of it, so I suggest to use a larger diameter.

1. Build a 50mm diameter tube with T shape couplings. In my case, I glued two pipes perpendicularly to the tube, instead of using couplings.

2. Drill a 32mm hole at the center of one of the caps and glue a 20mm length pipe inside of it.

3. Cut the end of two fingers in a latex glove and put them on the top of each T shape couplings (see the figures).

That's it for the moment! We can go on to the next step now.

Step 5: Motors and Electronics


1. To remove the hull of the bilge pumps and install the propellers on the motors, please follow this link. As you can see on the picture, I had to add an extension to the shaft.

2. Attach the motors to the hull with cable ties, glue, and/or rope. My setting is not very aesthetic but it works.

3. Pull the wires from the motors through the pipe you have glued on one access cap, and then through the first T shape coupling.

4. Connect the wires to the terminal block.

5. Fill the pipe of the cap with epoxy glue. When it is dry, screw the cap to the superior tube.


1. Solder 20cm length electric wires to each pin of the LED lamps.

2. Insert the lamps in the superior tubes, just behind the Plexiglas caps and pull the wires through the T shape coupling.

Remote control

1. Attach or screw the two joysticks to a piece of wooden stick which fits the size of the remote control.

2. Cut one end of the 50m Ethernet cable and pull it through the pipe of the access cap. Let it stick out by a few centimeters.

3. Fill the pipe with epoxy glue.

4. Connect the wires of the cable to the joysticks and insert the joysticks in the remote control. You can add foam under the joysticks to let them go through the T shape couplings.

Remark: write down the correspondences between the outputs of the joysticks and the wires they are connected to.

5. Screw the caps and check the waterproofness.

Remark: putting joysticks into water will not destroy
them but it will provoke short-circuits if they are plugged to the Arduino board. It happened to me during the first test of immersion in a swimming pool: the remote control leaked and random commands were sent to the ROV, which became stuck after a few minutes.

6. Pull the other end of the Ethernet cable though the T shape coupling you glued on the hull, and then through the pipe of the last superior tube. Make sure to let the cable reach the front of the hull (add extra 15cm).

7. Fill the pipe with epoxy glue and screw the cap when everything is dry.

8. Again, check if the hull remains waterproof.

Arduino board, dual H-bridges, regulator, etc.

The full schematics is given in the pictures above.

1. Connect the left-hand motors to the left-hand dual H-bridge, and do the same for the right-hand motors.

2. Solder the lamps' cables to a Molex 4 pins male connector. Connect the female Molex connector to the remaining dual H-bridge.

3. Connect the switch between the battery and the rest.

4. (Optional) Add the regulator between the switch and the electronics.

5. Dismantle a female/female RJ45 coupler and solder cables to its pins. Connect the cables to the Arduino board and plug the Ethernet cable to the coupler.

6. Solder the female banana plugs to the anode and cathode the battery. Solder 10cm wires to the male plugs and connect them to the electronics.


  • All grounds (GND) must be connected (you can use a terminal block).

  • Label all of the cables you use! You will save valuable time... trust me.

Step 6: Arduino Code

1. Download "ArduinoCROC.ino".

2. Adapt the code according to your setup.

3. Upload the program into the Arduino board.

Remark: consider the Arduino code as a basis for your project. Feel free to improve the functions and add features!

Step 7: Load Balancing

If you immerse your ROV at this stage of the project, you will observe a significant pitch imbalance (around the left-right axis): the main reason is the position of the battery. Moreover, the ROV may sink or float, depending on its mass and total volume.

This is where the feet come into the picture. As they are completely watertight, you can fill them with something heavy or in the contrary let them empty to correct the orientation of the ROV. To add weight, you can use sand, gravel, or even metal bars. In the latter case, ensure that they will not move as the ROV accelerates or shifts, because it will change the load repartition during the immersion, which can be dramatic for the navigation.

You can also add an additional empty tube at the rear of the hull to compensate the battery weight (this is what I did) or add weight inside the hull, around the internal frame.

The ROV is balanced when the two following conditions are fulfilled:

  1. it neither sinks nor floats in water, but just stays at the position you leave it,
  2. its orientation is correct.


  • You will most probably adjust the load in soft water, like in your bathtub or in a swimming pool. If you intend to navigate in seawater, you will need to add some load since the presence of salt in water increases its density.
  • Balance the load of your ROV with the camera mounted: it has a significant weight and contributes to the stabilization.
  • During the first immersion test (see the video), my ROV was floating and completely unbalanced, the upper propellers were not even immersed!

Step 8: Enjoy!

Well, it's time for the captain to ride the CROC!

Here a video for its first navigation in a 3 meter deep swimming pool.

Microcontroller Contest 2017

Second Prize in the
Microcontroller Contest 2017