Introduction: Fish Feeding Themselves
The object of this invention is to train fish to feed themselves. I tend to be forgetful, and days tend to bleed into each other. So I forget to feed the fish or think I have already done it. I needed a machine that could feed them on a regular schedule. So as I thought about timers and buttons and whatnot. I realized that it would be boring to just have a machine dole out food on a regular basis. What if it was interactive. What if I created a machine to train fish to feed themselves. I wanted to let the fish prove their intelligence. I wanted the fish to have a goal, get excited and then succeed and feel a sense of accomplishment. LOL okay maybe i went a little to far on that one.
Step 1: How It Operates
When the the light is on the fish know that the feeder bar is active. The fish then hit the familair lure like feeder bar. the copper wire the bare is made of closes the circuit with the metal bell housing. The Arduino sees that the switch is closed and tells the RGB led to turn off, then directs the servo to go to a pre-programmed position that will push the feeder cap to deliver 1 unit of fish food. The Serial LCD screen beeps and audible sound and displays how many times the switch has been closed in the form of hits. The Minutes and seconds are displayed on the screen to show how long the program has been running. The open logger stores the hit count and the minutes and seconds of the hit for data analysis later on. Once this is all done then the light is turned back on to let the fish know they can hit the feeder bar again.
Step 2: Components
To interact with the fish and make the feed themselves I will
need:
1. Feeder bar (home made)
2. Microcontroller Arduino Uno
3. ws2812 RGB Led
4. Servo (strong enough to push the button on the feeder)
5. Container of food (wallmart)
6. Some random erector set pieces
7. Wall wort to power everything 9-12v with 1A or more capability
8. Data logger for easy data collection (SparkFun OpenLogger)
9. Fish (gold)
10. Micro SD card, i used a 4GB card just fine
11. Serial LCD Screen (from radioshack)
12. Time, lots of Time. LOL
13. Adafruit_NeoPixel you can download it here at Github ( https://github.com/adafruit/Adafruit_NeoPixel )
Step 3: Schematic
I just did not have the time to draw this out on fritz, so i went old school. I also added the prices i paid for each item. just to give you an idea of the cost of the project.
Key/Legend
Signal Lines: The green lines are all signal wires that hook up to the digital pins. I did not use any analog pins in this build.
Positive Lines: The red lines are the 5v and 3.3v lines. The Openlog calls for 3.3v so i used the Arduino 3.3 pin to supply the power. The WS2812 calls for 5v, but can run on 3.3v however by doing that I am pushing more ampage through the WS2812. Since I am only using one rgb light at half power, it is fine. If I were to use more than 1 light i would recommend using the 5v line. I will change this on the next Rev. you always want to stick to the power requirements of the hardware as suggested by the manufacturer.
The Switch: okay so the switch that i used in the diagram, is all over the internet. It is the basic pricipal of an open and closed circuit. At the time of this writing, exactly 2 months after the build was completed. I cant for the life of figure out why i attached it to the reset pin. LOL. but it all works so that's good enough for prototyping right now. I would encourage you to just look into this and make your own switch because i don't think i drew it clearly. I took lots of pics though. have fun! :)
Servo: the servo is working off the power from the Arduino. so it is not that powerful. I used some 3 in 1 oil to make the button slide easier. the next gen it will have its own power supply of 6 volts and all the amps it can handle.
Arduino Uno: the Uno I am using has the MC chip that i can program, and then remove to install in a project permanently. When i finally get done with the science side of this project. The feeder will be programmed to come on every few hours for 5 minutes to let the fish hit the feeder bar as many times as they can.
SparkFun Open Log: Is absolutely amazing. What a great logger! so easy to use. no fuss no muss. right out of the box it starts logging to a txt file that it creates on the sd card. It is programmable in all sorts of ways to better help with data collection. As I become more familiar with the logger i am sure i will be able to streamline my code to get the data i want in the format i need. without any intervention from me in the post processing stages.
Bell housing: the reason i used a fishing lure type of device was from a story I once heard. I had heard a story about fish hatchery fish. The small fish in the big open pools have a little lure type of device that when they hit it in the water it drops down pellets. This teaches the fish to hit lures when they are released into lakes and streams. LOL. kind of funny to hear that the fishing game is rigged, or maybe its just a story. Either way, i decided to take this approach. It was extremely successful!
Okay i think that covers all the issues and thoughts i had while going through the hardware portion of the build.
Step 4: Code
Attachments
Step 5: Contact
Find me on:
Robopandapdx.com
facebook:Robopandapdx
twitter: @RoboPandaPDX
youtube: Robopandapdx
https://www.youtube.com/channel/UCkA0zZJAopUZBNX56...
email: RoboPandaPDX@Gmail.com
Upgrades coming soon:
Error detection in case the food does not drop.
Real time clock
better data collection
seperate power source for servo