RC boat For A Mini Ocean Research
- Chris Wong
- Oct 13, 2025
- 2 min read
Overview
In Part 1 we connected the motor, ESC, servo, and receiver to build a functioning RC boat. Now it’s time to make it smart. In this post we’ll add an Arduino‑based payload that gathers useful environmental data such as temperature, salinity, pH, turbidity, and even GPS location—turning your hobby craft into a compact autonomous ocean monitor.

1️⃣ Core Components
Component | Example Part | Purpose |
Microcontroller | Arduino Uno / Nano / ESP32 | Reads sensors & logs data |
SD Card Module | MicroSD breakout | Stores sensor readings |
Voltage Regulator | 5 V buck converter | Steps down battery voltage for Arduino |
GPS Module | NEO‑6M or UBlox M8N | Records coordinates |
DS18B20 (Waterproof) | One Wire probe | Measures water temperature |
EC Sensor | Gravity EC / TDS Kit | Estimates salinity |
pH Sensor | Analog pH Board + probe | Acidity/base level |
Turbidity Sensor | SEN0189 or similar | Water clarity / sediment |
Optional: DO Sensor | Gravity DO probe | Dissolved oxygen content |
2️⃣ Wiring the System
Use the boat’s main Li‑Po battery as the single power source. A buck converter provides a clean 5 V output for the electronics.
[Lipo Battery]
├─> ESC → Motor
├─> ESC (BEC) → Receiver → Servo (rudder)
└─> Buck Converter (5 V) → Arduino + Sensors
├─> Temp Sensor (DS18B20)
├─> EC / TDS Sensor
├─> pH Sensor
├─> GPS Module
├─> Turbidity Sensor
└─> SD Card Module
Keep the grounds common between ESC and Arduino, and isolate motor noise using capacitors or ferrite beads. Mount sensors away from the prop wash for cleaner readings.
3️⃣ Sample Arduino Sketch
Start simple—just collect temperature data before adding more sensors:
// Example: Read water temperature from DS18B20
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(9600);
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
float tempC = sensors.getTempCByIndex(0);
Serial.print("Water Temp: ");
Serial.print(tempC);
Serial.println(" °C");
delay(2000);
}
Once verified, integrate additional sensors one by one. Each reading can be appended to a CSV file on the SD card: timestamp, lat, lon, temp, pH, EC, turbidity.
4️⃣ Logging Data
Use millis() to timestamp values at regular intervals.
Include GPS coordinates in every record to map readings later.
Protect your SD card module with silicone or a printed housing.
Optionally send live data via ESP32 Wi‑Fi / LoRa to a shore station.
5️⃣ What to Do with the Data
After the mission, remove the SD card and import the CSV into Excel, Python, or QGIS. Plot temperature and salinity vs location, or generate color heatmaps of the surveyed area. These datasets are extremely useful for:
Recording small‑scale ocean temperature gradients
Monitoring pH shifts near coastal runoff
Identifying zones of high turbidity after storms
Tracking pollution or freshwater mixing events
6️⃣ Tips for Field Use
Waterproof all electronics with conformal coating or epoxy cases.
Use corrosion‑resistant connectors (stainless or gold‑plated pins).
Keep sensor cables short to reduce noise pickup.
Balance the boat — payload weight should stay centered and low.
Log battery voltage so you know when to return to shore safely.
7️⃣ Expanding the Mission
With your Arduino payload complete, you can upgrade to autonomy by adding a compass + IMU (e.g., MPU6050) or waypoint navigation using an ESP32 or Pi. From there, you’ll have built a true Uncrewed Surface Vehicle (USV) capable of repeated environmental surveys.



Comments