Robert Werner Enlists AI to Help Build an AI-Backed Ocean Monitoring Buoy
Low-cost hardware, including an Espressif ESP32-S3 and a Semtech LoRa transceiver, deliver wave motion and turbidity data.
Maker Robert Werner has released a guide to building your very own floating ocean sensor β feeding data to an Edge Impulse machine learning model and transmitting via a low-power long-range LoRa link via The Things Stack.
"There is a long history of building cheap and open source buoys," Werner explains by way of background to the project. "They are very tempting since the commercial variety are expensive yet the sensors that run them are cheap. Depending on what you want sensed the options are many: wave height, temperature, location, and turbidity. Wave height is usually calculated from algorithms from a 9DOF [Nine Degrees of Freedom) sensor or in rarer cases actual ocean pressure."
Werner's example uses a low-cost 6DOF motion sensor from DFRobot, plus the company's turbidity sensor β designed to measure how cloudy water is, as a means of determining now clean it might be. These are linked in to a Seeed Studio XIAO ESP32S3 microcontroller board, built around the Espressif ESP32-S3 β though the Wi-Fi radio goes unused, there being few wireless access points in the middle of the ocean. Seeed's Wio-SX1262 add-on is included instead, which offers long-range LoRa radio connectivity using a Semtech SX1262 transceiver.
While Werner's buoy design does use 3D-printed parts, the waterproof housing is an off-the-shelf Pelican case. "You can design and print your own," he explains, "but honestly these people know their waterproofing." There's the need to drill and seal an outlet for an off-board high-gain antenna, which transmits data over The Things Stack.
As for software, Werner turned to OpenAI's ChatGPT large language model for developmental assistance. "I used ChatGPT to develop data for an Edge Impulse project that would represent wave actions of flat water, medium height waves, and those over 10 feet," Werner explains. "It modeled sinusoidal output series for each of these examples that were used as input for the AI [model].
"I then developed a small algorithm to transform the probability outputs of small, medium and large waves to a one to 10 output. This information along with the temp and turbidity was sent as hex code to The Things Stack. The data can then be utilized by any web based data repository or dashboard for presentation."
The project is documented in full, including 3D print files and source code, on Instructables.