DeepPlankter - Autonomous Drone Boat

An open-source wave propelled / wing propelled drone boat that can sail in the ocean for months and travel thousands of miles.

Similar projects worth following
An autonomous wave and wind propelled drone boat.

It uses free energy in the surrounding environment to sail for a very long distance. It relies on in-air free-rotate wing and the underwater wings to provide propulsion and solar panels to power the onboard electronics.


An autonomous wave and wind propelled drone boat.

It uses free energy in the surrounding environment to sail for a very long distance. It relies on in-air free-rotate wing and the underwater wings to provide propulsion and solar panels to power the onboard electronics.

See Github repo for the latest log:


  • The source code of navigation controller firmware will be hosted in its own repo (Not yet public)

  • Communication protocols and the remote control App/Website are NOT opensourced because of safety reasons.


PCB file can be found in PCB folder.

The boat controller:

  • Dimension: 80 x 100 mm
  • MCU: STM32H7A3ZI, 280MHz, 1MB SRAM, 2MB Flash.
  • NorFlash
  • RTC


  • IMU: BMI088
  • e-compass: HMC5883L
  • Environment sensor: BME280 (humidity, atmospheric pressure, temperature)

Power supplies:

  • DC/DC LMR33640, 5.1V, 4A (max) x 3 controlled channels.
  • DC/DC LMR33640, 3.3V, 4A (max) x 2 controlled channels.
  • 2 battery connectors
  • 2 charging connectors.

Extension IOs:

  • 2 x 2P NTC (for each battery)
  • 1 x 2P ADC
  • 1 x 2P External LED (Flash light)
  • 1 x 2P External Buzzer
  • 3 x 6P UART (marked TELE1, TELE2, main GPS)
  • 2 x 4P UART
  • 2 x 8P SPI (MISO, MOSI, SCK, CS1, CS2, IO)
  • 2 x 4P I2C (same PHY)
  • 1 x 4P FDCAN
  • 1 x USBD
  • 1 x 24P FPC DCMI camera interface (for OV2640)
  • 1 x 8P FPC and 2x4 rows debugging port (SWD + UART)
  • 1 x SDCard slot (SDIO)

Battery, solar panels and MPPT chargers

  • Battery 1: 18650 1500mAh 2S 9P
  • Battery 2: 18650 1500mAh 2S 9P
  • Panel set 1: 12V 160mA 4P
  • Panel set 2: 12V 160mA 4P
  • MPPT charger: BQ24650 model x 2
  • 2S over current protector and balance x 2
  • NTC x 2

The power of the whole boat is purely supplied by solar panels. We need to ensure the main controller never run out of power. The power distribution is managed by the main controller board. 8 panels are grouped into 2 set with 4 panels in each set. Each set of panels charge one battery through an independent MPPT charger and is balanced by an independent protect board. The power from the 2 batteries finally merges to a power rail through 2 ideal diode circuits. Then the power can be distributed by the main controller board.

The voltage and current of each charging circuit and battery are monitored.

Energy estimation

Each panel is rated 12V@160mA. In a sunny April day noontime, the maximum current measured is 10.5V@120mA when laying flat (simulate the angle on the boat).

So the peak power is around 1.25W for each panel. 8 of them can generate 10W.

But there are efficiency drops due to DC/DC converter and the battery charging efficiency. We assume it is around 0.8, so the peak power to charge the battery is 8W.

The peak power multiple by the term, "peak sun hours", is the energy that is generated per day. For example, per this blog, in the UK summertime, the peak sum hour is 5 hours, while in the winter, the number drops to 0.5 hours, so the power generated per day is around 40wh to 4wh.

The average daily solar insolation in units of kWh/m2 per day is sometimes referred to as "peak sun hours". The term "peak sun hours" refers to the solar insolation which a particular location would receive if the sun were shining at its maximum value for a certain number of hours.

Sailing during the winter is definitely a nightmare for the boat no matter how big the battery is, it will be drained out very soon if we don't cut off the power to every module or put them into sleep mode.

We have 2 battery sets, each can store around 100Wh. It needs 5 sunny days to fully charge.

