-
Navigation Software from Scratch
10/31/2016 at 12:45 • 0 commentsExisting open-source solutions for drones were not suitable for this project. Below are the most important points where the boat differs from typical applications:
1) Tilt-Compensated Compass
A small boat is constantly bouncing up and down while riding high waves. Therefore a tilt-compensated compass LSM303D was used to find the correct heading. The compass combines a 3-axis accelerometer and 3-axis magnetometer.
2) Spherical Coordinates
If you fly a drone, you probably don't send it over vast distances across an entire continent. Some flight controllers do calculations by using the Pythagoras theorem, which is valid only on a flat surface. For a greater precision, we need to count in the Earth curvature which is significant for the path across the Atlantic.
3) More Sophisticated Error Correction
If you try to drive a small powerboat in wild ocean conditions, you will find out quite quickly that it's not as easy as driving a car. As the boat is often turned by the waves from side to side, it has to take action by adjusting the rudder, but not too often as the servo would quickly wear out. The servo has to be operational for months! A PID controller has to be implemented to keep the boat in one direction while being friendly to the servo at the same time.
4) Magnetic Declination
Magnetic declination, i.e. the angle between magnetic north and true north, can make a difference by as much as 20 degrees. While it is not absolutely critical for a successful mission, it's worth implementing the World Magnetic Model into the navigation software to measure the heading more precisely. The actual model is a very complex formula with plenty of experimental constants that can change over time. So, I calculated the values of declination on a sphere mesh and stored them in the Arduino flash memory.
-
Electronics and Sensors
10/28/2016 at 10:03 • 0 commentsThe main framework is built from aluminum profiles on top of a surfboard, so the boat will never sink. The boat is balanced by a heavy keel that would flip the boat back over in case it flips. This concept has been chosen for its fast assembly and also because of the ability to make easy modifications. It's more like a proof of concept, with the purpose to test different hardware modules and navigation software before proceeding to a more streamlined design.
The sail is made from ripstop nylon that is reinforced by nylon webbing and carbon fiber tubes.
The main electronic components are contained in a Pelican iM2100 case. They are fully protected by steel boxes in order to resist heavy impacts which can be caused by the ocean waves and delivery guys.
I have read too many horror stories about a leaking Pelican case, so to be extra sure this wouldn't cause me the same problems as others have encountered, I sealed it with silicone prior to the real mission.
The main components are:
- Four 3.2V 36Ah LiFePo4 cells that are being charged by a 100W solar panel. There is also a balance charging PCB connected to the batteries.
- A solar charge controller for charging the batteries. It also protects the batteries from being overcharged or over-discharged.
- A navigation controller made from common hardware: Arduino Mega where the navigation program is loaded. A temperature and humidity sensor, a voltage/current sensor, FRAM memory for data logging, and a watchdog timer (we'll talk about it soon!)
Data Logging
Firstly, the board was designed to record data on a uSD card. However, it has two drawbacks that can be avoided by using a FRAM memory instead:
- SD consumes more power than FRAM.
- If a file gets corrupted, the current SD library holds the program for a few seconds every time it tries to write to the card. File corruption can accidentally happen during low voltage periods or unexpected shutdown during writing. It's not likely, but the risk is not acceptable.
The final decision was adding a FRAM memory chip. The read/write operations are much easier to handle.
Hardware Watchdog Timer
How do you fix a Wi-Fi router or a phone so that it works 99% of the time?
You simply turn it off, and back on. Aside from a typical watchdog timer, the hardware watchdog timer resets the boat every 8 hours. It also listens to the main CPU “heartbeat”, and it resets the boat if the program is not working correctly. Or, if the CPU is idle for 3 minutes. Resetting the boat means that every single component, including the GPS and compass, is being disconnected from the power source for 5 seconds. Arduino Micro is overkill for this purpose. However, it has been chosen as a quick and easy solution. In the next design, I will use an MSP430 or a similar ultra-low-power microcontroller.
As well as sensors being useful for navigation, there are also additional sensors for measuring environmental data:
- Humidity inside the waterproof housing. Even if a small drop of water gets inside the waterproof housing, the humidity will sharply increase.
- The temperature inside the waterproof housing. The batteries, solar charge controller, voltage regulators and the CPU generate heat. So, we need to be careful when the electronics are sealed in a plastic case. Experience has confirmed that overheating is not an issue in the cold waters of the Atlantic Ocean. Even if the case has no heat sink, the inside temperature is only about 4-7 °C (40-45 °F) greater than the outside temperature.
- Water temperature and air temperature. In case the boat flips over, the air temperature and water temperature will replace each other. If someone pulls the boat out of the water, the water temperature sensor will measure the air temperature. If the boat hits a big iceberg, the water temperature will reach a value close to 0 °C (32 °F).
Having all of these fancy sensors on board is not only more fun, but the sensors also tell us a lot of useful information about the boat condition.
The RockBlock and GPS modules are in a separate polycarbonate case for a better signal reception. The compass is also located far enough from the solar panel and anything ferromagnetic.
Rudder
The video below demonstrates the rudder being turned by a servo when the compass is off-course.
Camera
A Git2 action camera is recording a 15-second video every 30 minutes. The camera has been hacked to be powered by the primary battery source and controlled by Arduino.
The video is stored on a 128 GB SD card, and it can be accessed only when the boat is recovered because it is unrealistic to transmit any part of the video over a satellite network (the cost is high and the speed is significantly lower than dial-up).
-
Boat Transportation and Launch
10/27/2016 at 09:16 • 0 commentsOne of the challenges was the logistics of transporting the boat to Newfoundland and launching it far enough from a rocky shore. With this in mind, it has been designed to be easily disassembled and packed into several small packages. The packages were shipped using different courier services to optimize the cost. The boat was assembled in a rented storage space and moved to the harbour in a van.
To get help with the launch, I was talking to random people along the harbour in a small fishing village. It didn't take long until I found a family house with helpful fishermen who had an awesome boat!
During a perfect weather window, we threw the boat overboard about 5.5 km (3.4 miles) from the harbour, leaving it at the mercy of the harsh Atlantic Ocean.