Schematics, code, Web-app and 3D files all available.
This project aims to automate the refrigerator water dispenser. Originally located inside the fridge, it has been moved outside using a custom 3D-designed fountain. We first prototyped it on Arduino and then transitioned to the ESP32 platform with internet capabilities. The entire system now operates on a real-time database hosted on Firebase.
The fridge has an internal water dispensing system that is manual. You have to hold the water bottle up, then at the same time press a hard button. In this process, the refrigerator loses coldness, and you get cold. Our system, however, utilizes an external custom-designed fountain that provides cold water after just 2 seconds of water flowing with no need to hold or press anything.
Our system reads signals from a remote controller, a simple numeric keypad used to navigate menus, set parameters, and choose which water bottle to fill and how.
The 1602 display with I2C protocol provides real-time information.
We've integrated a motion sensor that wakes the device from deep sleep only when someone approaches for water, enhancing energy efficiency.
We chose to use Next.js, React and Tailwind CSS to develop a simple yet useful UI to keep track of the water consumption of each user.
Hosting guests or following a recipe that demands an exact amount of water? Input the desired ounces, enable unlimited fill, and so on... a handy extra feature for any occasion.
To communicate with the fridge on when to open the flow, we decided to use a relay since it allows handling 120V currents with just a 3.3V board.
Everything from water consumption to settings will be stored on a Firebase real-time database.
We calculated the dispenser's flow rate and programmed the ESP to adjust the dispensing time accordingly. The user can also adjust it, and everything will be stored on the Flash memory and the database.
Error #01 = Failed to record individual water consumption.
Error #02 = Failed to push consumption to the database.
Error #03 = Failed to generate date or hour due to connection issues.
Others coming soon...
- Follow the schematics and picture attached below (these are for the prototype) if you are not using the I2C protocol to cominicate with the display then use a NPN transistor to turn off the screen. I actually used a 3 pin relay so the image below is not accurate
- Final Product
Untitled.mov
Collaboration: Lorenzo, Jongsoo, Minh