GatorByte – An Internet of Things-Based Low-Cost, Compact, and Real-Time Water Resource Monitoring Buoy

Graphical abstract

be protected from impacts and other hazards. Moreover, the compact form factor of the buoy housing enables monitoring of hard-to-access locations. This differentiates it from other similar water monitoring buoys (e.g., Trevathan and Schmidtke, and Trevathan and Nguyen [14,15]) that are not designed to traverse and endure these conditions. The onboard cellular (LTE-M/NB-IoT) networking capabilities enable real-time reporting of sensor and GPS data that enable the users to deploy, track, and recover the unit.
Currently available solutions for field water quality measurements include deployable sondes (e.g., Hydrolab HL7, YSI EXO platforms, Eureka water probe's EasyProbe) and hand-held units (e.g. YSI Ò Pro Quatro). These instruments require skilled personnel to operate and collect water quality data. Moreover, these devices use expensive sensors and electronic components which drive their costs into the thousands or tens of thousands of dollars. This is cost prohibitive to many water resource managers and lacks the integrated design to collect spatial water quality. In contrast, the GatorByte leverages lowcost sensors, and electronic components and adds a spatial dimension to the water quality data, resilient housing design, and a wide range of sensor support within an end-to-end water resource monitoring solution.
To summarize, there are currently limited options for low-cost water resource monitoring. Moreover, these solutions do not provide the ability to capture spatial changes in water quality. GatorByte aims to be a viable water resource monitoring solution to directly address this need.

Related work
Several systems have been developed that address some of the issues with the commercially available water quality monitoring systems. RiverCore [7] and CavePearl [8] are two examples of recent projects that have done so and have similarities to GatorByte. However, RiverCore monitors water levels as part of a real-time flood warning system, while CavePearl is a water quality datalogger, being used in submerged cave systems. CavePearl does not report data in real-time and requires manual extraction of data.
O'Flynn et al. [9] presented a Zigbee-based wireless monitoring system (named SmartCoast) for monitoring the physiochemical characteristics of water resources. SmartCoast consists of wireless sensor nodes that record water quality metrics, including temperature, pH, conductivity, depth, phosphate, dissolved oxygen, and turbidity.
Nguyen et al. [10] proposed a cellular-based (GSM/GPRS) wireless sensor network to monitor pH and temperature in ponds. The authors also present strategies to minimize high-energy consumption and network losses of a remote monitoring system. The system is made of sensor nodes and central coordinator devices. The nodes read sensor data and relay the data to the coordinator node using Zigbee every 30 min. The coordinator node uploads the collected data from sensor nodes to a remote server using GPRS (General Packet Radio Service).
Yue et al. [11] proposed a solar-powered distributed Wireless Sensor Network (WSN) for monitoring oxygen density, pH, and turbidity. The sensor network architecture consisted of sensor nodes and a base station. The nodes and base station use Low-rate Wireless Personal Area Network (LR-WPAN) to communicate. Lambrou et al. [12] developed a real-time in-line water quality monitoring system for water distribution systems based on Zigbee communication. They used pH, Oxidation Reduction Potential (ORP), electroconductivity, and turbidity sensors as primary parameters.
Udell et al. [13] developed a fast environmental sensing prototyping framework (Loom) to allow users to quickly create monitoring systems from a wide selection of supported sensors. The researchers have also designed a Printed Circuit Board (PCB), named Hypnos, that abstracts many critical and functional components, like Real Time Clock (RTC), SD logging module, sensor multiplexing circuitry, and coin cell battery on a condensed circuit board that users can use in their projects right off the box.
Trevathan et al. [14,15,16] developed a long-term remote water quality monitoring buoy. The buoy monitors lux, temperature, turbidity, pH, dissolved oxygen, and salinity. The buoy uses TinySine 3G cellular module to add cellular networking capabilities for reporting data, and the data is visualized using the ThingsBoard IoT dashboard. The buoy uses dutycycling procedures and employs a solar panel to extend the operational life of the buoy.
Wickert et al. [17] proposed an Arduino-compatible family of data loggers (ALog) and introduced a modular firmware design allowing the expansion of sensor support. The system aimed to be low-cost, low-power, and lightweight.
Fuentes-Pérez et al. [18] developed a drifting buoy built using off-the-shelf components. The drifter uses a 9-axis accelerometer and Neo-8MT GPS module to estimate river flow velocity cost-effectively, in contrast to commercially available flow meters. The researchers provided an open software framework (SPart) to enable real-time visualization of the data. The drifter offers two modes of communication -GSM and Long-range Radio (LoRa). The researchers have used the MQTT protocol to upload data to the cloud.
Makhtar et al. [19] proposed a real-time water quality monitoring bench-top system based on Arduino Uno. The system monitors pH, turbidity, total dissolved solids (TDS), and temperature. The system shows the latest readings on an LCD screen. Users can connect to the device using a smartphone using Bluetooth and fetch the latest readings.
In summary, GatorByte's objectives are: 1. Provide WRMs with a low-cost end-to-end water quality monitoring, and visualization solution.
2. Allow WRMs to understand spatiotemporal water quality variations in difficult-to-access streams, drainage systems, lakes, ponds, creeks, or rivers and allow a quicker and more direct determination of the location of the pollutant sources. 3. Make the GatorByte software and hardware open-source and modular for further expansion of the list of supported components and sensors.

Hardware description
The GatorByte's hardware has three major components as shown below.
a. Buoy enclosure b. Printed Circuit Boards (PCB) c. Data generators d. Electronic components

Buoy enclosure
The housing of the buoy is a 3D printable enclosure, 140 mm in diameter and 115 mm tall (Fig. 2). The enclosure was printed using an inexpensive Prusa i3 MK3s 3D printer for $$17 per enclosure, including sealing and other hardware. The enclosure has two parts: the bottom and the lid. The bottom enclosure houses the sensors, most of the electronic components, and the battery. While the antenna, indicator LED, and magnetic power switches are mounted on the lid.
The sensor probes, using a 3D printed adapter, thread into the bottom enclosure ( Fig. 3a and b). The bottom housing is designed so that the tip of each sensor is recessed within the outer buoy radius (see recess on the bottom of the buoy in Fig. 2) to protect them from direct impact with channel stones, boulders, or otherwise. The sensor interface is sealed using O-rings to prevent leaks. Small weights are used as ballasts in the bottom enclosure to optimize vertical orientation and righting of the buoy in turbulent conditions. The interface between the enclosure lid and bottom is sealed using four press-fit metal screws and an O-ring ( Fig. 3b and c). A spray sealant is typically applied before deployment as an extra step to avoid any water entering through the joint.
Three common and inexpensive filament materials and waterproofing treatments were evaluated during the development of the housing: PLA (Poly-lactic Acid), PET-G (Poly-ethylene Terephthalate, Glycol-treated), and ASA (Acrylonitrile Styrene Acrylate). These materials can be printed with commonly available, hobby-grade fused deposition modeling (FDM) 3D printers.
PLA deteriorates when exposed to moisture and sunlight. Hence, PLA is not recommended to fabricate parts that will be in contact with water and exposed to sunlight. PET-G is more resistant to water and sunlight compared to PLA and only requires moderate adjustments to printer settings. ASA filament is best suited for environmental IoT applications where water and sunlight are abundantly present. ASA has high resilience against UV, water, and other environmental factors. Hence, the GatorByte buoy uses ASA to fabricate its enclosure. Moreover, ASA prints can be sealed by treating the prints using Acetone vapors in a closed volume with air circulation [20] for better waterproofing. A polypropylene storage box was fitted with a moderate RPM fan to treat the GatorByte enclosure for this purpose. Application of three to five coats of spar urethane to ASA prints after acetone treatment for added resilience is recommended. Allow each coat to cure for 90 min before reapplication (or follow product recommendations).

Printed circuit boards
The GatorByte buoy has three modular circuit boards that interconnect with each other using the universal GatorByte interface (Figs. 4-6).

Microcontroller hat
The microcontroller hat houses the microcontroller board and the non-optional electronic components that are essential for the datalogger functions: Real-time clock (RTC), Electrically Erasable Programmable Read-only Memory (EEPROM), Internal temperature and humidity sensor module, I/O expander, and a 3.3 V to 5 V booster.
The I/O expander (SN74HC595 Shift register IC) can be configured as a 1:8 expander (1 pin to 8 pins expansion). GatorByte uses two shift-register ICs chained together to create a 1:16 pins I/O expander.
The voltage booster converts the 3.3 V from the microcontroller to 5 V. This device, while being inexpensive, expands the compatibility of the GatorByte to sensors and electronic peripherals that require 5 V to function (for example, DS1307 RTC). The user must include a bidirectional logic level shifter if such peripherals only support 5 V logic level.

Sensor baseboard
The GatorByte buoy's sensor baseboard holds the Atlas Scientific sensor interface ICs and screw terminals for connecting temperature, pH, dissolved oxygen, and electroconductivity sensor probes. The circuit also houses an SD card module for local data storage, a Lithium-Polymer (Li-Po) battery charging module, a Bluetooth module, and a GPS module. The sensor baseboard uses the universal GatorByte interface where the microcontroller hat can be attached.
The sensor baseboard is a customizable circuit board that consists of electronic components specific to the objectives or requirements of the user. In other words, users can redesign a baseboard PCB and only include the sensors and peripherals they intend to use. For instance, if the objective is to track floating vegetation on a lake, users can solely include a GPS module besides mandatory peripherals like the battery charging module and micro-SD module.

Stalk
The stalk circuit consists of two magnetic (reed) switches that allow turning on and off the datalogger using a magnet, which minimizes the number of times the enclosure's water-proof seal needs to be opened. This PCB also includes a multicolor Light-Emitting Diode (RGB LED) for indicating buoy status and diagnostics.

Data generators (Sensor probes, RTC, and GPS modules)
The buoy uses low-cost, compact, lab-grade environmental sensors made by Atlas Scientific (Table 1). These sensors have a small form factor and are inexpensive, in turn allowing the buoy to be compact and keep the overall cost low. The sensors have a life of 1 to 2 years and require periodic calibration and proper storage for achieving the desired accuracy. The sensors were designed to be used in a laboratory setting. However, the GatorByte's enclosure incorporates these sensors allowing them to be used in the field. The sensor probes attach to the enclosure with a 3D printed adapter (Fig. 3a). The probes are exposed to water through holes on the bottom of the enclosure but are protected by the buoy design which recesses the sensor tips above the bottom of the buoy. The enclosure also uses O-rings, Teflon tape, epoxy glue, and plumber's grease to prevent water ingress at the interface.
The buoy includes an AHT-10 temperature and relative humidity sensor to monitor the internal conditions of the enclosure. This data can indicate whether a slow leak is present, or if temperatures are outside the manufacturer's recommended operating ranges. Additionally, GatorByte supports other sensors that communicate using I 2 C, UART, SPI protocols, or analog signals.
The u-blox Neo-6 M GPS module in the buoy provides location data ($2m accuracy). The module requires 45 s to 5 min to acquire a location fix the first time it is powered on. The module has a coin-cell battery that allows it to store satellite information for a faster fix when subsequently powered on. The microcontroller geo-tags each set of sensor readings with GPS coordinates so that the values can be associated with a location.
The buoy also includes a DS3231 Real-time Clock (RTC) module that keeps track of time. The module includes a coin-cell battery that serves as a backup power source in case the main battery power gets disconnected. The microcontroller appends the time information to each set of sensor readings.

Electronic components
GatorByte has other miscellaneous electronic components that assist the data generators in carrying out their function. These components are widely available and can be sourced from popular online stores. The high accessibility of these components has created an ecosystem of DIYers, stable firmware libraries, and technical support.
The GatorByte's electronics components can be classified as -data generators (Section 2.3), microcontroller board, communications modules (Cellular module and Bluetooth module), power supply and management system (Li-Po battery and power control switches), and local data storage. The microcontroller executes the firmware procedures, collects the data from the data generators, saves the data on the local storage, and transmits the same data to the cloud-based server.
The electronic components in the GatorByte platform are described below.

Microcontroller board
The GatorByte buoy uses Arduino MKR NB1500, which is an LTE-M (Long-term Evolution-Machine Type Communication) and NB-IOT (Narrow-band Internet of Things) capable microcontroller board. Alternatively, for regions of the globe otherwise covered by GSM and 3G networks, the MKR GSM1400 microcontroller board can be used. GSM1400 and NB1500 use the same microcontroller (SAMD21 Cortex M0+), hence these can be used interchangeably (depending on the availability of cellular services) with only minor adjustments to the GatorByte firmware.
NB1500 supports multiple serial communication protocols (I 2 C, SPI, and UART) which makes it flexible and can be easily adapted for use with a variety of sensors and peripherals. The NB1500 shares processor architecture with numerous microcontrollers made by other manufacturers. Hence, it can be swapped with another Arduino-compatible microcontroller by making minor changes to the hardware and firmware [21].

Communications modules
The NB1500 has an integrated cellular module (u-blox SARA-R410M) that enables transmitting data to a remote server over the Internet. The cellular module supports LTE-M and NB-IoT technologies, which makes sending and receiving data more power-efficient, more resilient to errors, and less prone to delays. This directly translates to an extended operational life of the buoy. NB-IoT is available in most countries in North America, Europe, Australia, and Asia. While LTE-M is only available in North America, Europe, and Australia. Hence, GatorByte can be deployed on most continents.
The buoy also includes a Bluetooth module (HC-05 or AT-09). This module enables wireless interfacing of the buoy with a Bluetooth device in the field for data offloading and diagnostics.
The GatorByte uses an internal 4G antenna for cellular data transmission and a patch antenna for the GPS module. An inexpensive waterproof 2-in-1 antenna (4G and GPS) can be mounted externally on the dry (top) side of the housing to augment signal strength. The cellular signal strength declines sharply underwater; hence, the antenna needs to be above the water surface for optimal transmission.
Power supply, control, and management system The Arduino NB1500 requires a power supply of 3.3 V to 5 V, hence a 3.7 V Lithium-Polymer (Li-Po) battery can be used to power the buoy.
A contactless power switching system has been implemented using two magnetic reed switches and a Dual Pole Dual Throw (2-coil latching, DPDT) relay. Bringing a magnet close to one of the reed switches turns on the GatorByte and bringing the magnet close to the other reed switch turns the GatorByte off. The locations of the reed switches are indicated on the lid by two side-by-side raised ovals.
A few power-saving features such as deep-sleep mode, Light Emitting Diode (LED) power control, cellular module power control, etc., have been implemented at the hardware and firmware levels (discussed in the following sections) which make the buoy well-suited for power-limited and long-term deployments [22,23].

Data storage
The GatorByte platform uses a micro-SD breakout board to locally store water quality data. This module is 3 V-5 V tolerant, is compatible with 3.3 V logic microcontrollers, and uses Serial Peripheral Interface (SPI) protocol to communicate with the microcontroller. This module allows saving data as a backup in an event of a network outage or server unavailability. It is recommended to use a high-endurance, Class 10 microSD HC card with a storage capacity of 4 GB to 16 GB from a trusted brand as these are resilient and reliable. Inexpensive, lower-quality micro-SD cards have more frequent incidents of failure and data corruption.
In summary: The GatorByte's enclosure is 3D printed using ASA filament and is post-processed with Acetone vapors. The enclosure uses O-rings and spar urethane spray coats for preventing water leakages. The enclosure is highly customizable and can be tailored according to individual monitoring requirements. The PBCs are modular, allowing users to easily alter and customize the buoy by adding or removing sensors or other electronic peripherals according to their sensing needs.
Design and software files The following section lists and describes the source files for the CAD designs (enclosure and PCB), and the software (firmware, cloud server, and dashboard). Table 2 lists the enclosure's CAD files.

Firmware
Tables 3a and 3b list the firmware and server software files. Table 4 shows the list of CAD files related to the PCBs.

Bill of materials (BOM)
The following tables (Tables 5-7) list all the components needed to build a GatorByte buoy. Labor costs are included in Table 8.

Build instructions
The description of steps for producing a GatorByte buoy is below. The section delineates steps to customize and fabricate the PCBs, enclosure, and firmware.

Customizing PCB layout and fabrication
GatorByte's electronics' design is modular and constitutes three PCBs -the microcontroller hat, sensor baseboard, and the stalk: a. To sustain compatibility between the modular PCBs, some dimensions are standardized. Moreover, the universal GatorByte interface (see Fig. 4 and Fig. 5) should not be altered. b. To add/remove sensors or peripherals, edit the PCB design files (mentioned in section 3.3) using Autodesk EAGLE TM . c. Finalized PCB designs can be exported as Gerber files (packaged as a.zip file), and uploaded to online PCB manufacturers, like PCBway.com or JLCPCB.com, that will produce and ship worldwide. d. Once the PCBs are manufactured, solder the components onto the three PCBs. This step requires some experience with soldering and additional tools, for example, solder, solder gun, heat gun, desoldering station, wire clippers, and tweezers. e. Soldering Surface-mount Devices (SMD) like SOT23 MOSFETs, 0805 resistors, and SN75HC595D ICs require additional expertise. The task of soldering SMDs can be off-loaded to PCB manufacturing companies mentioned above for an additional fee that covers soldering and parts. f. The assembled PCBs must be cleaned to remove any residual flux on the board since this can cause a high-impedance short circuit and cause sensitive sensors like pH probes to report incorrect values. The flux cleaning can be done in the following ways:     a. Clean the PCB by soaking it in Isopropyl alcohol (IPA) for $ 30 to 45 min, stirring occasionally. A brush can be used to remove stubborn flux residue. Finally, rinse the PCB with IPA and dry it with a hot air gun or allow it to air dry. b. As an alternative, an ultrasonic cleaner can be used with a PCB cleaning solution which takes $ 5 to 8 min per PCB and is more reliable compared to dipping PCBs in IPA. g. Once the PCBs are fully dry. Apply a coat of silicone conformal coating and let the coat cure for 24 h. The conformal coating protects sensitive electronic components from moisture inside the buoy. It is recommended to apply a second coat once the first coat has fully cured.

Customizing enclosure and fabrication
GatorByte buoy's enclosure has six parts (see Section 3.1) that are customizable (if necessary) and may be printed using a hobby-grade 3D printer. The parts are: The steps for customizing and fabricating the enclosure are listed below: a. If the user needs to add/remove a sensor or alter the dimensions of the enclosure, the enclosure design may need revision. Edit the files (mentioned in Section 3.1) and export the files in STL format. The files bottom.sldprt and sen-sor_thread_hole.sldprt need to be assembled before being exported to STL file format). b. If no customization is required, the provided STL files (mentioned in section 3.1 may be used as is with slicer software to create GCODE files. c. Once the parts have been printed, it is recommended to perform acetone treatment on the enclosure parts as described in Section 2.1.

Customizing firmware and flashing to the microcontroller
The process for updating and flashing the firmware to the microcontroller is listed below.
a. Install Microsoft VS Code and then install the platformIO VS Code extension [24]. Configure platformIO and install the toolchain for Arduino NB1500. b. If needed, users can make changes to the procedures in the firmware. c. The GatorByte Arduino library provides a user-friendly interface to interact with the sensors and other components of the buoy. The customization of the firmware will involve changing the functions provided by the GatorByte library and changing the sequence of when those functions are called. d. With the NB1500 connected to the computer, flash the firmware to the microcontroller using platformIO's interface. e. The platformIO serial monitor (SM) provides live logs of the microcontroller. The firmware logs every action that it takes, hence the SM can help with troubleshooting any issues, or can just be used to monitor the operation of the firmware.

Assembling all components
The steps for assembling the components are listed below: a. To prepare the sensors for installation: i. Using epoxy glue, adhere sensor probes to the sensor adapters. This interface must be waterproof. ii. Apply Teflon tape to the threads of the sensor adapters. iii. Cut the sensor probe wires to the appropriate length ($10 -15 cm) iv. Strip and tin the exposed wires. b. Insert the sensor-buoy interface O-rings and the enclosure interface O-ring. The enclosure interface O-ring may require adhesive for proper seating. c. Screw in sensors (already in sensor adapters) into the buoy. Ensure that the adapters are screwed in tightly to prevent any water leaks. d. Connect the sensor wires to the respective screw terminals (Fig. 7). e. The illustration in Fig. 7 shows two-wire screw terminals and the connection schema for the sensor probes. f. Using stalk fasteners, attach the stalk PCB to the inner surface of the lid enclosure using M2 7 mm screws. g. Using an IDC cable, connect the stalk PCB to the sensor baseboard PCB. h. Attach the microcontroller hat to the sensor baseboard PCB at the universal GatorByte interface.
i. Connect the battery's JST connector to the sensor baseboard and connect the JST connector from the sensor baseboard to the microcontroller hat.
j. Place the plastic jumper piece on the off position on the microcontroller hat until the buoy is ready to be used. k. Attach the NB-IoT antenna to the NB1500 microcontroller, and the GPS antenna to the GPS module. l. Place the assembled PCBs in the slot within the buoy enclosure. m. Perform a buoyancy test in a bucket of water.
i. Add weights to the ballasts in the buoy enclosure to correct the orientation of the buoy. ii. Once the buoyancy test is complete, close the lid using the press-fit screws. n. A multiday experiment to test the buoy's ability to keep water out is recommended. Leave the buoy in a bucket of water for at least 48 h. If there is a leak, ensure the O-rings are properly installed, reapply the Teflon tape, and that the sensor adapters are screwed in place tightly. Also ensure, at least 5 coats of urethane spray have been applied on at least the inner surface of the buoy enclosure's bottom and lid enclosure. Repeat this experiment until the leaking stops.

Operation instructions
This section describes typical maintenance tips for the buoy, including the steps to calibrate sensors, pre-deployment configuration, and field deployment of the buoy.

General maintenance
We recommend users exercise typical precautions and conduct normal maintenance practices that they would with any other environmental monitoring system or sensor.
Buoy maintenance includes many aspects, including sensor maintenance (including calibration), an inspection of the enclosure, O-rings replacements, and charging the battery. These are discussed in the following sections.
The following list lays out general considerations for proper maintenance of the device.
1. Users are recommended to check sensor calibrations, inspect the enclosure for cracks and degradation, and charge the battery before every survey. 2. The sensors (the most expensive part of the system) have a shelf life of $5 years, but when deployed often, will need replacement every 1 to 2 years. 3. Li-Po batteries degrade over time, but their life depends on the number of discharge cycles. We recommend replacing batteries at least every year to ensure the battery can provide sufficient power for the intended duration of the survey. 4. The O-rings used in the GatorByte are made from Buna-N and are resistant to mild chemicals and water. We expect the Orings to outlast the sensors, the enclosure, and the electronics and will not need replacement unless they have been damaged due to other factors.

Calibration of sensors
Environmental sensors must be calibrated before deployment. Typically, sensors lose calibration and drift over time, and hence, periodic calibration of the sensors should be performed before each deployment. GatorByte uses environmental sensors from Atlas Scientific which have varied calibration requirements. The requirements are included in Table 9.
Atlas Scientific sensor probes interface with the GatorByte via OEM interface Integrated Circuits (ICs), also sourced from Atlas Scientific. These OEM circuits convert weak electrical signals (voltages, currents, changes in resistances, etc.) into numerical values representing either pH, electroconductivity, dissolved oxygen, or temperature. The OEM circuits also provide a user-friendly interface to perform calibration of the sensors. The users need not fiddle with equations to carry out the calibration. Instead, the OEM circuits perform the calculations in the background. Calibration involves sending a 4-byte number corresponding to the calibration solution being used. The four bytes need to be written to specific registers on the OEM circuits. The GatorByte firmware provides an abstraction so that users need not concern themselves with knowing which registers to write to. The firmware provides a guided calibration procedure (Fig. 8) for the sensors that require calibration (pH, D.O., and E.C. sensors), and users can perform calibration with a few keystrokes.
The RTD temperature sensor in GatorByte uses the correlation between the resistance of Platinum metal and the temperature. This relationship is constant and does not drift with time, and hence the RTD sensor does not need calibration. However, it is good practice to periodically validate the temperature probe readings.
To perform calibration, it is recommended to unscrew the sensors from the GatorByte's enclosure for ease of handling and safety.
a. Connect the sensors to a completely assembled GatorByte circuitry (Microcontroller hat, stalk, and sensor baseboard).
Connect the microcontroller to a computer using a USB cable. b. Open a ''Serial monitor" (SM) software on the computer, select the port the microcontroller is connected to, and ensure you can see the microcontroller's diagnostic information displayed on the SM. c. In calibration mode, the normal operation of the device will cease.
Step-by-step instructions will be displayed on SM to assist with the calibration procedure. d. Follow the prompts on SM and repeat for the other sensors. e. User commands while in calibration mode are included in Table 10.

Device configuration and operation modes
The GatorByte platform allows modifying a buoy's configuration in three ways.
a. Edit config.ini file on the SD card (pre-deployment) b. Update using a Bluetooth-enabled smartphone (during deployment) c. Update using the web dashboard (post-deployment) Any updates made using the web dashboard or a Bluetooth device will edit the config.ini file on the micro-SD card present on the GatorByte buoy. Editing the config.ini file allows the user to adjust the sleep duration and sampling frequency (resolution), enable or disable sensor/peripherals, and change operation modes.
All available operation modes on the GatorByte platform are listed in Table 11 below.
Powering the device on/off.
GatorByte can be powered on or off without opening the watertight enclosure by following the steps below.
a. To turn on the device, bring the magnet close to the marking ''|" on the top side of the lid. To turn the device off, bring the magnet close to the 'O' marking. b. If the device has been non-operational for an extended period, the GPS module will need a couple of minutes to acquire location the first time. Place the device outdoors until the green LED on the GPS module starts blinking every 2 s. c. Ensure all wire connections are made and the screws are in place; release the GatorByte for the survey. Table 9 Atlas Scientific sensor's calibration requirements.

Sensor Requirement
Mini Lab Grade pH probe Every year for the first 2 years; Every 3 months after that Mini Lab Grade DO probe Every 6 months Mini Lab Grade EC K1.0 probe Every 10 years PT-1000 RTD probe Not required d. Monitor the latest position and water quality data on the dashboard. If the battery level drops below 15%, collect the device before the battery runs out to ensure that the device can be located and recovered.

Deployment instructions
Ensure the configuration file on the micro-SD card (Section 6.2) is updated before deploying. At the deployment site, use the pre-survey checklists as laid out in Table 12 and Table 13 to ensure that the buoy is configured correctly and that the peripherals and sensors are working as expected.

Validation and characterization
This section describes the validation and characterization of the GatorByte buoy. This section includes the following subsections: a. Buoy operation b. Power budgeting c. Sensor data validation The buoy was deployed in two scenarios to assess its performance.

Buoy operation
When operating in ''real-time" mode, GatorByte buoy reports the data to the backend server hosted on Amazon Web Services (AWS) in real-time as well as saves the data locally on the micro-SD card. GatorByte uses Comma-separated Values (CSV) format to transmit and store the data.
The buoy reports the data as soon as it takes sensor reading using MQTT (MQ Telemetry Transport) instead of HTTP (Hyper Text Transfer Protocol). MQTT is more suitable for IoT applications due to smaller network overhead and quicker data transfers [25]. Using MQTT, the buoy takes $ 10 ms to transfer the sensor data while HTTP takes $ 50 ms to transfer the same data.
If the buoy enters an area with no cellular service or low cellular signal, besides logging the data to the micro-SD card, it also queues the data to the micro-SD card for the data upload to be reattempted as soon as the buoy regains cellular connectivity in the future.
The GatorByte can alternatively be operated in ''offline" mode. In this mode, the cellular MODEM stays off and the buoy does not attempt to upload the sensor data to the server. The data will have to be manually uploaded to the GatorByte dashboard using the ''upload" feature on the dashboard.
The sensor data is visualized on the GatorByte dashboard in real-time using a map and charts unless the buoy is operating in ''offline mode". The dashboard can also be used to change the buoy's configuration parameters, for example, sampling frequency, operation mode, sleep duration, etc.

Power budgeting
Average power consumption of the GatorByte buoy while in awake, idle, and asleep modes is included in Table 14. A 4500 mAh battery was used to conduct the surveys at CAIP and SWB. The battery lasted $45 h at a 5-minute sampling frequency. The average current consumption of each electronic peripheral on GatorByte is shown in Table 15. If not already done, air dry the PCBs and then apply conformal coating on them.
Set power jumper to ''On" Ensure that the jumper on the microcontroller hat is set to the ''On" position.
PCB connections Connect microcontroller hat, sensor baseboard, and stalk PCBs.

Sensor data validation
The GatorByte buoy was deployed at two trial water quality surveys in Gainesville, Florida. Both locations are urban freshwater water bodies. The following subsections describe the survey trials and their outcomes.
Pre-and post-survey calibrations were performed to ensure the accuracy of the data. However, a compensable error was discovered in the Sweetwater Branch's pH sensor values during post-survey calibration. It was discovered that stray voltages on the EC sensor and DO sensor interfere with the pH sensor through the water. As a result, the EC sensor pulled the pH values a few fractions of pH units lower than the true value, while the DO sensor pulled the pH values higher than the true value. Their combined effect resulted in pH values being 0.2 to 0.3 units higher than the true value. The true value was obtained using two reference handheld sensor systems -Hanna HI9813 ($230, single-point calibration) [26], and OTT Hydrolab HL4 ($$15,000, multi-point calibration) [27].
Center for aquatic and invasive plants (CAIP) survey Location. The GatorByte was deployed at CAIP to demonstrate its capabilities in July 2022. CAIP has 9 ponds teeming with aquatic life including vegetation, fish, turtles, snails, and frogs. The pond that was used for the trial has a surface area of 2,000 sq. meters.
CAIP is located on the outskirts of Gainesville city, and hence, cellular coverage is spotty in the vicinity. GatorByte was initially configured to run in ''real-time" mode, however, the buoy switched to ''offline" mode to conserve battery and prevent the microcontroller from freezing the operation. Hence, recorded data was manually extracted from the onboard micro-SD card.
The buoy was tethered with a 1-meter-long fishing line for quickly and easily collecting the buoy at the end of the survey.
Objective of the deployment. The deployment's main goal was to evaluate the battery life and operational duration and compare the observations with the estimated battery life. Moreover, the location does not have reliable network availability, hence GatorByte's fault tolerance against network-related issues, including software hangs, was tested. The location witnessed moderate rain throughout the survey and as a result, the enclosure's water-tight seals were tested as well.
Data and visualization. The data collected from GPS, pH, DO, EC, and RTD sensors can be downloaded in JSON format using the URL https://api.ezbean-lab.com/v3/gatorbyte/data/get?device_id=caip&survey_id=hwx. The data is visualized in Fig. 9.
Analysis of data and survey results. In addition to rain, the location was being pumped with freshwater by the CAIP to restore the water level. All the sensors show diurnal cycles in the data visualization and show variations as expected. The highfrequency components (short-period jumps and dips in pH and DO data) were attributed to the changes in the cloud cover. When the sun was blocked by the clouds, the DO went down, and vice-versa.  The creek's depth varied between a few centimeters and a meter on the day of the survey. The creek's bed is lined with sand with some vegetation and broken tree branches. Hydrolab HL4 was used as a reference sensor for this survey. The sensor values are plotted in the charts below.
Objective of the deployment. The primary objective of this deployment was to evaluate the sensor readings, the accuracy of the GPS module, network signal strength and ability of the communications subsystem to recover from network-related errors, and the ability of the enclosure to keep water from ingress into the buoy in an urban stream setting.
OTT Hydrolab HL4 sonde was used in conjunction with the GatorByte as a reference sensor. The sonde recorded pH, temperature (RTD), and electroconductivity water quality metrics.
Data and visualization. The data collected from GPS, pH, DO, EC, and RTD sensors on the GatorByte can be downloaded in JSON format using the URL https://api.ezbean-lab.com/v3/gatorbyte/data/get?device_id=gb-swb-val&survey_id=hwx. The GatorByte data is visualized in Fig. 10 in blue color. The pH, RTD, and EC readings recorded by the Hydrolab HL4 can be downloaded in JSON format by visiting the following URL https://api.ezbean-lab.com/v3/gatorbyte/data/get?device_id=gb-swb-val&survey_id=hwx&data_type=reference. This data is visualized in Fig. 10 in orange color. Analysis of data and survey results. The GPS data visualized in Fig. 10 shows a close overlap with the stream's path. The discrepancy in the southwest region of the stream is a result of inaccurate map tiles from OpenStreetMap. Map tiles from Google Maps align with the GPS data collected by the GatorByte buoy.
The data collected using the water quality sensors in the buoy show slight differences in temperature and electroconductivity readings, whereas the pH readings show a significant difference. Temperature readings from the buoy show a declining trend because the buoy was transported in an open box, while the HL4 sonde was transported to the location in a wet container. Hence, the sensor on the buoy took approximately 15 min to equilibrate with the stream water's temperature. The discrepancy in the temperature readings was highest at 2°C at the start of the survey and stabilized at a 1°C difference.
The difference in the electroconductivity readings was consistently around 10 lS/cm. The significant discrepancy in the pH readings was caused due to an electrical interference between the pH probe and electroconductivity and dissolved oxygen probes. The electroconductivity and dissolved oxygen probes did not turn off while the pH sensor was being read due to a hardware issue, which was resolved after the survey by employing MOSFETs to completely isolate the probes and prevent inter-sensor interference. The isolation was tested post-survey and was found to remove the discrepancies between the pH readings of the buoy and the HL4 sonde.
Conclusions. The survey lasted around 90 min and the buoy covered over 750 m. The visualized data showed no major changes in the water quality parameters during the survey. However, the values reported by buoy sensors were a little off compared to those of the OTT Hydrolab HL4. This discrepancy was identified as caused due to sensor drift. Periodic calibration will resolve the discrepancies in the sensor values.

Declaration of Competing Interest
The authors declare that they have no known competing financial interests or personal relationships that could have appeared to influence the work reported in this paper.