This project was originally part of a group project for an ebmedded system class. I had the idea prior and saw it as an opportunity to try and create something cool and useful, as well a valuable learning experience. I love my two cats dearly, so this was also a great way to make something that ensures they don't starve if I leave them home alone for a few days, or if I just forget. Not that that has ever happened...
The actial chasis that houses all the components was made just using PosterBoard material from Target. It is, by no means, a great or even really good chasis, it was just cheap and easy to make (using only a box cutter, hot glue gun, and some electrical tape). This would be one of the first things I would try and improve, but given the limitations I had in my little apartment, it suffices. In any case, the point of the project is the hardware and software.
Inside there is a Raspberry Pi that is connected to various other hardware devices. Two pins on the Pi are connected to the 2 inputs on the motor driver board, allowing the Pi to control the DC motor. There is a hardware switch directly inline with the 12V supply, so you can manually disconnect power without unplugging. The 12V power connects directly to the 12V motor driver and a 12V to 5V converter with a USB output so the Pi be powered easily with a USB C cable. The distance sensor and character LCD are provided 5V via the Pi. The LCD screen communicates with the Pi using I2C protocol. The Ultrasonic sensor is sent a "TRIGGER" signal, and the response time of the "ECHO" signal is used to compute the distance.
The web app has a simple login feature. It's not very advanced, the username and password are hard coded, but this system is intended for local network usage, so that's fine.
You can set 2 different automated feed times, and trigger a manual feed with 3 different size options.
There is a log viewer so you can track feeds as well.
The code for this project can be viewed here on GitHub