AquaMeteo — IoT Weather Station for Watersports

by mielb in Circuits > Raspberry Pi

50 Views, 0 Favorites, 0 Comments

AquaMeteo — IoT Weather Station for Watersports

IMG20260617193827.jpg
IMG20260617193842.jpg
IMG20260614175713.jpg

AquaMeteo is an IoT weather station built for watersports enthusiasts — kitesurfers, windsurfers, and SUPers. It measures wind speed, wind direction, and water temperature in real time and displays the data on a live web dashboard with an LED ring that shows beach flag colours. Powered by a Raspberry Pi 5(can be downgraded to a cheaper pi),it uses an anemometer, a wind vane, and an NTC thermistor connected through an MCP3008 ADC. All data is stored in MySQL and served via a FastAPI + Socket.IO backend.

Supplies

Main components:


- Raspberry Pi 5 8GB(can be a cheaper pi)

- Anemometer (wind speed sensor, 0-5V)

- Wind direction sensor (wind vane, 0-5V)

- NTC 10K B=3950 thermistor (waterproof IP68)

- MCP3008 ADC (8-channel SPI)

- NeoPixel ring (12 LEDs)

- LCD 16 with I2C adapter (PCF8574)

- Buzzer (active, 5V)

- 12V battery for wind sensors

- momentary push button


Enclosure & build:


- some plastic boxes to fit the cables

- Black spray paint (for enclosure)

- 2x Breadboard (830 points)

- Jumper wires (M-M and M-F, assorted)

- Female 40-pin GPIO header


Resistors & cabling:


- 10kΩ resistors

- 1kΩ resistors

- 2kΩ resistors

- Soldering iron + solder

- USB-C power supply (5V/3A)

Circuit Assembly

Start by connecting the MCP3008 ADC to the Raspberry Pi via SPI. Connect MCP3008 pin CS to GPIO 8, DOUT to GPIO 9, DIN to GPIO 10, and CLK to GPIO 11. Connect VDD and VREF to 3.3V and GND to ground.


Connect the wind direction sensor to CH6 of the MCP3008. This sensor outputs 0-5V analog, so you need a voltage divider: put a 1k ohm resistor in series and a 2k ohm resistor to ground. This steps the voltage down to 0-3.3V for the ADC input.


Connect the NTC thermistor to CH7 of the MCP3008. Use a 3.3V voltage divider with a 10k ohm reference resistor between 3.3V and the NTC to ground.


Connect the anemometer to GPIO 5. This is a reed switch, not an analog sensor. Use a 1k ohm pull-up resistor to 3.3V. Configure the GPIO for falling edge detection.


Connect the NeoPixel ring data input to GPIO 18. Connect power to 5V and ground.


Connect the LCD 16x2 I2C module through the 3.3V logic level shifter. SDA goes to GPIO 2, SCL goes to GPIO 3.


Connect the buzzer to GPIO 24 and ground.


Connect one momentary button between GPIO 6 and ground for starting a measurement. Connect the other between GPIO 12 and ground for safe shutdown.

Database Setup

Screenshot 2026-06-18 101308.png

This project uses MariaDB with a database called aquameteo. The database uses a single measurements table where each sensor type is identified by a DeviceID.


The system has six devices:


Device 1 — Anemometer, measures wind speed in m/s

Device 2 — Wind vane, measures wind direction in degrees

Device 3 — NTC thermistor, measures water temperature in degrees Celsius

Device 4 — NeoPixel ring (12 LEDs), actuator

Device 5 — Buzzer, actuator

Device 6 — LCD 16x2 I2C, display


Other tables store measurement locations and eight watersport types with wind and temperature thresholds.

Software Installation

Clone the repository and follow the instructions in the README:

https://github.com/howest-mct/2025-2026-projectone-mct-BuyseMiel

Enclosure

IMG20260614175713.jpg

Find three plastic or cardboard boxes that are large enough to hold all the components. Spray them black with graffiti paint for a clean, uniform look.


Mount all components on a wooden plank. This serves as a sturdy base so the entire setup does not blow away when measuring wind outside.


Place the LCD on the front so it is readable. Make the NeoPixel ring visible through a cutout or window. Mount the two buttons for start measurement and shutdown where they are easy to reach.


Mount the anemometer and wind vane above the enclosure so they are exposed to the wind. The NTC thermistor goes in the water on its cable. Place the 12V battery next to the plank.


Usage — Live Dashboard

Screenshot 2026-06-18 101714.png
Screenshot 2026-06-18 101723.png
Screenshot 2026-06-18 101812.png
Screenshot 2026-06-18 101830.png
Screenshot 2026-06-18 101852.png
Screenshot 2026-06-18 101900.png

Once assembled and powered on, the weather station starts measuring automatically.


The dashboard shows wind speed in m/s, wind direction in compass degrees, and water temperature in degrees Celsius.


The measurements page shows all historical readings sorted from newest to oldest.


The sports page gives live advice for eight watersports: kitesurfing, windsurfing, SUP, sailing, swimming, fishing, rowing, and surfing.


The NeoPixel ring lights up in the corresponding beach flag colour: green for calm conditions, yellow for moderate conditions, red for strong conditions, and black for dangerous conditions.


The measurement cycle repeats every five minutes by default. Press the start button to force a measurement at any time.