Inspiration

We’ve always loved pets. So much so that we’re the type of people that can’t resist going “OMG! That doggo is so cute.” or to refrain ourselves from petting them. It’s also obvious that we might not always get the love back. However, when we bring up the idea of having a cat or dog for ourselves to our parents, it is always immediately shot down. The main reason most parents would have was, “You’ll just play with it and forget the fact it has to be fed and kept clean. We’ll just end up cleaning up the mess after you two”. Kind of a harsh thing to say to a child, but then if you think about it, it’s a fair assessment of what could possibly happen.

Now that we’re obviously older and more mature (hopefully?!!) and we think back, our parents’ argument actually makes even more sense. We’re always dealing with a horribly tight class schedule with assignments, lectures and other stuff that we usually go to sleep at ungodly hours in the day only to realize that we won't be getting much sleep since we forgot to have dinner. If we can't feed ourselves at the right time, how will we remember to feed a pet? The situation becomes even more dire if we leave home for a couple of days and set up camp in a lab to finish homework (Happened a couple of times this semester alone 🥲 ) without anyone to watch over the pets.

Considering all these scenarios, it would be great if we had a fully automatic Pet Food and Water Dispenser. It can feed and provide water to our pets at regular intervals or whenever they feel hungry or thirsty. The easy way would be to just get one from Amazon or Walmart, set it up and call it a day. However, our ego of being graduate students at an IVY League school studying embedded systems got the better of us, and we decided to make it ourselves.

What it does

PetCare is a completely automated pet food and water dispenser that is built upon the Arduino ATmega328P to compensate for human inefficiencies owing to busy schedules.

The dispenser comes as a compact package that features a Real-time clock module to schedule meal-time intervals, a consolidated setup consisting of a submersible water pump to pump out water, a relay that controls it and a water level sensor to indicate the need to refill. The food dispenser is equipped with a top-grade servo motor coupled with a shaft that acts as the lid to dispense food.

How we built it

1) Meal Intervals scheduled using the RTC. Buzzer to alarm for 5-10s. Train pet to understand that if the buzzer sounds, then meal is ready.

2) Water Dispensing 💧 Either at pre-scheduled meal intervals or everytime the pet stands in front of the dispenser (with the support from our dear ultrasonic sensor).

Water Pump controlled by a relay to pump out water to bowl for fixed duration. Water Level Sensor + red LED 🚱 to indicate water refilling requirement.

3) Food Dispensing 🍕 Servo Motor with integrated shaft (opening lid) to open lid of food container at predetermined angles and sufficient enough to ensure adequate dispensing of food.

4) Manual Dispensing Process control via Blynk IoT setup interfaced with NodeMCU to communicate with ATmega328P.

Challenges we ran into

Power Management was a challenge given the number of components we used. Both the ultrasonic sensor (used for water dispensing mode 2) and the servo motor used the Timer 1 of the Arduino and this prevented us from using them simultaneously. This prompted us to use a secondary Arduino for the ultrasonic sensor with all the other setup controlled by the primary Arduino.

Moreover, when we attempted to communicate information from the secondary Arduino to the primary one directly, we faced random errors which we later understood to be spurious outputs being produced. This was something we didn’t anticipate. However, to combat this, we used debouncing to ensure that the transfer of information was smooth throughout. These were some of the challenges we encountered and combated successfully.

Accomplishments that we're Proud of

The entire dispenser is portable and compact. We are very happy that we no longer need to worry and will finally be able to feed our pets without fretting about missing out on feeding them due to our tight schedule. We are happy with how we managed to interface unfamiliar and new components like the Real-Time Clock module and the new sensors with the Arduino comfortably and ensured that they worked as expected. As responsible members of the engineering community, we have ensured that the entire code has been written in a manner that makes it easy for anyone new looking into the project to be able to understand it seamlessly.

What we Learned

This project work was instrumental in helping us understand and implement crucial concepts in Embedded Systems like power management, serial communication, timers, ADC and interrupts.

We also had the opportunity to work with new sensors like the Liquid Level Sensor and components like the RTC module that we had no prior experience working with. In this attempt, we learnt their functioning and interfacing process with the Arduino.

What's Next for PetCare

We could add a feature wherein which the user can set the timings for the dispensing process using the Blynk IoT setup. This could allow the user to change the timings at the comfort of their smartphones with just a couple of touches. Since our code has been made easy to understand, anyone new looking into this idea and having a cool new extra feature to add, need not start from the beginning but can just continue on from our contributions.

Built With

Share this project:

Updates