We are a group of four bachelor students and as part of one of our classes we were tasked with creating an IoT device that helps the environment. Given our shared interest in water ecosystems, we decided to develop an innovative solution focused on monitoring water quality and marine life.
After brainstorming and discussions, we came up with the idea to build an underwater sensor capable of detecting different objects.
Our device can count fish and classify them by size, allowing for better understanding of their behavior and migration patterns. Additionally, it can detect items like trash, making it a valuable tool for environmental cleanup.
Traditional fish migration studies rely on manual tagging or sonar systems, which are invasive and expensive. To do that, our solution uses non-intrusive depth sensing combined with embedded machine learning.
OUR DEVICE’S MAIN GOALSThe goals of our device are:
- Analyze seasonal fish migration patterns in lakes and rivers.
- Identify high-density fish areas to understand habitat preferences.
- Underwater object detection and classification to support environmental cleanup efforts.
The end users of our device are research institutions and companies whose work is focused on water ecosystems, enviromental protection and fish observation.
As this is a university project, we developed a functional mockup and tested it in a controlled environment – an aquarium – rather than in a natural body of water.
STEPS1. ProjectPlanningand Part Sourcing
We came up with the idea because we wanted to develop something connected to water quality and marine life. We were particularly inspired by the Tidal project (https://www.tidalx.ai/en), which uses advanced technology to monitor fish in aquaculture. We decided to try and create a similar solution to it, with the difference that we would not focus on fish farming but rather lakes and rivers.
CHOOSING THE RIGHT SENSOR
Understanding that our device needed a reliable way to detect underwater objects, we began researching suitable sensors. After consulting with our mentor, we chose the VL53L7CX Time-of-Flight sensor, which offered the accuracy we needed for detecting objects underwater.
DESIGNING THE BUOY FRAMEWORK
Initially, we planned to use a round buoy with a cone-shaped stabilizer. However, during early prototyping, we found it to be unstable in water. We found another solution - a pool buoy for adding chlorine. This type has a bigger round shape at the top and a narrower bottom, which makes it more stable in the water. This design provided the stability we needed and allowed us to modify the bottom with plexiglass, so the sensor could effectively detect objects.
2. Building the Sensorand the Buoy
The sensor assembly consists of an Arduino Nano 33 BLE Sense and a VL53L7C Time-Of-Flight sensor.
The VL53L7CX provides a multizone (8×8) depth map and can detect objects at distances of up to 5 meter.
We modified the bottom of the buoy by cutting out the lower section and replacing it with styrofoam, into which we embedded the sensor. The stryofoam also helped with making sure the sensor was placed perpendicular to the glass. To ensure a clear view underwater we added an Exolon polycarbonate solid sheet that has a higher impact resistance as glass. With this the sensor was protected and could effectively capture images underwater.
To test the prototype, we created a controlled environment at home. We used a bucket filled with water to simulate a natural body of water. We placed the buoy inside it.
Then we introduced two test objects. A bigger object, a water bottle, and a smaller object, a coffee mug. As we can see in the images below, the sensor successfully detected and distinguished objects based on size as well as depth. The closer the object is to the sensor, the brighter the color in the image.
We used the platform Edge Impulse to build a machine learning model capable of classifying images into three categories: large fish, small fish, and no fish.
The training dataset consisted of images captured during our tests. Edge Impulse enable us to label the images according to our wanted classification.
To enable connectivity, we used the Colibri IoT - NatureGuard platform's built-in LoRa interface and connected it to The Things Network (TTN) via LoRaWAN. This allowed us to transmit sensor data wirelessly to a network server.
For this to work we also had to connect the Colibri IoT to our Arduino IDE. The board is based on the modul XIAO nRF52 Sense, which we downloaded in our enviroment.
The data is transmitted as JSON, which we then display on our web interface.
6. Creating the Website / InterfaceWe developed a web interface using the Vue.js framework. It enabled us to create a simple, intuitve and useful website that allows us to monitor all of our sensors.
It consists of three screens. The home screen, the sensor page and the page about our team.
In the home screen there is a map that shows the current location of each sensor (while working on this project we were able to only have one sensor). Clicking on a pin takes us to the sensor page for that sensor.
In the sensor page we can see the last image taken by the sensor as well as its status (live or offline), what type of objects have been detected and when the last message from it was received.
This allows researchers and organizations to remotely monitor sensor activity without needing to physically access each unit.
7. Futureworkand improvements
There are several ways our project could be enhanced for real-world deployment.
- Integrating a camera would allow for advanced image recognition and enable the classification of specific fish species, significantly improving the accuracy of both counting and behavioral analysis.
- Updating the sensor could allow for greater depth perception, making the system more effective in larger or murkier bodies of water.
- Improving the housing with more robust and resistant materials would make it more appropriate even for harsher environments, including saltwater ecosystems.
- Adding solar panels could optimize power and connectivity.
Overall, the project was very interesting to develop. We strongly believe that engineering solutions should increasingly focus on sustainability, and aquatic ecosystems — often overlooked — deserve more attention in this regard.
Our prototype demonstrates how embedded systems, machine learning, and low-power IoT connectivity can be used together to monitor underwater environments in a non-invasive and cost-effective way. While this version is a functional mockup, it lays the groundwork for future enhancements and many different real-world applications.
If you have ideas or suggestions for further applications, let us know!
Comments