Introduction: Long Range Autonomous Boat

About: We are two young inventors, Kousheek Chakraborty and Satya Schiavina. We like using digital fabrication, electronics and various other fields of knowledge to create projects that focus on simplicity, efficienc…

Recently there have been beach restoration projects in our city and instruments were required to measure the depth of the sea floor at various locations. This process turned out to be tedious and expensive due to the labor costs as well as the expensive equipment. A boat was fitted with various sensors and drove along the coast for hours.

This inspired me to build a small scale autonomous boat to perform the same tasks. The boat could be fitted with the necessary sensors and programmed to drive along a desired path and collect the necessary information. The boat would also consist of a radio based telemetry system so that the health of the boat could be monitored in real time. The boat needs to also have the feature of working autonomously and manually.

Apart from this specific experiment, I wanted to create a platform for a more general requirement, such that sensors could be easily swapped out to perform other experiments. Additionally, the aim was to create a low cost system using recycled parts and materials.

This project was built in collaboration with PCBWay. PCBWay is a PCB Prototype Manufacturer which produces high quality PCBs for projects like these and various other industrial applications at low costs.

Follow on to create your own Long Range Autonomous Boat using recycled materials and reclaimed parts and do drop a favorite and follow this page if you enjoyed the project and decide to build your own version. I would love to see your own versions so do post your creations using the "I made it" section.

Step 1: Materials Needed

Here is the list of all the components and parts required to make your very own Long Range Autonomous Boat. All parts should be commonly available and easy to find in local hardware shops or online.

ELECTRONICS:

  • Arduino Uno x 2
  • BLDC Motor x 2
  • 30A ESC x 2
  • Power Distribution Board x 1
  • 11.1V LiPo Batter x 1
  • 6 Channel Transmitter and Receiver x 1
  • NRF24L01 Transceiver module x 2
  • Compass Module (qmc5883l) x 1
  • GPS module (Neo-6M) x 1

MATERIALS:

  • 2 Liter Water Bottle x 4
  • Plastic Tupperware Container x 1
  • Quadrotor Propellers x 2

TOOLS:

  • X-Acto Knife
  • Hot Glue
  • Super Glue
  • Zip Ties

The materials can easily be recycled or found lying around in the house. The electronic components can be reclaimed from old quadcopter builds.

Step 2: Joining the Bottles

The build process begins with the development of the hull which consists of recycled water bottles. I decided to use 4 two liter water bottles to build a catamaran style hull. A catamaran consists of two parallel hulls of equal size. Each hull was made by hot gluing two water bottles along the bottom edge. Spread a generous amount of hot glue along the bottom of one of the bottles and attach the second bottle to it. Make sure that the two bottles are perfectly aligned and level.

The tapered top of the bottle makes for an ideal design for the hull since it cuts through the water smoothly and creates very little hydrodynamic drag.

Step 3: Building Cross Beams

Once the individual hulls are built, they need to be combined to build the catamaran hull. Begin by placing the Tupperware container between the hulls to determine the gap between the two hulls. Next, I decided to reclaim long and sturdy acrylic pieces from a previous project to build cross beams to connect the two hulls. In your case you could use any object or material that can span across the hull and is sturdy and rigid. I cut slits into the hull and used zip ties to connect the cross beams to the hulls. Repeat this three more times for the rest of the cross beam joints.

In case the joint between the beams and hulls are not sturdy use some super glue and hot glue to reinforce the joint.

Step 4: Mounting the Motor Arms

Once the hull is built, we shift our focus to the electronics compartment. The objective was to mount all electronic components on or within this Tupperware container, this way the design would be modular and if in the future one decided to build a more intricate hull with 3D printing or fiber glassing, the electronics can easily be transferred to the new hull.

The arms that hold the two brushless motors were recycled from an old 3D printed quadcopter. The STL file for this model is attached below. However, 3D printing the arm is not necessary and can be avoided by using a firm piece of recycled plywood and drilling the necessary holes by hand.

Mount the motor onto the arm using the given screws. Next make mounting points on the Tupperware container to attach both arms. Make sure that the arms are attached in such a way that once the propellers are mounted to the shaft of the motor, they do not intersect with the hull or the electronics compartment. Finally attach the two arms to the compartment using nuts and bolts.

The 3D files were downloaded from the following link: https://www.thingiverse.com/thing:629338/files

Step 5: Mounting ESCs and Power System

Once the motors are mounted, the other electronic component required for the motors can be mounted, these include the 2 ESCs and the power distribution board. The 2 ESCs are mounted on the side of the compartment while the power distribution board is mounted to the bottom. Drill small holes into the compartment and pass zip ties through the holes and secure the components to the walls of the compartment.

Step 6: Custom PCB From PCBWay

The primary control circuit of the autonomous boat revolves around a custom PCB designed to hold the Arduino and the various sensors. The Gerber files can be found in step 10, attached in the GitHub repository along with the code.

I ordered my custom PCBs from PCBWay. PCBWay is one of the leading companies in the PCB manufacturing industry providing high-quality PCBs and low costs. PCBWay also provides various other services such as PCB prototyping, SMD stencils, PCB assembly, flexible PCBs, and more advanced PCBs, making it the perfect platform for hobbyists and professionals. Apart from PCBs, they also provide services for 3D printing, CNC, and laser cutting.

To order your own PCBs from PCBWay, go to the PCBWay website and fill in the details regarding your board such as dimensions, thickness, number of layers, silkscreen color, etc. Finally, upload your Gerber files and instantly get a quote.

