Raspberry Pi automated fish feeder

Fish Food

© Lead Image © alexpokusay, 123RF.com

© Lead Image © alexpokusay, 123RF.com

Article from Issue 268/2023
Author(s):

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.

Figure 1: The DIY feeder made with a Raspberry Pi and a camera on the side of the aquarium.

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).

Figure 2: The components you need. A transparent desktop pen holder acts as a feed silo in this setup.

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

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

comments powered by Disqus
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.

Learn More

News