*UPDATE* I got them all working! See post 24!
Here's the demonstration videos:
I'm finishing up an autofeeder system that I made which run off my arduino based aquarium controller. You could also use any other sort of programmable controller such as Raspberry Pi, etc.
I used 2 different concepts which can be used to control 99% of any autofeeder that's on the market.
Tap into the "manual feed" button.
Most autofeeders have a "manual feed" button that when pressed, makes the feeder do a feeding cycle independant of its schedule. This button is just a 2 wire button, that when both wires touch, it triggers a feed cycle. The concept is to take apart the feeder, solder a wire onto both sides of the button, and hook those wires up to a relay that's controlled by your microcontroller.
For advanced users... I found that on both feeders I tested, one side of the button had +3 volts (battery voltage), and one side had ground voltage. For both feeders I found that if you take the +3V side and ground it, it will trigger the feeder. This means you can hook this directly up to an arduino pin, and keep the pin HIGH, and then bring the pin LOW for a few hundred miliseconds, and it should trigger the feeder. I tested this with an Arduino Due, which runs on 3.3V, the same as the feeders. To use a 5V Arduino such as a Mega or Uno you might have to add a resistor, or perhaps add 2 pnp diodes which would make 3.6 volts. You also need to make sure that the arduino and autofeeder have a common ground. Using a relay is definitely a safer and more surefire way of doing it. Its probably also possible to do with some sort of transistor, but I didn't test or attempt it.
First is a generic Petco brand feeder. I paid $30 for mine a few years ago, but now they sell for under $20! Its really a pretty good feeder, whether or not you use it with an arduino. Its kept my fish alive for over a month while I've been out of town.
I soldered the orange and blue wire onto the backside of the manual feed button:
The 2nd feeder I think I got off ebay or something awhile ago. Its really quite crappy, and If I wasn't using an arduino to control this thing I would probably throw it away. It only has a switch for "12H or 24H feeding", and has no indication on it if the battery is dead. Not very safe to rely on to keep your fish alive, and almost no way of knowing at what hour it will actually feed your fish. Don't buy this thing.
But, it has a manual feed button, and I was easily able to automate it.
I took it apart and am looking at the printed circuit board. "S2" means "switch 2" which is the manual feed switch:
Sorry for the crappy pic (I took these over a month ago), but you can see I just soldered the blue and orange wires onto the back of the switch:
ALSO, while I was doing this I also converted both feeders to run off a 3.3V power supply instead of off batteries. I HATE battery controlled devices, especially one that would kill all your fish if it died or failed! If you've decided to already automate your feeder, you will already have wires running to your feeder, so you may as well just run 2 more wires.
You'll need to power the feeder off the same voltage as the batteries. Both of these use (2) AA batteries, which is about 3 volts. If you're using an Arduino, most Arduinos I have a +3.3V pin on them and you can power the feeder directly off the Arduino. Feeders don't draw hardly any power, so you won't overtax your Arduino voltage regulator. I used an external 3.3V wall wort power supply that I had on hand.
Simply solder + and - wires on the battery terminals of the feeders. This was really easy to do while I had them apart soldering the automation wires.
I then drilled a small hole in the cases for the wires to come out:
I don't have many pictures of this. I won't be able to take pictures until this weekend, at which time I'll update this thread.
I had 2 REALLY CRAPPY feeders that I got for "free" on an ebay auction for fake plants (don't judge me, I was young, we all make mistakes). They're Penn Plastic "Daily Doubles". These things are junk.
What I did is take off the feeding drums, and mount them on stepper motors controlled by an Arduino.
I got a 5 pack of stepper motors with driver boards for ~$12 on Fleabay.
I wrote a simple piece of code that rotates the drum to dump the food and then returns it to the original position. It was easy to do if you've ever messed with Arduino type stuff.
I used an Arduino Uno that I had laying around, since my main Arduino didn't have enough extra pins to run the stepper motors. So I have a single wire that connects my main arduino the Uno that tells the Uno to run some code to turn the stepper motor to feed the fish.
Like I said, more pictures on this later.
I programmed this on a schedule using my Arduino. I might try to write some code to add this feature to AnotherHobby's iAqua controller, but I don't have a 3.2" screen, so it would be hard for my to add any sort of graphic interface to make it work. I'm also not familiar with his code and I don't know which pin(s) would be best to use.
I don't have pictures of my complete setup right now, but will add some and a video this weekend hopefully.
I added a schedule to let you choose up to 4 feeding times per day. Then, on a separate screen, there is a manual feeding option. The way I coded it, whenever you manually activate the feeders using the manual feed screen, it turns off the next feeding schedule (up to 3 scheduled feedings). So, in essence, you can manually feed the fish whenever you want, but the controller will realize when you have, and will only let the fish be fed the proper amount of feedings per day.
I set my tank up so that the fish are fed at 9am and 7pm. In the morning, I can manually feed the fish at say 7 a.m. before going to work, and the Arduino will "cancel" the 9am feeding since it knows the fish were already fed. Then, I can come home at say 5pm and manually feed the fish, and the controller with "cancel" the 7pm feeding since it knows the fish were already fed. This way you get to watch the fish eat, and the auto feeders will never overfeed your fish (as long as you program the feedings correctly).
You could also manually feed them 2 or 3 times (or whatever you set your limit to) and it will stop the next 2 or 3 feedings. This could be useful if you're trying to see how much your fish can eat in 1 day to adjust feeding amounts, or if you're trying to make sure slower moving fish get their food, etc.
The code is pretty simple, here's how it basically works:
int manualfeedings = 0;
//how many times the manual feedings have been activated
const int maxfeedingsallowed = 3;
//how many manual feedings you allow at once
if(manual button touched)
//only lets you manually feed if you're below your set limit
if(manualfeedings < maxfeedingsallowed)
activateFeeder(); //activates the autofeeder
if(time for scheduled feeding)
//only activate the feeder if the fish haven't been manually fed
if(manualfeedings == 0) activateFeeder();