Smart Buoy — Waterproofing, Dashboards and Deploy 🚱📊

T3ch Flicks
Nerd For Tech
Published in
8 min readMar 13, 2021


This Smart Buoy series charts our (ambitious) attempt to build a scientific buoy that can take meaningful measurements about the sea using off-the-shelf products. This is our final tutorial— make sure you’re up to date, and if you need a swift introduction to the project, check out our summary.
Part 1: Making wave and temperature measurements
Part 2: GPS, Radio (NRF24) and SD Card Module
Part 3: Scheduling Power to the Buoy

In this article, we show you how we designed the casing to protect our Smart Buoy from water, waves and shark attacks. We also explain how we connected it to the base station, which hosted a database and interactive dashboard to explore data in real time.


As this is the final stage for the project, you’re going to need ALL the supplies:

🔗 Get The Smart Buoy Code On Github 📔

Tutorial 🤖

Casing — Buoy

When we designed the Buoy, we had a couple of key things in mind: it needed to fit all the electronics inside, have slots for the solar panels, radio aerial and water temperature sensor. It also needed(!!) to be watertight and float. It also required an anchor point, so it wouldn’t just float away.

We used Autodesk Fusion 360 software to design the Buoy and we’re pretty happy with how it turned out. However, we shot ourselves in the foot slightly by not including a sealable slot for programming the Arduino, and were at the mercy of getting everything working perfectly before we glued it together.

Casing — Base station

The Buoy communicated via radio and the messages were received by a base station. In the previous tutorials, we used the radio module with an Arduino for simplicity. The base station used a Raspberry Pi, which connected in the same way but allowed for much more processing.

There are many great open source cases on Thingiverse, including this one that prints in one piece and has cut outs for wiring.

One Piece Raspberry Pi Zero Case — Source

Print — Buoy

3D printing is great fun but also time consuming and rage-inducing. Luckily, however, some people are much more experienced than we were and were quite helpful. Thanks to reddit user @dbcottonhead, we looked into PETG filament, which is meant to be much more durable and creates stronger shells. These are important things to take into account when making something that is expected to float in a salty sea in 40°C sun, while possibly smashing into some rocks…

To ensure waterproofing, our main focus was on layer adhesion:

  • Thin layer heights of 0.3mm helped reduce the size of gaps
  • 4 perimeters to reduce possibility of gaps and give wall strength

A completely solid Buoy would be watertight, but it also wouldn't float as the density of PETG is higher than that of water. We chose to have a 15% infill on the print.

Each half took around 24 hours to print and used 500g of PETG. The finished print was quite smooth, but with the stringiness and blobs you would expect when using PETG with FDM printing.


Even with careful initial planning and our attempts to improve layer adhesion, the Buoy wasn’t watertight. We started our post-production processing by sanding with various layers of quite rough grit.

We then sprayed over this uniformly rough surface with a few coats of plastic filler primer paint to fill the gaps.

This improved the outer shell, but did not completely remove layer gaps.

The final resort was to add a few coats of Epoxy resin. Epoxy is very durable and gave the Buoy a slight shine.

Solar Panels

The Smart Buoy featured four solar panels equally spaced around its circumference. Each cell was capable of producing 5V at 60mA. A typical Arduino nano requires ~20mA, so we hoped this would be fine for our system. We soldered wires to the rear of the solar panels and connected to the rest of charging system.

We threaded the wires through and then glued the solar panels into water-tight position.

Motherboard — Perfboard

With a lot of determination, solder, and wire, we connected the electronics together on perfboard.

We pushed the radio aerial and water temperature sensors through their respective holes and glued them into position.

The perfboard slotted neatly into the Buoy and we glued it into position.

As we mentioned in tutorial two, we removed the SD card module because it was causing massive headaches.


Logic (and probably science) dictated that the Buoy would float if it was less dense than the water. We believed the Buoy would float. But we didn’t have much trust in its stability.

Many of the buoys available to buy on the market are built such that they are self-righting. We opted for cutting a piece of pipe insulation and sticking it around the circumference of the middle of the Buoy. This had the bonus effect of making the Buoy look UFO-esque, and also potentially offered a bit of protection if any boats decided they wanted a closer look.

Base Station

With all the sensors on board the Buoy, we were able to measure: wave height, wave period, wave power, water temperature, air temperature, air pressure, voltage, current usage and location. These values were sent from the Buoy to the Base Station using the radio modules.

We would have loved to measure wave direction and we were super close to making it work, but it was a massive struggle (have a look at tutorial one to see our pain and confusion in more detail) so in the end we ditched it (please help ❤).


The Smart Buoy dashboard frontend was created using VueJs. We won’t explain is great depth how we did this, but we can show you how to get it going.

The files for this project can be found here ☁️

The live demo can be found here 💽

  • SSH into the Raspberry Pi base station
  • Install dependencies and create DB
  • Download code and create the configuration file .env
  • Add Google Maps Key
  • Start the server

Once the base station begins radio communication with the Buoy, messages are stored in the database as well as streamed users of the real-time dashboard. Navigating to the dashboard home page in your browser, you should see the data streaming in.

The time series of measurements can be viewed simply by toggling the view control on each measurement card. If you want a closer look at the data, the trends page features a graphing tool, which queries the database running on the base station.

Place — Where to put it?

Grenada is a wonderful island in the South Caribbean. The east coast, which faces the Atlantic, typically receives more wave energy than more sheltered western side. The tidal range (distance between high and low tide) is small, meaning the effects of sea level rise are more acutely felt. The increasing frequency and intensity of tropical storms in the Caribbean also poses a worrying threat, and major storms can cause significant damage to coastal areas.

Anyway, enough of that. We looked for somewhere to initially deploy the Buoy, taking into account our knowledge of the island and its coastal regions. An ideal spot needed small but dynamic waves, few rogue fisherman, and be easy for to access… So we initially tested in the pool.

Test Location — Pool

While in Grenada, we also had the chance to talk with a friend who owns a beachfront dive shop. He has his own environmental mission — to create an artificial coral reef — which you can read more about here. We were delighted when he gave us permission to attach our Buoy to one of this lines.

We anchored the Buoy to some others by knotting a piece of rope around the bottom side hook (yes, we’re pretty legit). It didn’t sink. IT WORKED!

Test Location — Sea


The Smart Buoy project has been a great source of learning. We are very happy with the system we have managed to create, especially considering the (self-imposed) time and cost constraints.

However, the Buoy’s purpose was to take meaningful ocean measurements. We only managed to get the Buoy working a few days before we had to leave sunny Grenada. Back in the UK, the seaside is slightly less alluring…Not to say this project won’t continue. We’ve learned a lot, and now we can apply these improvements and hopefully go on another wonderful journey.

Top Improvements

  • Ability to open and reseal the Buoy
  • LoRa ESP32 to replace Arduino in Buoy
  • Data processing on wave measurements on the Buoy

Thanks for Reading

Part 1: Making wave and temperature measurements
Part 2: GPS, Radio (NRF24) and SD Card Module
Part 3: Scheduling Power to the Buoy
Part 4: Waterproofing, Dashboards and Deploy!

We hope you enjoyed this article. If you like the style, check out for more tech-focused educational content as well as all the fun stuff we do on YouTube (Instagram, Facebook, Twitter).