Sorry about the long overdue update! I will post pictures once I get some of the wires cleaned up but here's some of the components I either added or updated:
Moved out the shrimp for a crowntail betta.
LCD Touch Screen
Ditched the nearly 40 individual wires I was using to connect the LCD to the Arduino in favor of the shield, which fixed all my glitches and even the SD slot started working. This allowed me to upload high resolution images for backgrounds without the need to render individual icons, saving tons of memory on the arduino, and improving overall flow of program. The background is currently a picture of the Betta, with 4 icons. A droplet (water change pumps), a light (lights obviously), a thermometer (temperatures), and a picture of the filter (for the flow sensor). Each icon opens a sub-menu with various controls and data output.
Because the system requires a temperature sensor, heater, two airline tubes, a water sensor, and the two filter hoses, I wanted to keep the equipment out of the tank, since it is only a 5 gallon after all. So I designed a U-tube made from PVC that is mounted behind the tank. I have a siphon pulled from the tank into this U-tube so it is constantly being filled if the water levels aren't the same. Then I place the heater, sensors, and hoses into the other side of the U-tube. At the bottom of the tube I have substrate that not only acts as a filter as the water passes over it, but also prevents foreign matter from entering the filter inlet tube, where it could damage the flow sensor impeller. So the inlet hose to the filter is sucking water out of the external u-vessel, where it then passes through the inline flow sensor, into the filter (zoomed 501) and then back into the aquarium.
The PVC tube is 1.25" (if I remember correctly), and gets a pretty good flow going through it with the filter running, causing all filtered water to pass over temp sensors, water sensors, the heater, and water change pump hoses. This results in a very well mixed system.
The current problem I'm experiencing is the siphon flow rate isn't enough to keep up with the filter flow rate, and as a result I am experiencing about 1-2 inches of draw-down in the u-vessel relative to the tank water level. To remedy this I plan to increase the siphon tube diameter.
There are currently 2 temp sensors, one in the Arduino and circuitry drawer, and one in the external u-vessel. I also plan to add a third to the LED array heatsink (but really just for fun, because it never gets hot). In the temp sub-menu I can change between Celsius and Fahrenheit, and there is a status light that turns green if:
78 F < Tank Water Temp < 82 F
Circuit Enclosure Temp < 110 F
and red for anything out of those ranges.
I purchased 3 water level sensors. One is for the u-vessel (which once I get the larger siphon tube, will be on the same water level as the tank), and I will use this sensor for maintaining adequate water levels, sending commands to the pumps if necessary.
I purchased 2 peristaltic pumps and two 1-gallon containers. One container/pump is fresh water with dechlorinator and fertilizers such as trace minerals and excel. The other container/pump is for waste water, and routinely removes water from the tank. The pump tube-to-aquarium interface is at the u-vessel, where the tubes are routed into the water. The pump tube-to-container interface consists of a hole drilled in the container lid, with a rubber grommet installed. The pump hose fits snug enough that it pulls a vacuum on the container. To remedy this I installed two simple air locks you might find while home-brewing. This prevents a vacuum from being pulled in the container, while still keeping it generally sealed off to the atmosphere.
The submenu for the pumps currently consists of a slider to control volume to add/remove and a "fill" button, which when pressed will both add fresh water and remove old water to the amount specified by the slider. I intend to have manual controls available, but to have this system automated based on a feedback control system from the water level sensors.
The flow meter is installed inline with the hoses to the zoomed 501 filter. I measured the flow rate with a very dirty filter when I overhauled the system. I then thoroughly cleaned the filter, and measured the flow rate. Using a very rough linear approximation I was then able to generate a filter performance equation, allowing me to output the health status of the filter based on the flow rate. The submenu for the flow rate allows me to change between liters per hour and gallons per hour. I intend on collecting a bunch of data over the next few months in order to generate a much more accurate filter performance approximation.
I purchased a high torque electric motor and designed a conventional autofeeder using an archimedes screw and a hopper, similar to how your freezer might get ice to the dispenser. I modeled this autofeeder in autocad and I am now waiting for permission from my university to print it.
Lights/Clock Module/Misc Components
Haven't changed the light or real time clock module at all.
Bought 8 relays, two of which are currently being used to control the peristaltic pumps. I plan to wire other relays to the heater and filter, granting me the ability to turn those on and off, although that will be the extent of my control of these components.
I bought an ethernet module for the arduino as well, which I'll use to broadcast data to a website I can view anywhere with an internet connection. It will be a SCADA type interface, allowing both inputs and outputs.