Once you have reviewed your order, all that is left is to add to the cart, make payment, and wait for your PCBs to arrive.

Step 7: Complete Electronics Compartment

Once the PCBs are built and shipped to you, solder the necessary ports and pins and mount the Arduino, GPS Module, Compass Module, ESCs, Telemetry radio and receiver radio. The PCB also contains a port to check the voltage of the cells of the LiPo battery but this would work only for a 3 cell LiPo.

Note that the Arduino is attached on the opposite side of the sensors, so solder the header pins accordingly.

Step 8: Alternative Method

Alternatively, if you wish to not use the PCB, you can follow the above wiring diagram to connect the components. You could mount the sensor modules on a breadboard and use jumper wires to make the connections. Since the autonomous boat depends largely on data from these sensors to stay on track, we strongly recommend you to use good quality jumper wires.

Note that while mounting the compass module, align the front of the module with the front of the boat.

Step 9: Attaching the Electronics Compartment to the Hull

Once the electronics compartment is built you can mount it onto the hull. I decided to use some industry grade double sided to attach the compartment to the cross beams. Make sure that the propellers do not intersect with the hull. Additionally you could use nuts and bolts to make a stronger joint.

Step 10: Telemetry Receiver

To receive telemetry information from the boat on your laptop or computer, we will require a telemetry receiver which can be built using an Arduino and an NRF24L01 Transceiver module. Connect the transceiver according to the diagram on step 7. I built a handmade PCB out of some perf board and header pins, however this is not required.

Step 11: Uploading the Code

The Gerber files, the Arduino files and the python files can be found in the following GitHub repository.

https://github.com/kousheekc/Long-Range-Autonomous-Surface-Vehicle

The following libraries are required for the Arduino programs and can easily be downloaded from the library manage on the Arduino IDE:

  1. nRF24L01
  2. QMC5883L
  3. TinyGPS
  • The Gerber files can be used to manufacture the custom PCB required for the project.
  • Upload the autonomous_boat.ino file found in the autonomous_boat directory onto the Arduino contained on the boat
  • Upload the telemetry_receiver.ino file found in the telemetry_receiver directory onto the Arduino contained on the receiver

To debug the system:

  1. Power on the transmitter
  2. Connect the LiPo battery to the power port on the power distribution board
  3. Connect the telemetry receiver to your laptop with a USB cable
  4. Open up the Arduino IDE and open the serial monitor

You should receive the telemetry information on the screen. If you receive [ERROR] messages, check the connections on the receiver and boat and try again.

You can run the control_panel.py file in the control_panel directory which creates an organized UI to display the telemetry information and allows you to command the boat to perform various tasks. The details are elaborated on the next step.

Step 12: Controlling and Usage

  • The UI consists of 5 panels, the large panel on the left shows the location and heading of the boat on a map using the GPS information.
  • The control signal panel allows to control various parameters of the boat, you can transmit these values with the send button next to each value.
  • Auto (enable/disable) takes a value of 0 or 1, this value determines whether the boat can function autonomously or manually
  • Max speed takes a value between 1000 and 2000 and sets the max speed that the motors can reach
  • Cruise speed takes a value between 1000 and 2000 and determines the speed at which the boat moves forward
  • Desired heading takes a value between 0 and 360 and determines the angle at which the boat should travel
  • Kp determines the proportional constant for the PID controller
  • Ki determines the integral constant for the PID controller
  • Kd determines the derivative constant for the PID controller
  • Update interval determines the interval at which the telemetry data updates
  • The telemetry signal panel shows the telemetry information received from the boat which includes:
  • Mode (manual/autonomous)
  • Throttle value from the transmitter
  • Rudder value from the transmitter
  • Left motor speed
  • Right motor speed
  • Current heading
  • Latitude
  • Longitude
  • LiPo cell1 voltage
  • LiPo cell2 voltage
  • LiPo cell3 voltage
  • The widgets panel is not yet implemented
  • The debug console prints various error messages that it receives from the boat

The boat can be set in autonomous and manual mode using the channel 6 from the transmitter. I would recommend linking channel 6 on the transmitter to a free switch. This can be done through the menu on the transmitter.

Note that the GPS based waypoint tracking is not yet implemented since it is in its test phases and we do not want to be responsible for damaged equipment.

Step 13: Final Results

Once the programs are uploaded here is a final checklist to use the autonomous boat.

  1. Power on the boat by connecting the LiPo
  2. Power on the transmitter
  3. Connect the telemetry receiver to a free USB port on your laptop
  4. Run control_panel.py
  5. At this point you can use the joystick on your transmitter to control and steer the boat
  6. To go into the autonomous mode:
  7. Change auto to 1
  8. Flip the channel 6 switch on the transmitter
  9. At this point the boat will autonomously track the heading set in the heading value
  10. Vary this value and the boat will automatically track the newest value
  11. You should also receive telemetry information at this point and the left panel will indicate the current heading and desired heading with two lines

The boat is fun to play around with as a toy but can be used for so much more. The autonomous features provide various capabilities to perform various scientific experiments. For example, we plan to mount a sonar sensor to the boat to measure the depth of a lagoon at various points to generate a bathymetry map. We also plan to incorporate a temperature sensor to measure the temperature of the water in a reservoir at various locations to generate a heat map of the region. Apart from scientific experiments, the cheap and sturdy build creates a perfect platform for further development.

Hope you enjoyed this Instructable and it has inspired you to build your own Long Range Autonomous Boat using recycled parts and components. Do share your own versions in the "I made it" section. Apart from that, feedback, questions, comment, concerns can be addressed in the comment section below.

Happy Making!