# A Platform of Unmanned Surface Vehicle Swarms for Real Time Monitoring in Aquaculture Environments
## 3 Aquatic Platform
### Software Architecture  
Figure 6 illustrates the modules of each device in the platform. The _Sensor Controller_ module has two routines, one for reading sensors when requested from an external source or module and a routine where sensors are read periodically. Both routines can be configured by a configuration file. In an USV, there is a periodic routine for the navigation mechanism with a period of one second (minimum \begin{table}
\begin{tabular}{c c} \hline \hline
**Name** & **Measured Parameters** \\ \hline Temperature-DS18B20 ([[https://www.adafruit.com/product/381](https://www.adafruit.com/product/381)]([https://www.adafruit.com/product/381](https://www.adafruit.com/product/381))) & Water temperature \\ \hline Depth/Pressure-BAR30 ([[https://docs.bliureobotics.com/bar30/](https://docs.bliureobotics.com/bar30/)]([https://docs.bliureobotics.com/bar30/](https://docs.bliureobotics.com/bar30/))) & Depth and pressure \\ \hline pH-SEN0161 ([[https://www.dfrobot.com/wiki/index.php/PH_meter](https://www.dfrobot.com/wiki/index.php/PH_meter)]([https://www.dfrobot.com/wiki/index.php/PH_meter](https://www.dfrobot.com/wiki/index.php/PH_meter))(SKU_SEN0161)) & pH level \\ \hline Conductivity Kit K1.0 ([[https://www.atlas-scientific.com/](https://www.atlas-scientific.com/)]([https://www.atlas-scientific.com/](https://www.atlas-scientific.com/))\_files/ & Electrical Conductivity \\ \_datasets/\_circuit/EC_EZO_Datasheet.pdf) & \\ \hline Turbidity-SEN0189 ([[https://www.dfrobot.com/wiki/index.php/](https://www.dfrobot.com/wiki/index.php/)]([https://www.dfrobot.com/wiki/index.php/](https://www.dfrobot.com/wiki/index.php/)) Turbidity_sensor\_SKU: & Levels of turbidity \\ \_SEN0189) & Ultrasonic-SEN0208 \\ \hline ([[https://www.dfrobot.com/wiki/index.php/Weather](https://www.dfrobot.com/wiki/index.php/Weather)]([https://www.dfrobot.com/wiki/index.php/Weather](https://www.dfrobot.com/wiki/index.php/Weather))\_-\_proof\_ & Distance (both depth and obstacles) \\ Ultrasonic\_Sensor\_with\_Soperate\_Probe\_SKU\_;SEN0208) & \\ \hline ([[https://www.dfrobot.com/wiki/index.php/10](https://www.dfrobot.com/wiki/index.php/10)]([https://www.dfrobot.com/wiki/index.php/10](https://www.dfrobot.com/wiki/index.php/10))\_DOF\_Sensor\_(SKU: & Heading, Humidity, Temperature \\ SEN0140)) or Grove IMU 10 DOF & and Pressure \\ \hline ([[http://wiki.seedstudio.com/Grove-IMU](http://wiki.seedstudio.com/Grove-IMU)]([http://wiki.seedstudio.com/Grove-IMU](http://wiki.seedstudio.com/Grove-IMU))\_10 DOF\_v2.0/) & \\ GPS-MTK3339 & \\ \hline ([[https://learn.adafruit.com/adafruit-ultimate-gps/downloads](https://learn.adafruit.com/adafruit-ultimate-gps/downloads)]([https://learn.adafruit.com/adafruit-ultimate-gps/downloads](https://learn.adafruit.com/adafruit-ultimate-gps/downloads))) & Latitude and Longitude \\ \hline UV sensor-SEN0175 & UV index \\ \hline ([[https://wiki.dfrobot.com/UV](https://wiki.dfrobot.com/UV)]([https://wiki.dfrobot.com/UV](https://wiki.dfrobot.com/UV))\_Sensor\_v1.0-ML8511\_SKU\_SEN0175) & UV index \\ \hline Liquid Level-SEN0205 ([[https://www.dfrobot.com/wiki/index.php/](https://www.dfrobot.com/wiki/index.php/)]([https://www.dfrobot.com/wiki/index.php/](https://www.dfrobot.com/wiki/index.php/)) & Whether the Buoy is submerged or \\ Liquid\_Level\_Sensor-FS-IR02\_SKU\_;SEN0205) & not \\ \hline Dissolved Oxygen Sensor-SEN0237-A ([[https://wiki.dfrobot.com/](https://wiki.dfrobot.com/)]([https://wiki.dfrobot.com/](https://wiki.dfrobot.com/)) & Dissolved Oxygen \\ Gravity\_Analog\_Dissolved\_Oxygen\_Sensor\_SKU\_SEN0237) & \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Sensors description. Figure 5: PCBs used in USVs and Buoys. update rate of GPS). When the vehicle reaches the target, it makes five consecutive measurements and creates a data message of the average of each sensor. In an Buoy, only the periodic routine is enabled.