Low Cost Underwater Robot

This design is based loosely on the SeaPerch, but modified to use cheaper parts. My objective is to bring the cost low enough that every kid can build one and bring it home.

The parts list is constantly changing as I find better ways of doing things, but in the current iteration, these are what I used…

  • Motors (these are tricky to get right, and I’ve written more about it below)
  • Motor Drivers (H-bridge)
    • 5A 3V – 14V: These are cheap, and 5A is adequate for a fairly high power motor.
  • Propellers
    • 28mm and 42mm: The 385 motor I have works better with the larger propeller, but other motors work better with the smaller one. You’ll need to experiment to determine which is best. If in doubt, the smaller propeller is generally the safer choice (…less likely to overload the motor).
  • Shafts
    • The propeller can be mounted directly on the motor, but adding a shaft can improve water flow and performance. Not essential.
  • Shaft couplings
    • Only needed if a shaft is used. Get a 2.3mm to 2mm coupling (2.3mm for motor side, and 2mm for shaft side).
  • Motor casing (3D printed)
    • OnShape model. The model is parametric, so you can easily set it to fit any motor and PVC pipe size.
    • Alternatively, you can use a film canister, but it may be harder to mount these on the PVC pipes.
  • Wax. I’m melting down tea lights for this, but any wax should do fine.
  • Electrical / Insulating tape. Nothing special. Any type will do.
  • PVC pipes and fittings. I’m using 18mm PVC pipes, but any type will do.
  • Cables. I’m using ethernet cables for these. The unit price is low if you buy an entire reel (…typically 1000ft).
  • Battery + Battery Holder
    • 18650 Battery with 2 or 3 slots holder. The motors can be rather weak with just 2 x 18650. It’ll be necessary to ballast the robot carefully or it won’t be able to submerge. Performance is much better with 3 x 18650, but be careful of the current draw as the wires on these battery holders are rather thin and will burn out if the motors are heavily loaded.
    • Alternatively, use a 3S battery pack like this. These are typically used for RC toys and can supply much more current. You’ll need a suitable connector to wire this.
  • Joystick module
  • Mini-breadboards
  • Microcontroller (ESP32)
    • I typically get the model described as “CH340C TYPE-C”
  • Potentiometer with knob
  • Dupont jumper wires
    • You’ll need some M-F and some M-M
  • Controller
    • I laser cut them from 3mm plywood, but you can also cut a rectangular board by hand or use any rigid board for support.


The SeaPerch uses the Jameco 232022 motor. It works well, but current draw can be a little high and the shipping to Singapore is rather expensive. Probably a good option if you want more certainty and power.

I’ve gotten good results from a motor purchased off Aliexpress described as a “385 Motor”. Lower power, but the lower current draw makes it easier to power and drive. Less than half the price of the Jameco, but like most stuff off Aliexpress, there are little specifications provided and no guarantee that all “385 motors” performs the same.


I program the micro-controller with IoTy. You will need to flash the IoTy firmware on to the ESP32 using this page first.

You can find some slides on how to use IoTy here (under “Electronics with IoTy”).

The code I use for the underwater robot is here. Depending on your choice of pins, you may need to modify the code a little.



Potential Improvements


The battery, ESP32, and motor drivers can be placed in a waterproof box and allowed to float above the robot. The joystick and potentiometer can be connected to a second ESP32, which transmit commands to the first ESP32 via the ESP-NOW protocol.

With such a design, the robot can travel further and use a shorter cable. The added cost of a second ESP32 and a waterproof box is marginal, and the code change is minimal.

Underwater Camera

While I have successfully waterproofed and used a low cost USB camera module (<$5), the waterproofing process appears difficult for students to follow and the failure rate is very high. Need to explore other low cost waterproofing methods.

Lego EV3 Ball Launcher

