I find there is little love for our pet fish, and this needs to change. The true star of the water, Goldie Fishwater, won my undying love through an indomitable spirit when faced with adversity. She was attacked -- torn fin from fin. She developed ammonia burns, a swim bladder infection, fungus, and other injuries, but she has managed to survive. For that, I want her to have the best.
I was on a trip, and I left her to the uncaring care of an automatic fish feeder. A week later, I returned home to a broken fish feeder, a polluted tank, and an overfed Goldie. It took a whole night to clean the tank, and I vowed I would never let this happen again.
The control interface for the tank (left). The water is at room temperature. Motor A is the camera platform. Motor B is the fish feeder. The Relay button controls the pumps and bubbler. The camera was raised to water surface level (right), and I had just used the feeder. Goldie was right there ready for the pellets.
(Source: Cabe Atwell)
Despite my constant worry, there was nothing I could do that week. And that's when I realized I want to watch over Goldie, no matter where I am. I want to be the one to feed her. I put my engineering experience to the task. Using a Raspberry Pi and an Arduino Uno, I developed a system to meet all my requirements. It is a true remote fish tank controller.
The Raspberry Pi is central and network/Internet connected, and it streams a live camera feed of the tank. I can move the camera around to see different parts of the tank. Sometimes I have to search for Goldie. I also built in a way to cut the power to all the pumps and bubblers. I normally do this to feed the fish or just to give her some quiet time. I can also control a fish feeder through the system. It is a dump style feeder adapted from the one that malfunctioned on my trip. The best part is that I can handle all these features through a network, most of them in a browser.
When developing today, there is almost no need to reinvent anything. Motor control was handled through an Arduino Motor Shield -- I send the stepper driver pulses, and it handles the rest. The entire development board setup was attached to the handy Bud Industries Boardganizer, where I combined two of them for more space. The moving platform was pulled from a printer/scanner. I simply adapted a NEMA17 stepper motor to the pulley mount. Instead of moving the entire system, as I had planned, I moved the Raspberry Pi Camera Module. To do this, I contacted AlienSpec for one of its two-meter-long cables. The company rush shipped the cable to me, and it was a perfect solution. I added a temperature sensor that was regularly polled and displayed in the user interface, even though temperature doesn't matter much for freshwater fish. The software was written in Python with some C/C++. For the video stream, I used the VLC, an open-source cross-platform multimedia player/framework. Simply connecting to the IP address of the Pi gives access to the stream in VLC.
Watch Goldie's story.
Get all the details of the Goldie project here.