FeedMyPet IoT Mobile App
Overview
This project encompassed a complete IoT solution, from hardware design and manufacturing
to firmware and software development. Through a mobile app the user was able to create
an account, set how much food and what time it was served, and see how much food and water
was left in real-time.
If there were more than one module in the house, the user could control all of them through the same account.
Here's the code on GitHub.
Software
- React Native: Developed the native mobile app using React Native, allowing cross-platform compatibility for both Android and iOS devices.
- Raspberry Pi Zero W: Utilized the Raspberry Pi Zero W as the hardware platform to control the pet feeder, executing the Python program to interact with actuators and sensors.
- Linux: Utilized the Linux operating system on the Raspberry Pi, executing the Python program at scheduled intervals for the automation of pet feeding tasks.
- Node.js Express: Implemented the server-side using Node.js Express framework, handling API requests, and managing data flow between the mobile app and the Raspberry Pi.
- Websocket: Implemented websocket communication to establish real-time interaction between the mobile app and the Raspberry Pi, enabling instant updates and notifications.
- MongoDB: Created and hosted a non-relational database using MongoDB Atlas, storing and retrieving data related to user accounts, pet feeding schedules, and device configurations.
- Heroku: Deployed the server-side application on Heroku, providing a scalable and reliable hosting solution for the backend services.
- Expo: Leveraged Expo as a development tool to simulate and export the React Native app, simplifying the testing and deployment process.
Hardware
- The next image shows the electrical scheme with all the components and trails to connect each one of them.
- The schematic was made using the EasyEAD software, which is a tool to develop and print PCBs.
- The module was tested utilizing the burn-in method, which puts the PCB under extreme operating conditions, to guarantee it would not fail and leave the pet unnatended.
- The Raspberry Pi Zero W could be replaced by ESP32 to reduce costs.
Prototype
- This picture shows the final prototype. It was made in MDF and you can check the food and water containers on top of it.
- The water is served via a pump powered by a DC motor, which fills up the bowl. This is done by measuring if the current weight of the bowl is within minimum and maximum limits.
- For the food, a stepper motor to dispense a predetermined amount of food. The user could choose how many servings to give the pet.
- The recipient was projected using Autocad and it was made so the food and water bowls were kept 5cm above the floor for good ergonomics and leave enough space so the pet wouldn't hit its head. The final product could be made with ABS plastic to reduce price at a large scale.