Raspberry Pi automated fish feeder
Fish Food
Whether at work or on vacation, every pet lover worries about how to take care of their little roommates in their absence. What aquarium owners need is an automatic feeder.
Aquarium feeders have been around for a long time, but after my recent research, none of the devices really seemed practical to my mind. Very few devices provide feedback about malfunctions, which could be a nasty surprise when you return home. I created this automatic feeder project for my aquarium for peace of mind.
A Raspberry Pi Zero is a good choice as a control center for a fish feeder: It comes with everything you need to control the mechanical system and to grab images with a Pi cam (Figure 1). It is also compact enough to fit in a small housing. Integrating a Pi Zero W with your wireless home network will allow you to post various captured images online while you are on the road.
The goal was a simple setup that was not prone to errors. Therefore, the mechanical control system only uses one small servomotor. The circuitry of the electronics is just as simple. A DIY control system ensures a certain level of convenience. Two feeders add variety and are quite sufficient to bridge an absence of time equivalent to a three-week vacation.
Getting Started
To get the Zero W up and running, you need to download a new Pi OS image and transfer it to a microSD card. After plugging in a screen and keyboard, you can configure the boot options and network settings. With no need for a desktop later, you can choose automatic login over the command-line interface (CLI) and enable the SSH server and the camera interface. After enabling SSH and with wireless access to your home network, you don't need to connect any peripherals to the Zero W, and you can access it right away from another computer on the network. All further settings can then be configured in a terminal window on the other computer.
The Pi needs a hostname that reflects its task; in this example, it is named feeder. The next step is to create a separate scripts/
folder for the project files in your home directory, where you will later put the feed.py
control script written in Python 3. Instead of loading it as a memory-resident program when the Zero W is started, it is called repeatedly at defined intervals by cron
.
All in Good Time
The schedule for the feedings is set in the Zero W's crontab (cron table), which is the file that manages scheduled task processing. The plan for the feeder is shown in Listing 1, which you can create with crontab -e
[1].
Listing 1
crontab
# m h dom mon dow command # Sunday till Friday 0:*17 * * 0-5 python3 /home/pi/scripts/feed.py 1 # Saturday 0:*17 * * 6 python3 /home/pi/scripts/feed.py 2 # Every minute */1 * * * * python3 /home/pi/scripts/feed.py 0
Crontab specifies feeding every day at 5pm. On Saturday, the script starts with the 2
option on the command line, which releases an alternative feed from the second slot of the vending machine once a week. The third entry in the cron table with option
starts the operation display (the on-board LED flashes once a minute) and is used to read remote control codes from the web – but more on that later.
What You Need
Commercial feeders often rely on relatively complicated mechanics, such as a carousel of loadable compartments. In contrast, I want this feeder system to be as simple as possible, with a view to the DIY system remaining manageable and working safely during periods of absence from home. That said, I did want a certain level of convenience, both in terms of operation and functionality and for the benefit of my stay-at-home pets. Therefore, at least two feeder tubes are available for different feeds (Figure 2).
Other considerations were how to ensure – from a distance – that my pets really were receiving their meals. Trouble-free operation from a computer perspective does not give you any feedback as to whether the feed is getting into the aquarium, so I got the idea to record the fish feeding with a camera and serve up a snapshot on the web.
The Zero W comes with on-board tools to accomplish this task, and you can connect a Pi camera to capture an image a short wait after feeding. All you need is a view of a section of the aquarium where the vending machine sits. For protection, the Raspberry Pi and camera are each housed in a small case. The number of other parts in the project is manageable (see the "Parts List" box).
Parts List
- Raspberry Pi Zero W (1/2)
- Pi camera rev 1.3 or higher
- Case for the Pi and Pi camera
- Camera connection cable
- Mini servo (MG90 or comparable)
- Prototyping breadboard (PCB breadboard)
- Two push buttons
- LED
- Various resistors
- DIY feeding tower
Buy this article as PDF
(incl. VAT)
Buy Linux Magazine
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters
Support Our Work
Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.
News
-
Canonical Releases Ubuntu 24.04
After a brief pause because of the XZ vulnerability, Ubuntu 24.04 is now available for install.
-
Linux Servers Targeted by Akira Ransomware
A group of bad actors who have already extorted $42 million have their sights set on the Linux platform.
-
TUXEDO Computers Unveils Linux Laptop Featuring AMD Ryzen CPU
This latest release is the first laptop to include the new CPU from Ryzen and Linux preinstalled.
-
XZ Gets the All-Clear
The back door xz vulnerability has been officially reverted for Fedora 40 and versions 38 and 39 were never affected.
-
Canonical Collaborates with Qualcomm on New Venture
This new joint effort is geared toward bringing Ubuntu and Ubuntu Core to Qualcomm-powered devices.
-
Kodi 21.0 Open-Source Entertainment Hub Released
After a year of development, the award-winning Kodi cross-platform, media center software is now available with many new additions and improvements.
-
Linux Usage Increases in Two Key Areas
If market share is your thing, you'll be happy to know that Linux is on the rise in two areas that, if they keep climbing, could have serious meaning for Linux's future.
-
Vulnerability Discovered in xz Libraries
An urgent alert for Fedora 40 has been posted and users should pay attention.
-
Canonical Bumps LTS Support to 12 years
If you're worried that your Ubuntu LTS release won't be supported long enough to last, Canonical has a surprise for you in the form of 12 years of security coverage.
-
Fedora 40 Beta Released Soon
With the official release of Fedora 40 coming in April, it's almost time to download the beta and see what's new.