Both batteries together can supply a 1W consumption (3.3V 300mA) for a good week until the next sunny day. Or 0.2W (3.3V 60mA)for a month.


Jianjia Ma


  • First experiment at Setley Pond

    Jianjia Ma03/09/2022 at 09:38 1 comment

    Did an experiment at Setley Pond, New Forest this Sunday afternoon 7th March 2022.

    In this experiment, I would test a few different things. Including

    • manual control and motor drive.
    • underwater wings. (cancelled, due to no wave)
    • waypoint mission. (cancelled, due to low rudder effectiveness)

    As you expected, this experiment wasn't going well. Fortunately, the boat floated and recovered. Also, data are recorded so we have something to analysis.

    The motor can really push the quite fast, even the throttle has been limited to 50%. The motor consume around 5 Amp current at 50% throttle. When I pushed the throttle fully from the App (50%), I am quite worry about the boat sinking into the water and become a submarine... Beside the boat was not being able to turn, it is really fun to play with.


    Trying to plot the GNSS location in a map, but due to the EMC problem that discuss below, the GNSS can only be located by 4-5 satellites during the trial, the accuracy is pretty low, the path is meaningless.

    In the next sessions, I will show the issues that found during the experiment and some of the solutions.


    EMC issue

    At the experiment, all antennas are placed in the bridge at the tail of the boat.

    SIM800C's antenna is placed closed to LoRa's antenna, even in the same direction. What makes things even worst is they are working at a similar frequency band 800/900M for GSM and 868M for LoRa. It was ok during the home test because the city area has better cellular coverage so the GSM module won't emit too much power. But in the rural, it starts to emit more power so the LoRa is now struggling to send/receive data.

    GPS module also suffered from the GSM module's RF. From the data it recorded, I can see there is only 5 satellites connections when the boat was on the surface of the water, where the signal is weaker. But when I recovered the boat and raised the boat to my car's boot, then it can see 10+ satellites.

    The potential solution is to move the GSM module and its antenna to the bow of the boat.

    For the Iridium, I think it will be ok to stay at the tail bridge because it won't be activated too much.

    The GSM module cannot be placed at the mat because the QingStation uses BME280 for pressure and humidity measurement, which is RF sensitive.


    Water leaking issue

    There was a half cup of water found after I returned home. It is fortunate that I remove the battery from the controller board before I set off. I had to dry out the batteries because they are wet.

    I think it might come from some screw holes that I did not put a screw in. Hopefully, I can fix that later.

    Servo found dead

    One of the servos, servo 1, left rudder, was found dead just before deploying the boat. I supply direct battery voltage to the servo, which is 8V currently, the Servo's working voltage was rated at 4.8 to 7.2V. Looks like it burned out the servo. I disassembled the dead servo but couldn't find a burning spot on the controlling PCB. The reason of the failure remains unclear.

    I order a few mini-360 step-down DC/DC boards to lower the voltage and a new servo to replace the dead one. I would set the voltage to 5.5V. The recorded peak working current for these servos is less than 1A. I believe the small DCDC board can handle the servo's current.

    Low rudder effectiveness

    This issue is partially related to the dead servo, but also the length of the rudder is underestimated. I did try to build an extended rudder that can stick on the existing rudder which I brought long time ago designed for RC boat.

    The range of servo is set to +-30 degree, which seems too narrow. It is now increased to +-60. The actual angle that the rudder can turn is...

    Read more »

  • Navigation for wing sailing

    Jianjia Ma02/23/2022 at 22:14 0 comments


    Navigation is a challenge for a small boat like DeepPlankter.

    • The ship might equip with a free-rotated wing. Headwind and tailwind will generate little-to-no force. The boat needs to offset to the wind direction.
    • The propulsion (from wing or wave) is small and unstable. It can even be pushed back by wind or sea current. The navigation should be able to drive the boat back in this situation.
    • The boat cruising speed is very low.


    The source code is available in the dedicated navi-sim repo

    To ensure the navigation algorithm works as expected, I actually build a 2-D simulator out of Processing 3. Processing 3 is basically a java graphical lib with some customized interfaces. This simulator is extremely helpful for me to develop a navigation algorithm.

    Up until today, it has the features below:

    • Ture earth coordination
    • Dynamic wind simulation [direction, wind guest, wind speed]
    • Dynamic sea current [direction, speed]
    • Drag
    • Boat physical model
    • Interactive waypoint
    • Time wrapping

    Although most of them are very simple, they still can cover the most extreme situations such as strong wind, guest wind and strong current.


    Navigation strategy

    Different drone navigations algorithm have been widely implemented on many open source flight controllers. Actually, most of the opensource flight controllers use the so-called L1 navigation algorithm (original paper) or its variances. It is robust and has already been validated by a lot of experienced users.

    The most significant principle for L1 is it uses the term "the acceleration back to track" (a_s_cmd) as the key parameter to control the course correction. Also, in many L1 implementations, they assume that η is a very small number so sine can be replaced by linear functions. L1 give drones a very good track following method no matter the track is a line or a curve. It is also very simple to tune because there is only one parameter called L1, which define many things. Such as the track width, the damper for the stay on track acceleration, the length of line-of-sign to track, and others. Here is the L1 principle (figure copyright belong to the paper author).

    The question for me is whether I should implement L1 or develop a specific algorithm for the boat. There are some considerations:

    • Compared to air drones or rovers, the boat I built is aimed to low speed ( < 2knots) but also at very large scale waypoints (10-100km). The "stay in track" capability is not very helpful since the track can be very wide(100m or ~km).

    • The navigation should also implement the zigzagging algorithm when the boat is heading into the wind direction or away from the wind direction. Otherwise, the air wing give us little to no propulsion or even drag.

    • The boat will also likely be in extreme situations such as strong wind and current in a storm. It is not clear whether the L1 can handle that. (not sure my algorithm can either)

    • L1 use only one parameter to define many terms that are used in the algorithm. This is not very feasible for this boat navigation situation.

    To sum up, using L1 here will not be ideal, since we are not taking advantage of the following track or the simplified parameter setting. Instead, we still need to have finer tuning parameters such as track width and others.

    We are more interested in large scale direction, for example, the path width can be 100 metres or ~km when in the ocean. Compared to these distances, the boat speed or accelerations seem very small. It is unnecessary to wake up the actuators to do a small correction. We only care about whether the boat is heading toward the right direction in a long time scale (minutes or hours.)

    Track following

    However, track following is still needed, as the distance between the waypoints can be too long, simply heading to the target waypoint will have very limited resistance to interference such as wind and current. What we don't want is not try too hard to get back to the track, which consumes...

    Read more »

  • The underwater wings

    Jianjia Ma02/17/2022 at 02:04 0 comments

    The underwater wings are to convert the vertical motion (wave) of the hull to small forward propulsion. So the boat can sail forward without the need for energy.

    I was planned to build the wing core from wood pieces. Cut the shape, then sand it down to streamline. But later I decided to let the 3d printer build the core. There are some issues with 3d printed parts.

    • The PLA materials that 3d printer used might degrade in salt water ( which is not, later confirmed by research paper. )

    • PLA can crack easily.

    • If we reinforce with glassfibre and epoxy, the epoxy has difficulty to glue on epoxy.

    To solve the second problem, we use a tough PLA to print the main part. For the third problem, I planned to use rough sand paper to sand it down and leave more scratches for the epoxy to grab on.

    I didn't use a standard airfoil on the underwater wing but built from my own experience from RC planes. The airfoil is symmetric so it should perform the same for both upward and downward directions. It also has a small wing tip to lower the drag from induced drag (not sure whether this is useful but looks cool. )



    Underwater wings are normally spring-loaded so the wing can work efficiently during different vertical motions. This paper by University of Southampton has thoroughly investigated the speed and different underwater setup.


    Although, high springs loaded wing will produce faster speed when the wave frequency match the wing design. Load springs load has a much wider working range. However, the above data are from their testing design, in which wing has a larger chord (see the original paper for details).

    I don't plan to use springs on the wings. It is hard to match springs. Also, I don't think it is necessary since our wing has a short chord, so it should turn to its maximum positive or negative angel very quickly where propulsion is generated.

    If this doesn't work well, I will consider adding springs.


    Today, the wings core are printed.




    A 4 mm stainless steel axis is used. All weight and lift are loaded on the axis. This is where the wing will rotate on. This location is at the ahead of the lift centre, so the wing will lead to the vertical movement and covert the lift to the forward force.



    The next step is to glassfibre this wing and the supported mount.

    To be continued.

  • Building the hull

    Jianjia Ma02/12/2022 at 12:41 0 comments

    Hull building

    I have almost zero experience in designing neither building a boat hull. During the building, I made quite a few mistakes. But finally, something was built...

    Hull designing

    There are some points that need to take care of when designing the hull.

    • The hull should be as skinny as possible. To lower the drag, also allow my 3D printer to print the segment (<18cm diameter).
    • However, the deck area should be large enough to hold as many solar panels as possible.

    A smaller boat requires fewer materials to build, which will always lower the cost. So I basically designed the deck that can host the minimum number of required solar panels. A single panel size 11 x 13cm, generate a peak power of 2W. Per the preliminary calculation, we will need at least 8 of them.

    Since the boat will sail at a lower speed (< 2knots), a small displacement hull is enough. Here is the design.


    • Total buoyancy: ~15kg

    • Displacement: ~8kg

    • Length: 1140mm

    • Width: 140mm

    • Height: 90mm

    The hull has almost the same 140mm width for 90% of the length. Allows the panels to lay on most of the deck evenly. The front of the hull underwater part is a typical displacement hull design. I didn't pursue a narrow tip which is normally used in high-speed hull or RC model sailing boats. Because we still need a large top for the panels and the boat is too small which will easily be submerged in the incoming wave.

    Also, the large top also increases the buoyancy when submerged in a wave. This increase the instability in a normal boat hull, which is not a good choice. However, with wave propelled wings, the increased tip buoyancy will lead to more lift on the front underwater wings. Thus, it should provide more propulsion. The lift loaded on the wing stabilized the boat.

    The tail design also follows a similar principle of steep buoyancy change, with the bottom of the hull (at the end) being raised near the waterline. When a wave comes, the buoyancy will increase very quickly to pull up the tail underwater wing. At the tail, there was also a motor mount and the hull stick out for protecting the motor. But later found this is not a good design.


    We will have 2 rudders (for backup). Rudders are offset to the side by 15 degrees. It was meant for better steering during sailing. When the wind hit the air wing, the lift of the air wing will not only generate propulsion but also a side force (actually, the side force will be larger than propulsion most of the time). The side force will cause the boat to roll quite much. The offset rudder will be more effective compared to the regular rudder.

    Hull building

    After some search online, I decided to build the hull with epoxy and fibreglass. So I brought some 300gsm fibre chopped strands, 300 gsm cloth and 1kg epoxy.

    I don't want to build a mould because it is too complex for me to do. I decided to print the hull using my 3D printer, then glue them together. Then apply a 3mm fibreglass-epoxy on the outside. Then sand down the surface to make it smooth.

    The plan sounds ok but ends up with a lot of trouble!

    • First, the fibreglass chopped strands and cloth are too rough for a small boat like this. They cannot easily band during the corners. I have to keep bending it during the final curing hours. But the result is still not perfect. It also result in quite a lot of bubbles after I remove the 3D printing part. It might result in leaking water!

    • Second, the epoxy is refused to glue on my 3D-Printing materials (PLA+). The connection is not strong enough. PLA can be torn off into large pieces.

    • Third, the surface is not perfectly smooth. Epoxy did a great job for self-smoothing but the cloth is too rough, making it impossible to sand down. I have to buy another roll of 100 gsm fibreglass cloth to do a final layer and a coating epoxy layer.

    Fortunately, the structure are firm enough. I can even stand on the hull. The final coating also filled in the small bubbles.

    3D Printing

    Printing the bow section...

    Read more »

View all 4 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates