Our goal is to become the Tesla of the ocean by building self-driving boats. Potential uses include autonomous cargo ships, autonomous yachts, autonomous ferries, and autonomous recreational boats.
We started by using a 3D printer to build a vehicle that was not made to float:
Next, we created our first model boat prototype and tested it in water:
The boat shown in the video above is not autonomous, it is controlled remotely by a phone. But this is the first step in making it self-driving, because that same phone can then be programmed to control it automatically using GPS signals, without the use of a human.
Keep in mind it took James Dyson 5,127 tries to invent his revolutionary vacuum cleaner, and Thomas Edison made over 1,000 unsuccessful attempts at inventing the light bulb before it finally worked. So we are just getting started.
The model boat in the video is made entirely using a 3D printer. Although it is not self-driving, being able to control it remotely is the first step to adding the autonomous part. The next version will carry a cell phone, which will control the boat and allow the user to remotely log in to enter a destination for the boat to go to.
The body of the boat is made of PLA white plastic and was printed on an Anet A8+ 3D printer in one single print. The model itself was designed with Python and OpenSCAD by my programmer (Peter Chervenski) in a Jupyter notebook. He initially modeled only the motor cases and the propellers to ensure a perfect fit and also to measure how much current the motor draws with the propeller on. With that info, he selected two LM317 regulators for each motor (adjusted to output 12V), one 7805 regulator for the NodeMCU, and two TIP31C MOSFET transistors used as relays.
He then built a crude model of the electronics on a breadboard and once it worked, soldered the components on a PCB board to make it permanent. The next step was programming the NodeMCU using a computer over the USB port. The program simply turns on/off two pins on the NodeMCU in response to the command it receives over Bluetooth.
For the remote control part, he wrote an Android app in Java which shows 3 buttons “left”, “right” and “both”. Touching a button turns on the motor, and lifting the finger from the button turns the motor off. Finally, he added an on/off switch for the whole thing, installed and glued the battery box to the body, then the PCB board, connected all wires and it was done.
One of the biggest problems with all of this is that weeks worth of work can be ruined by putting the boat in the water and having the electronics get wet. For the boat you see in our video, duct tape was used in an effort to reduce the probability water would get inside. But that did not work very well (plus a piece of the duct tape got caught in the propellers, making noise) so we need to find a better solution.
Our next version of the boat will actually drive itself, and hopefully not sink.