What is this?
fishtracker9000 is a real-time fish monitoring dashboard that tracks fish movement patterns, regions of interest, water temperature, and clarity.
Inspiration
While wandering through PetSmart, we noticed a wall of fish and realized these often allegedly subpar pets could serve a greater purpose than just being watched.
What was learned
Fish can be aggressive. Our heat map revealed that one of the Bettas often lurked, waiting to ambush its tankmate. Their movements were sporadic but also highly predictable, especially during interactions. From a technical standpoint, we initially built a Python Flask backend with a standard NextJS/React frontend but found it too mundane. Switching to an all-Python GUI not only boosted performance but also introduced new challenges and made development quicker and more difficult.
How we built it
We monitor the fish tank in five ways, two of which are sensor-based. An Arduino Micro (thanks to the person who lent it to us) reads analog signals from a TDS/temperature sensor, while a Raspberry Pi sends this data to a web server, where it's accessed by our Tkinter GUI. The other three monitoring methods are visual. One places a bounding box around the fish. The second analyzes their movement patterns and the third creates a heat map based on how long the fish spends in specific areas. All of this is powered by a custom-trained YOLO11 model in Python.
Challenges
Designing a good GUI was harder than expected. We had to balance numerous metrics, and centralizing all the data on one dashboard was challenging. Since performance was critical, we tried multiple training sessions to optimize the fish monitoring model, often leading us down time-consuming paths.
What's next?
There's a lot of factors in taking care of a fish, so having a dashboard that dynamically tracks different stats could be crucial for just a casual pet owner or a business. So, more sensors, more ways to monitor, and more fish counting.
Built With
- arduino
- camera
- python
- raspberry-pi
- roboflow
- tynker
- yolov11

Log in or sign up for Devpost to join the conversation.