Solea™ Operation Manual SOTIRIA Technology · Version 260220
1. Manufacturer Instructions and Safety Notes
- The device is intended for underwater operation.
- After each deployment, clean the device and its cable with fresh water and mild dish soap. During long deployments, retrieve and repeat cleaning at least once a month.
- Store in a dry environment at room temperature, away from children and flammable materials.
- Do not place the device near strong magnetic fields.
- For optimal operation, do not place near ferromagnetic objects (e.g. steel frames, anchor chains).
- Recommended submersion depth: up to 50 m. Do not submerge beyond 300 m or in corrosive liquids.
- Do not expose to fire or temperatures higher than recommended.
- Do not open the device or modify its hardware or software.
- Do not impact, puncture, or heat the device.
- Do not bend, press or scratch the hydrophone.
- The hydrophone includes an exposed wire connected to device Ground. Do not apply any voltage to this wire.
- For best hydrophone sensitivity, use it when fully submerged.
- Do not connect wires to voltages different from those specified in this manual.
- Do not power outside the range of 7–30 VDC.
- Do not extend the cable or use cable with different specifications.
- Do not pull the device from its cable. Avoid bending or twisting.
- Keep the device as stationary as possible during operation. Use a non-ferromagnetic mounting frame.
- To prevent galvanic corrosion, avoid direct contact of the aluminum enclosure with other metals.
⚠ CAUTION: The device includes a pressure relief valve. Tighten it clockwise by hand before deployment. Otherwise, the device will be flooded and permanently destroyed.
ℹ NOTE: The device includes a resettable (PPTC) fuse. After a short circuit, wait up to 10 minutes before retrying.
2. Device Description
The device includes a magnetic sensor, an acoustic sensor, an Inertial Measurement Unit (IMU) and an environmental sensor (temperature/humidity/pressure), as well as the necessary electronics for edge processing. It can be powered by a 7–30 VDC, ≥1 A power supply and communicates via RS-485 using Modbus RTU registers. Alternatively, a power and communication device (sold separately) can retrieve data via Wi-Fi, 4G, Ethernet, or USB.
2.1 Magnetic Sensor
- 3-axis open-loop fluxgate sensor for detecting slow (DC – 10 Hz) magnetic field variations
- Measures magnetic field in each axis (X, Y, Z) in nT
- Outputs Total magnetic field magnitude (√(X² + Y² + Z²)) and variation
- The variation output highlights sudden magnetic field anomalies, unaffected by slow geomagnetic drift
2.2 Acoustic Sensor
- PZT-based hydrophone
- Captures and processes audio data
- Outputs top 10 dominant frequencies (FFT) with Sound Pressure Levels (SPL) in dB re 1 μPa
2.3 IMU (Inertial Measurement Unit)
- Accelerometer/gyroscope/magnetometer combination
- Captures device orientation in 3D space
- Outputs yaw, pitch, and roll in degrees
2.4 Environmental Sensor
- Temperature, humidity, and pressure sensors
- Monitors conditions inside the enclosure for device health
- Outputs: °C, %RH, hPa
3. Operation
3.1 Before Deployment
Wire Connections:
| Wire Color | Function |
|---|---|
| Silver | GND (Cable shielding) |
| Black | GND |
| Red | V+ (7–30 VDC) |
| White | RS485 A+ |
| Green | RS485 B- |
Steps:
- Secure the device to a rigid non-ferromagnetic mounting frame. Do not mechanically stress the cable. Without a frame, secure a rope through both the rope holder and the included cable tether.
- Connect the A and B RS485 wires to the A and B terminals of your RS485 communication device.
- Connect +V and the two GND wires to a DC power supply (7–30 VDC, ≥1 A). A 12 VDC supply with minimal noise is recommended.
- Check that the pressure relief valve is fully tightened clockwise.
- Power on the supply and verify output is 7–30 VDC.
- Power on the device by rotating the ON/OFF switch clockwise.
- Verify the data stream is consistent at your terminal device.
- Deploy to a depth of up to 50 m. Ensure data keeps updating and IMU values indicate no device motion.
⚠ WARNING: Although the device includes reverse polarity protection, do not connect power terminals in reverse.
⚠ CAUTION: If the pressure relief valve is not tightened, the device will be flooded and permanently damaged.
3.2 Upon Retrieval
- Turn the ON/OFF switch counterclockwise to power off.
- Disconnect wires from the power supply and RS485 device.
- Clean the device and cable with fresh water and mild dish soap.
3.3 Transportation and Storage
⚠ CAUTION: When transported by air, both the device’s and the case’s pressure relief valves must be loosened.
- Avoid shocks, impacts, or intense vibrations during transportation.
- Store in a dry environment at room temperature, away from flammable materials and strong magnetic fields.
4. RS-485 Communication
4.1 Connecting to the Device
The device uses Modbus RTU over RS-485. Connection settings:
| Setting | Value |
|---|---|
| Baud rate | 115200 bps |
| Data bits | 8 |
| Parity | None |
| Stop bits | 1 |
4.2 Reading Acoustic Sensor Data (Slave ID = 1)
| Setting | Value |
|---|---|
| Modbus Slave ID | 1 |
| Modbus Function | 0x03 (Read Holding Registers) |
| Starting Address | 0 |
| Ending Address | 39 |
| Registers | Content | Unit | Type |
|---|---|---|---|
0–1 |
Frequency #1 | Hz | Float (IEEE 754) |
2–3 |
SPL #1 | dB re 1μPa | Float (IEEE 754) |
4–5 |
Frequency #2 | Hz | Float (IEEE 754) |
6–7 |
SPL #2 | dB re 1μPa | Float (IEEE 754) |
| ... pattern repeats for #3 through #9 ... | |||
36–37 |
Frequency #10 | Hz | Float (IEEE 754) |
38–39 |
SPL #10 | dB re 1μPa | Float (IEEE 754) |
4.3 Reading Magnetic Sensor Data (Slave ID = 2)
| Setting | Value |
|---|---|
| Modbus Slave ID | 2 |
| Modbus Function | 0x03 (Read Holding Registers) |
| Starting Address | 0 |
| Ending Address | 9 |
| Registers | Content | Unit | Type |
|---|---|---|---|
0–1 |
X-axis magnetic field | nT | Float (IEEE 754) |
2–3 |
Y-axis magnetic field | nT | Float (IEEE 754) |
4–5 |
Z-axis magnetic field | nT | Float (IEEE 754) |
6–7 |
Total magnitude | nT | Float (IEEE 754) |
8–9 |
Variation | nT | Float (IEEE 754) |
4.4 Reading Environmental Sensor Data (Slave ID = 2)
| Setting | Value |
|---|---|
| Modbus Slave ID | 2 |
| Modbus Function | 0x03 (Read Holding Registers) |
| Starting Address | 11 |
| Ending Address | 16 |
| Registers | Content | Unit | Type |
|---|---|---|---|
11–12 |
Temperature | °C | Float (IEEE 754) |
13–14 |
Humidity | %RH | Float (IEEE 754) |
15–16 |
Pressure | hPa | Float (IEEE 754) |
4.5 Reading IMU Data (Slave ID = 2)
| Setting | Value |
|---|---|
| Modbus Slave ID | 2 |
| Modbus Function | 0x03 (Read Holding Registers) |
| Starting Address | 17 |
| Ending Address | 22 |
| Registers | Content | Unit | Type |
|---|---|---|---|
17–18 |
Yaw | degrees | Float (IEEE 754) |
19–20 |
Pitch | degrees | Float (IEEE 754) |
21–22 |
Roll | degrees | Float (IEEE 754) |
4.6 Data Decoding
All sensor data are encoded as 32-bit IEEE 754 floating-point numbers, split across two consecutive 16-bit holding registers.
Register layout:
- First register (lower address): bits 0–15 of the 32-bit float (low word)
- Second register (higher address): bits 16–31 of the 32-bit float (high word)
Example: Reading registers 0–1 of Slave ID = 1, with values
0x0000 and 0x447A:
uint32 = (0x447A << 16) | 0x0000 = 0x447A0000
# IEEE 754 → 1000.0 (Hz)
Python snippet:
import struct
raw = (0x447A << 16) | 0x0000
value = struct.unpack('f', struct.pack('I', raw))[0]
Full example code — download rs485_example.py
# pip install pymodbus pyserial
import struct
import time
import sys
from pymodbus.client import ModbusSerialClient
CURSOR_HOME = "\033[H"
CLEAR_SCREEN = "\033[2J"
CLEAR_TO_END = "\033[J"
COM_PORT = "COM16" # Change to your port (e.g. /dev/ttyUSB0 on Linux)
BAUD_RATE = 115200
POLL_INTERVAL = 0.2 # seconds
def decode_float(low, high):
raw = (high << 16) | low
return struct.unpack('f', struct.pack('I', raw))[0]
def read_acoustic(client, lines):
try:
result = client.read_holding_registers(0, count=40, device_id=1)
if result.isError():
lines.append(f" Acoustic read error ({result})")
return
regs = result.registers
except Exception as e:
lines.append(f" Acoustic offline ({e})")
return
lines.append(" Acoustic — Top Frequencies:")
for i in range(10):
base = i * 4
freq = decode_float(regs[base], regs[base + 1])
spl = decode_float(regs[base + 2], regs[base + 3])
lines.append(f" #{i+1:2d} {freq:10.2f} Hz {spl:8.2f} dB")
def read_magnetic(client, lines):
try:
result = client.read_holding_registers(0, count=37, device_id=2)
if result.isError():
lines.append(f" Magnetic read error ({result})")
return
regs = result.registers
except Exception as e:
lines.append(f" Magnetic offline ({e})")
return
lines.append(" Magnetic Field:")
lines.append(f" X: {decode_float(regs[0], regs[1]):.2f} nT")
lines.append(f" Y: {decode_float(regs[2], regs[3]):.2f} nT")
lines.append(f" Z: {decode_float(regs[4], regs[5]):.2f} nT")
lines.append(f" Total: {decode_float(regs[6], regs[7]):.2f} nT")
lines.append(f" Deviation: {decode_float(regs[8], regs[9]):.2f}")
lines.append(" Environment:")
lines.append(f" Temperature: {decode_float(regs[11], regs[12]):.2f} °C")
lines.append(f" Humidity: {decode_float(regs[13], regs[14]):.2f} %RH")
lines.append(f" Pressure: {decode_float(regs[15], regs[16]):.2f} hPa")
lines.append(" Orientation:")
lines.append(f" Yaw: {decode_float(regs[17], regs[18]):.2f}°")
lines.append(f" Pitch: {decode_float(regs[19], regs[20]):.2f}°")
lines.append(f" Roll: {decode_float(regs[21], regs[22]):.2f}°")
def main():
client = ModbusSerialClient(
port=COM_PORT, baudrate=BAUD_RATE,
bytesize=8, parity='N', stopbits=1, timeout=1,
)
if not client.connect():
print("Could not connect. Check COM port.")
sys.exit(1)
sys.stdout.write(CLEAR_SCREEN)
print(f"Reading from {COM_PORT}. Press Ctrl+C to stop.\n")
try:
while True:
lines = []
now = time.time()
ms = int((now % 1) * 1000)
lines.append(time.strftime("[%H:%M:%S", time.localtime(now)) + f".{ms:03d}]")
read_acoustic(client, lines)
read_magnetic(client, lines)
sys.stdout.write(CURSOR_HOME + "\n".join(lines) + "\n" + CLEAR_TO_END)
sys.stdout.flush()
time.sleep(POLL_INTERVAL)
except KeyboardInterrupt:
print("\nStopped.")
finally:
client.close()
if __name__ == "__main__":
main()
5. Acquired Data Examples
5.1 Magnetic Detection
In the following figures, the magnetic data retrieved during the detection of a ship are depicted. The magnetic field variation is easily observed at all 3 magnetometer axes, as well as at the total magnetic field plot. To distinguish it even better, the device uses a model to calculate the magnetic field deviation of recent readings from a rolling average baseline.
5.2 Acoustic Detection
In the following figures, the acoustic data captured during the detection of different ships are presented as spectrograms that include the 10 most dominant frequencies, calculated by the device implementing a Fast Fourier Transform (FFT).
6. Device Dimensions
7. Technical Specifications
| Parameter | Value |
|---|---|
| Power | |
| Supply voltage | 7–30 VDC |
| Supply current | ~200 mA at 12 VDC |
| Power consumption | 2.5 W |
| Communication | |
| Output | Digital |
| Interface | RS485 |
| Protocol | Modbus RTU |
| Baud rate | 115200 bps |
| Typical polling rate | 1–10 Hz |
| Enclosure | |
| Material | Anodized aluminum |
| Diameter | 145.5 mm |
| Length | 440 mm |
| Operating temperature | -10°C to +80°C |
| Recommended depth | 50 m |
| Maximum depth | 300 m |
| Weight (in air) | 1900 g |
| Cable | |
| Length | 3 m |
| Outer diameter | 5.3 mm |
| Weight (in air) | ~138 g |
| Structure | 2 shielded twisted pairs |
| Wire size | 22 AWG |
| Jacket | LSZH (Low Smoke Zero Halogen) |
| Operating temperature | -20°C to 80°C |
| Magnetic Sensor | |
| Noise level | <15 pT/√Hz |
| Sensitivity | 97 mV/μT |
| Absolute range | 65 μT |
| Frequency response | DC to 10 Hz |
| Acoustic Sensor | |
| Sensitivity | -190 dB re 1 V/μPa |
| Bandwidth | 10 Hz to 50 kHz |
| Sensing element | PZT (Lead Zirconate Titanate) |
| Encapsulation | Polyurethane resin |
| IMU | |
| Pitch accuracy | ~1° |
| Roll accuracy | ~1° |
| Yaw accuracy | ~2–5° |
| Temperature Sensor | |
| Range | -40°C to +85°C |
| Accuracy | ±1°C |
| Resolution | ~0.01°C |
| Humidity Sensor | |
| Range | 0–100% RH |
| Accuracy | ±3% RH |
| Resolution | ~0.008% RH |
| Pressure Sensor | |
| Range | 300–1100 hPa |
| Accuracy | ±1 hPa |
| Resolution | ~0.18 Pa |
8. Troubleshooting
| Symptom | Possible Cause | Solution |
|---|---|---|
| No response from both nodes | Device not powered | Check power supply wiring; ensure power switch is turned clockwise |
| No response from both nodes | A/B wires swapped | Swap A and B connections on the adapter |
| No response from both nodes | Wrong COM port | Check Device Manager (Windows) or ls /dev/ttyUSB* (Linux) |
| No response from both nodes | Baud rate mismatch | Set baud rate to 115200 |
| No response from both nodes | GND not connected | Ensure adapter and device share the same GND |
| No response from one node | Wrong slave ID | Acoustic = 1, Magnetic/IMU/Env = 2 |
| Intermittent timeouts | Electrical noise | Relocate cable away from noise sources |
| Data lag or corrupted | Polling too fast/slow | Try polling at 1 Hz |
| Data reads 0 or NaN | Sensor hardware fault | Power cycle the device (OFF then ON) |
| Magnetic saturated / not changing | Strong magnetic field | Relocate device; check for nearby magnets |
| Magnetic fluctuates a lot | Motion artifacts | Stabilize the device |
| Acoustic not changing | Hydrophone obstructed | Ensure hydrophone is unobstructed and fully submerged |
9. Compliance & Disposal
EMC Notes: The device is intended for underwater use only and does not emit RF. Under 50 Hz magnetic field exposure, magnetic measurements may deviate up to 5%. Under 150–300 MHz RF exposure, deviation may reach 100%.
Export Control: Does not meet dual-use criteria. No export license required.
CE Compliance: Complies with applicable EU directives. Declaration of Conformity available on request.
RoHS Compliance: Complies with RoHS Directive 2011/65/EU and amendments. PZT hydrophone contains lead under applicable exemption.
Disposal: Contains electronic components. Do not dispose with household waste. Contact your local waste authority for recycling options.