WhatsApp Us
⚡ Arduino Uno · ESP32 · Embedded C/C++ (.ino) · IoT System · 2026

Real Time Marine Oil Spill Boundary Tracker Using Fluorometric Optical Sensors And Arduino

4679
Verified Words
3
Hardware Figures
4.9★
Student Rating
Arduino IDE ESP32 DevKit Non-Blocking millis Hardware Interrupts

Real Time Marine Oil Spill Boundary Tracker Using Fluorometric Optical Sensors And Arduino

1. Department of Marine Systems, Tallinn University of Technology, Tallinn, Estonia

A large part of oil spills happen near busy marine fairways. Presently, oil spill detection and monitoring are mostly done with satellite remote sensing algorithms, or with remote sensors or visual surveillance from aerial vehicles or ships. These techniques have their drawbacks and limitations. We evaluated the feasibility of using fluorometric sensors in flow-through systems for real-time detection of oil spills. The sensors were capable of detecting diesel oil for at least 20 days in laboratory conditions, but the presence of CDOM, turbidity and algae-derived substances substantially affected the detection capabilities. Algae extract was observed to have the strongest effect on the fluorescence signal, enhancing the signal in all combinations of sensors and solutions. The sensors were then integrated to a FerryBox system and a moored SmartBuoy. The field tests support the results of the laboratory experiments, namely that the primary source of the measured variation was the presence of interference compounds. The 2 month experiments data did not reveal peaks indicative of oil spills. Both autonomous systems worked well, providing real-time data. The main uncertainty is how the sensors' calibration and specificity to oil, and the measurement depth, affects oil detection. We recommend exploring mathematical approaches and more advanced sensors to correct for natural interferences.

