Explore the High Seas with This Autonomous 3D-Printed Watercraft

The Opa 3D-printed boat is able to navigate bodies of water autonomously with just a Raspberry Pi and an Arduino Mega.

The idea

All the way back in 2019, Redditor wesgood had the idea to create a miniature boat/pontoon that could not only float along a lake, but also steer and do so on its own. Apart from generating enough thrust to move forward and steer, this watercraft would need a way to plot its position and communicate with a remote operator across a large distance.

An early prototype

To begin this project, Wes tried designing a simple 3D model, which had a pair of struts and pontoons attached underneath a central platform for extra rigidity. But after spending nearly $100 on the print and performing some tests, it was discovered that there were some improvements that needed to be made first.

Designing and building a second hull

For this second round of engineering, the design began by exploring various options for generating forward momentum, but eventually, a pair of water jet pumps were decided on due to their compact size and because they removed the need for an external rudder. Each pontoon therefore would have to hold one of these pumps, and to reduce cost, a PVC pipe was selected as the housing. Along with the pipe, a couple of end caps were printed and glued to the fronts in order to give a smooth surface and reduce the drag as they move through the water.

Just like the previous design, slightly beefier struts were 3D-printed and attached to both pontoons using brass inserts and machine screws for an extra strong connection. Finally, the central platform was screwed into place.

Jet propulsion

Opting to integrate a couple of jet pumps rather than a more traditional propeller system presented its own set of unique challenges. The ones Wes went with are essentially comprised of a single 7.2V DC motor that is connected to an impeller. As it spins, the impeller draws up water through the hole underneath and rapidly shoots it out from the back. However, this can cause the craft to become slightly unstable and even leak water into the pontoons, so Wes had to add silicone sealant during the assembly process to ensure this would not be the case.

Electronic components

After finishing the boat's hull, it was then time to focus on the intelligence of the craft, namely the navigation and control circuitry. For motor control, both pumps were connected to a single 3A dual-motor driver module that takes a lower-voltage PWM signal and boosts it to one the motors require. A 9-DoF IMU was added to take continuous readings of the boat's tilt, acceleration, and orientation via the magnetometer. Both the motor driver and IMU were then connected to an Arduino Mega 2560, along with a pair of voltage/current sensors for measuring the remaining battery life. Finally, a Raspberry Pi 2 running Ubuntu Server was added, which connects to both the Arduino Mega 2560 and a GPS receiver for handling high-level functions.

Creating a custom PCB

To clean up the circuitry and make it far more compact, Wes designed and assembled a custom PCB, which slots on top of the Arduino Mega 2560 and acts as a shield. It has connectors for the motor driver, voltage/current sensors, and a few I2C headers for potential expansions in the future. It even has a small status LED that lets users know when the boat is powered on.

Putting it all together

With all of the components ready, Wes started to assemble the craft together. First, he attached all of the electronic components to a solid 3D-printed plate that has several standoffs for mounting. Next, the two pontoons were screwed onto the struts and capped at both ends with either the pump or end cap. Finally, a cover was added to the top, which sealed off batteries and sensitive electronics from coming into contact with the water.

Navigation software

The final stage of this project involved loading software that could allow users to view telemetry and control the robot. Wes's mobile app has several widgets that lets him see the current position given by GPS on a map, the power going to the motors at any one time, pitch, roll, and the heading, and a virtual joystick to adjust the speed and direction of the craft.

There is even a way to plot waypoints and have the robot automatically pivot to match the correct heading and eventually follow them to the end.

For more information about this project, you can view Wes's detailed writeup here in this Imgur gallery.

Arduino “having11” Guy
20 year-old IoT and embedded systems enthusiast. Also produce content for Hackster.io and love working on projects and sharing knowledge.
Latest articles
Sponsored articles
Related articles
Latest articles
Read more
Related articles