When I added the paintball launcher to GEARS (https://gears.aposteriori.com.sg), I wanted it to…

  • Have controllable launch power
  • Works with a single motor
  • Be plausible to implement with Lego parts

I eventually decided on a control scheme where the motor is turned in reverse to pull back the “spring”, and turned forward (…by any amount) to trigger the launch. Launch power is controlled by the amount of pull back; the more you pull back, the greater the eventual launch velocity.

This control scheme addresses the first and second requirements, but is it plausible to implement it with real Lego parts? I’m pretty sure I cannot match the size and performance of the simulated paintball launcher, but I wanted to make sure that it’s possible to build a device that can at least achieve the same functionality.

I built this ball launcher as a proof-of-concept. It uses a single medium motor to both pull the rack back and trigger the launch, in the same manner as the simulated paintball launcher in GEARS. The key to the way it works lies in the…

  • Pivoted pinion gears
  • Ratchet mechanism

Pivoted Pinion Gears

A couple of rubber bands pull this upwards to mesh with the rack, but with sufficient force, it can be pushed down to release the rack and allow it to shoot forward.

Pivoted Pinion Gears

Ratchet Mechanism

The ratchet mechanism allows the pinion to turn freely clockwise (…when pulling back the rack), but when the pinion attempts to turn counter-clockwise (…forward direction), the pawl will engage, causing the pinion to push itself downwards instead. This disengages the pinion from the rack, allowing it to shoot forward and launch the ball.

Ratchet Mechanism


As expected, the launcher’s performance is underwhelming; the ball can’t travel more than a few centimeters before hitting the ground. But as a proof-of-concept, it demonstrates that the control mechanism used in the simulator is viable in real life.

To improve performance, we can increase the number of rubber bands. Increasing the length of the rack to allow the rubber bands to be stretched more could help, but that may also worsen performance by increasing the amount of dead weight that needs to be accelerated forward. If the velocity is increased, it may also be a good idea to add some kind of damper at the front to prevent damages to the plastic parts.

If you managed to build a better launcher with the same control scheme, send me a video and I’ll link to it here.

Water Rockets with micro:bit

We didn’t plan on running any holiday programmes in March this year, but a group of parents requested for it, so we came up with the idea of combining water rockets with micro:bits. The micro:bit is used to measure flight acceleration, and can also be used to measure flight time.

In the morning, the kids learned about how rockets work and tested different stabilizing fins designs. Then after lunch, they constructed their rocket, programmed the micro:bits, and drop-tested it before the actual launch. We didn’t have time during this one-day programme for everyone to construct their own launcher, so we used one that we’ve built the day before.

Solar Eclipse 2019

On 26 Dec 2019, Singapore experienced an annular eclipse. As a service to the community, we ran a free programme open to the public. Had a good turnout with about a dozen kids, and a surprising number of adults from the nearby businesses joined in as well.

We started with the science behind solar eclipses (slides are here if you want to use it for your own eclipse activities)…

Everyone built their own pinhole viewers…

…but the one I prepared was a little bigger than the rest…

…bigger viewers produces a larger image

We mounted a few Shade 12 welding glasses to cardboard frames for direct viewing…

As well as some lenses and mirrors for projection onto a wall…

…a big hit for photo taking

A micro:bit was used to track and generate a live plot of the light level as the eclipse progresses. Didn’t take any photos of the micro:bit setup, but we wrapped it with some packing foam to diffuse and attenuate the light.

Light level reached a minimum at around 1330H, before rising again. The frequent short and steep dips are due to cloud cover.

Looking forward to the next one in 2063!

Marine Expedition (Nov 2019)

This is our second run of the Marine Expedition programme. This time, the kids’ creation includes…

Pentamaran with 2 fans and 4 paddles

All directional fan boat with a catamaran base

Doggy paddle boat (…with two hidden waterjets)

Marine Expedition Completed!

The Marine Expedition Sept program is now over! But we’ll be running more programs during the year end holidays, so watch this space for updates, or better still, drop us an email and we’ll notify you when the programs are ready for registration.

You’ve already seen the boats that our participants built, so here’s a photo of a hydraulically controlled panther that was built by another participant.

Music with water and micro:bit!

An explosive end to our electrolysis experiment.

Marine Expedition Preview

We had a preview run of the Marine Expedition programme for our regular students who couldn’t make it for the Sept camp. One of our students designed and built this trimaran, driven by a centrifugal pump jet and controlled with a micro:bit.

The pump jet is rather under-powered for the size of the boat, but it’s low power demands and easy installation makes it a good choice for use as station keeping or maneuvering thrusters. Other choices for boat propulsions includes propellers, paddle wheels, fans, and many more.

If you would like to join the Marine Expedition programme, there are still a few days left to sign up here. We also do fun and educational stuff like this and more during our regular classes. Contact us to find out more.

Volunteering at Boys Town

Robotics can be a useful gateway to building up an interest in STEM subjects among kids, but it is also a great way to engage with at-risk youth.

Last week, Yoni and I visited Boys’ Town at Upper Bukit Timah to conduct a one-day course on Lego robotics. I haven’t done any volunteer work in a while – been too busy (…excuses; I know…) – and it was a great way to get started again. After a brief stumbling around due to a Google Maps error, I found myself in a small computer lab with 6 shelter kids sharing 3 Lego EV3 sets.

Getting Started

The kids were energetic but well-behaved. Learn fast too! The first challenge we set for them was to build a simple wheeled robot, but one of the teams chose to build a much more challenging four-legged “Puppy” instead. I’ve always believed in encouraging kids to find their own interest and direction, and am glad to see them taking the initiative to choose a different path. The other two teams are no slouches either, and were adding new mechanisms and decorations to their basic robot.

The most fun was had with the programming challenge. The kids had to race their robots around a bend, and were constantly measuring the distance and refining their program to get the best timing. One team found the trick of using a bigger wheel, but it didn’t take long for the others to learn the same.

A Pungent Interruption

It so happened that it was harvest time for the durian tree in the Boys’ Town compound, and a durian party was planned for in the afternoon. Robot may be fun, but durians are irresistible… although not for me, as I’m one of the rare few Singaporeans who can’t stand the smell. Still, I’m not so cruel as to deny the kids their durians, so we took a few minutes away from the robots to enjoy the party.

Flying Robots

Yoni also brought along a Parrot Mambo Minidrone for the kids to try out, and it was also my first time having a hands-on experience with that particular model. With it’s height and horizontal movement sensors, it had amazing stability for a drone of its size and price; leagues ahead of my old Hubsan. For teaching STEM, it’s not as good a platform as an EV3 or a micro:bit; the limited input and output capabilities restrict the complexity of the program that can be written. Nevertheless, the kids had great fun programming the drone, and learned a bit about sequencing and movements in the process.

Incredible Experience

The unexpected interruption with the durians left us with less time than planned, but the kids still managed to achieve most of the challenges. Most of them managed to complete the “Search and Locate” challenge, and were making good progress towards the “Grab and Go” challenge. It was amazing watching the kids experimenting, discussing, thinking and concentrating, it’s what robotics does best; getting kids engaged in learning.

The session would not have been possible without the kind support of the Boys’ Town staff (…sorry for the sticky tape marks on the floor!). Both Yoni and I would love to help out again and will be looking forward to our next visit.

Like to join us in our volunteer sessions? Have the right STEM skills, want to do volunteer work, but don’t want or don’t have the resources to do it alone? We organize volunteer STEM courses whenever we can and will be happy to have you join us. We welcome everyone, from students to experienced robotics trainers.  Just drop us a mail at info@aposteriori.com.sg