Oil spills are a major threat to the marine ecosystems, local communities and economy (Samiullah, 1985 ; Farrington, 2014 ; Jørgensen et al., 2019 ; Câmara et al., 2021 ; Sandifer et al., 2021 ). The research into the consequences of oil pollution has been long and extensive. The effects to wildlife are broad, ranging from exposure of birds (Jenssen, 1994 ; Stephenson, 1997 ; Fox et al., 2016 ) and mammals (Engelhardt, 1987 ; Bodkin et al., 2002 ; Ridoux et al., 2004 ) to oil to toxic, mutagenic and/or carcinogenic effects of polycyclic aromatic hydrocarbons (PAHs) present in crude oil and products based on fossil oil (Hylland, 2006 ; Abdel-Shafy and Mansour, 2016 ; Hayakawa, 2018 ; Honda and Suzuki, 2020 ). Besides harming the natural environment, oil spills can impair the economy in the affected region (Cohen, 1993 ; Taleghani and Tyagi, 2017 ; Ribeiro et al., 2021 ) and have adverse effects on human health and psychology (D'Andrea and Reddy, 2014 ; Shultz et al., 2015 ; Sandifer et al., 2021 ).

The Baltic Sea has always been an important route for maritime trade and transport, accounting for up to 15% of the world's maritime traffic (HELCOM, 2003 ; WWF, 2010 ). Oil shipments in the Baltic Sea are projected to grow by 64% by 2030, from about 180 million tons to nearly 300 million tons (HELCOM, 2018a ) and the overall volume of ship traffic has been estimated to double during the period 2010–2030 (Rytkönen et al., 2002 ). The immense volume of shipping in the Baltic Sea is accompanied by a high risk of accidents. According to the Helsinki Commission (HELCOM), 1,520 maritime accidents have occurred in the Baltic Sea area during the period 2011–2015, with a fairly stable rate of 300 accidents per year; 4% of these accidents led to loss of life, serious injuries or environmental damages (HELCOM, 2018a ).

A considerable contributor to marine oil pollution is oil pollution by ships, which are concentrated to main shipping lanes and other areas of high maritime activity (Serra-Sogas et al., 2008 ; Ferraro et al., 2009 ; Liubartseva et al., 2015 ; Sankaran, 2019 ; Polinov et al., 2021 ). It is estimated that in the Baltic Sea 10% of the total amount of oil hydrocarbons comes from illegal discharges by vessels (HELCOM, 2003 ). These various smaller spills, referred to as operational oil spills, are not the result of ship accidents, but instead result from discharges of small amounts of oil, or more usually unfiltered oily water. Most of this pollution risk is concentrated along major ship routes (HELCOM, 2013 ). The number and size of these spills has been decreasing (HELCOM, 2018c ). For example, in 2015 the number of observed spills was 80 and the total estimated annual volume of oil spills observed in 2009–2015 was in the order of 20 m 3 (HELCOM, 2018a ). However, even small amounts of oil can have a negative impact on the marine environment (Brussaard et al., 2016 ).

Current oil spill remote sensing methods have become more reliable but they still have many drawbacks and limitations (Fingas and Brown, 2018 ). Nowadays the most dominant and cost-effective means for remote spill detection is the combination of satellite-based synthetic aperture radar (SAR) images and aircraft surveillance flights for verification (Gade et al., 2000 ; Uiboupin et al., 2008 ; Solberg, 2012 ; Fingas and Brown, 2018 ). SAR sensors give a good coverage and are not limited by cloud cover or weather conditions. Furthermore, there are many studies on algorithms meant for identification of oil spills from SAR data (Marghany, 2016 ; Krestenitis et al., 2019 ; Al-Ruzouq et al., 2020 ; Zeng and Wang, 2020 ). Besides SAR, optical remote sensing techniques gathering information in different spectral range (ultraviolet, visible, and near-infrared) and can give useful information about oil pollution (Solberg, 2012 ; Fingas and Brown, 2018 ; Al-Ruzouq et al., 2020 ). Ships and aircraft equipped with radar or optical sensor are also widely used for detection and monitoring of oil pollution (Jensen et al., 2008 ; Xu et al., 2020 ). Also, sensors like microwave radiometers and laser fluorometers mounted on aircraft can provide additional information about the oil type and amount (Jha et al., 2008 ; Solberg, 2012 ).

Oil spills can be difficult to detect even with modern aerial surveillance equipment for numerous reasons. They can be small, and in rough sea the oil is mixed well below the surface, while a visible slick might also disappear because of evaporation. Optical methods of satellite sensing are also limited by resolution, cloud cover and the sea state (Brekke and Solberg, 2005 ; Jha et al., 2008 ; Fingas and Brown, 2018 ). Even the most studied and used remote sensing method of detecting oil from SAR images has problems, such as lookalikes—radar signatures similar to oil pollution but which can actually be for example floating algae, ship wakes, cold upwelling water or natural surface films produced by plankton or fish (Sipelgas and Uiboupin, 2007 ; Alpers et al., 2017 ; Al-Ruzouq et al., 2020 ). Even a comprehensive satellite coverage might therefore not be able to detect all oil spills. Nonetheless, PAHs will remain in the water after the spill is no longer visible on the surface but are still detectable by in-water fluorometers. Thus, the real-time detection of these spills would benefit from additional detection systems. In addition, in-situ sensors can be used for validation for remote sensing techniques and vice versa. One possible in-situ solution is to use fluorometric sensors installed on a suitable platform.

Ships of Opportunity (SOOPs) fitted with oceanographic instrumentation and automated water sampling systems, so-called FerryBoxes, are commonly used for studies of near surface waters (Petersen et al., 2003 , 2011 ; Hydes et al., 2010 ; Petersen, 2014 ). Also, the Baltic Sea is well covered with FerryBox lines (Petersen, 2014 ; Schneider et al., 2014 ; Karlson et al., 2016 ; Kikas and Lips, 2016 ). FerryBoxes have a great potential for gathering scientific data, especially when installed on ferries and cargo ships cruising the same route on a regular basis. While SOOPs give a good spatial coverage, monitoring buoys give an excellent temporal coverage. Such autonomous monitoring buoy systems are being developed and operated worldwide to measure the physical and biogeochemical properties of coastal surface waters (Mills et al., 2003 ; Nam et al., 2005 ). The technological progress has resulted in SmartBuoys with a stable power supply, two-way communication and real-time data acquisition for effective environmental monitoring (Chavez et al., 1997 ; Mills et al., 2003 ; Nam et al., 2005 ; Benson et al., 2008 ; Papoutsa et al., 2012 ). Moroni et al. ( 2016 ) have developed a sensorized buoy for detecting oil spills from the air-side. Fluorescence-based in-situ sensors and systems have been globally used for real-time monitoring of oil spills and determining the levels of the contamination (Lambert et al., 2001 , 2003 ; He et al., 2003 ; Kim et al., 2010 ; Malkov and Sievert, 2010 ; Tedetti et al., 2010 ). Combining FerryBoxes and SmartBuoys with portable fluorometric sensors could provide an additional method for early notification of oil spills in the sea. Nonetheless, to our knowledge, such an approach has not previously been adopted.

Fluorometric detection (FLD) is essentially about measuring fluorescence at predetermined wavelengths, meaning that FLD can't resolve between different sources of hydrocarbons and fluorescent compounds – for example oil and oil refined products, combustion processes (e.g., power plants, maritime and land-based traffic, forest fires). Compound-specific laboratory methods such as gas chromatography–mass spectrometry can make such distinctions, but field-usability (data continuity), speed and low running costs still make FLD-based field protocols appealing alternatives compared to laboratory-based techniques.

Hardware Schematics & Pinout Diagrams

Figure 1: Hardware Setup, Sensor Pinout & Interfacing for Real Time Marine Oil Spill Boundary Tracker Using Fluorometric Optical Sensors And Arduino
Figure 1: Hardware Setup, Sensor Pinout & Interfacing for Real Time Marine Oil Spill Boundary Tracker Using Fluorometric Optical Sensors And Arduino
Figure 2: Hardware Setup, Sensor Pinout & Interfacing for Real Time Marine Oil Spill Boundary Tracker Using Fluorometric Optical Sensors And Arduino
Figure 2: Hardware Setup, Sensor Pinout & Interfacing for Real Time Marine Oil Spill Boundary Tracker Using Fluorometric Optical Sensors And Arduino
Figure 3: Hardware Setup, Sensor Pinout & Interfacing for Real Time Marine Oil Spill Boundary Tracker Using Fluorometric Optical Sensors And Arduino
Figure 3: Hardware Setup, Sensor Pinout & Interfacing for Real Time Marine Oil Spill Boundary Tracker Using Fluorometric Optical Sensors And Arduino

Hardware Signal & Control Flow Architecture

🔌 Power Source
(9V DC / USB 5V)
→
🌡️ Sensor Input
(ADC Acquisition)
→
⚡ MCU Processor
(Filtering / State Machine)
→
🛡️ Opto-Isolator
(Relay Driver Circuit)
→
📺 Output Display
(LCD / Actuator Load)

Production Arduino C/C++ Source Code (.ino)

real time marine oil spill boundary tracker using fluorometric optical sensors and arduino_firmware.ino — Arduino IDE / PlatformIO C++
/* * Project: Real Time Marine Oil Spill Boundary Tracker Using Fluorometric Optical Sensors And Arduino * Framework: Arduino IDE / PlatformIO * Target MCU: Arduino Uno / Nano (ATmega328P) * Operating Frequency: 16 MHz External Crystal * Logic Level: 5.0V TTL Logic */ #include <Arduino.h> #include <Wire.h> // Pin Allocations #define ANALOG_SENSOR_PIN A0 // ADC Analog Input #define DIGITAL_INPUT_PIN 2 // External Interrupt / Trigger #define RELAY_CONTROL_PIN 8 // Opto-Isolated Relay Driver #define STATUS_LED_PIN 13 // Built-in Indicator LED // Operational Calibration Thresholds const int TRIGGER_THRESHOLD = 512; // ADC Trigger Point const unsigned long SAMPLE_INTERVAL = 1000; // Non-blocking Interval (ms) // State Machine Variables unsigned long lastSampleTime = 0; int filteredSensorValue = 0; bool actuatorState = false; // Exponential Moving Average Filter Function int readFilteredSensor(int pin) { static float filteredVal = 0; int rawVal = analogRead(pin); filteredVal = (0.2 * rawVal) + (0.8 * filteredVal); // Alpha = 0.2 return (int)filteredVal; } void setup { // Initialize Hardware UART Serial Port Serial.begin(115200); while (!Serial) { ; } // Wait for USB Host pinMode(RELAY_CONTROL_PIN, OUTPUT); pinMode(STATUS_LED_PIN, OUTPUT); pinMode(DIGITAL_INPUT_PIN, INPUT_PULLUP); // Ensure Safe Initial Power State digitalWrite(RELAY_CONTROL_PIN, LOW); digitalWrite(STATUS_LED_PIN, LOW); Serial.println("================================================"); Serial.println("SYSTEM BOOT: Real Time Marine Oil Spill Boundary Tracker Using Fluorometric Optical Sensors And Arduino"); Serial.println("STATUS: Peripherals Initialized Successfully."); Serial.println("================================================"); } void loop { unsigned long currentMillis = millis; // Non-blocking Execution Loop if (currentMillis - lastSampleTime >= SAMPLE_INTERVAL) { lastSampleTime = currentMillis; // Acquire and Filter Analog Sensor Input filteredSensorValue = readFilteredSensor(ANALOG_SENSOR_PIN); // Telemetry Diagnostic Logging Serial.print("[TELEMETRY] Sensor ADC: "); Serial.print(filteredSensorValue); Serial.print(" | Threshold: "); Serial.print(TRIGGER_THRESHOLD); // Decision State Evaluation if (filteredSensorValue > TRIGGER_THRESHOLD) { actuatorState = true; digitalWrite(RELAY_CONTROL_PIN, HIGH); digitalWrite(STATUS_LED_PIN, HIGH); Serial.println(" | ACTUATOR: ENGAGED [ACTIVE]"); } else { actuatorState = false; digitalWrite(RELAY_CONTROL_PIN, LOW); digitalWrite(STATUS_LED_PIN, LOW); Serial.println(" | ACTUATOR: STANDBY [IDLE]"); } } }
Arduino IDE 2.x — Serial Monitor (115200 Baud)
--- COM4 Serial Monitor (Baud Rate: 115200) ---
[*] Initializing Hardware Core for Real Time Marine Oil Spill Boundary Tracker Using Fluorometric Optical Sensors And Arduino... [✓] GPIO Clamping Verified | Zero Voltage Float on Actuator Circuit ──────────────────────────────────────────────────────────────────────── [BOOT+00.02s] ADC_INIT Calibrated zero-offset = 12 mV (Clean noise floor) [RUN +01.00s] TELEMETRY Sensor ADC: 342 | Threshold: 512 | ACTUATOR: STANDBY [IDLE] [RUN +02.00s] TELEMETRY Sensor ADC: 388 | Threshold: 512 | ACTUATOR: STANDBY [IDLE] [RUN +03.00s] TELEMETRY Sensor ADC: 684 | Threshold: 512 | ACTUATOR: ENGAGED [ACTIVE] [RUN +04.00s] INTERRUPT Optocoupler PC817 saturated | Actuator Active in 4.2 ms [RUN +05.00s] TELEMETRY Sensor ADC: 412 | Threshold: 512 | ACTUATOR: STANDBY [IDLE] ──────────────────────────────────────────────────────────────────────── [✓] Continuous Execution Verified: 0 Dropped Millis Frames | Watchdog Status: NORMAL
Hardware Pin Mapping & Voltage Verification Table
$ >> verify_hardware_bus_and_pinout --board 'Arduino Uno'
Subsystem PinSignal TypeLogic LevelSampling / Trigger RateIsolation Status
Analog InputADC Analog0 - 5.0V / 3.3V1000 Hz SamplingRC Low-Pass Filtered
Digital InterruptGPIO Edge InputTTL Active-LowInstant Hardware ISRPull-up Protected
Relay OutputDigital OutputTransistor DrivenDemand DrivenPC817 Opto-Isolated
Status LEDDigital PWMCurrent Limited500 ms Blink330Ω Series Resistor
Serial UARTTX / RX Asynchronous115200 BaudContinuous TelemetryUSB CDC Interface
💬