Remember when your mother told you "A watched pot never boils"?
Throughout our lives we have been living under a lie! A watched pot does in fact boil!
Here at Philly Codefest we are here to fix this!
What it does
When the user is looking at the kettle full of water it will never boil.
When the user turns away, and stops looking at the kettle, the water will boil.
How we built it
We use OpenCV to retrieve images from a web camera. These images are analyzed using the Google Vision API to determine if anyone is looking at the kettle.
We retrieve the temperature of the water in the kettle using a sensor placed in the water. Temperature readings are retrieved using an Arduino. These reads are sent to the computer via a serial connection.
The temperature of the water and if the user is looking at the kettle is fed into our main control loop. This control loop can turn the kettle on or off to adjust the water temperature using a relay. This relay is controlled by an Arduino.
If a user is looking at the kettle the control loop will keep the temperature of the water below boiling. Sending messages to the Arduino to turn on and off the kettle when needed.
If no users are looking at the kettle the control loop will keep the kettle turned on. And allow the water to boil.
Challenges we ran into
We ran into several challenges while making this project.
One issue we had was retrieving images from the web camera using OpenCV. New images were only being retrieved every 30 seconds. This was a problem because we wanted our system to check for users looking at the kettle every 3 seconds. We overcame this issue by changing the way be initialized the OpenCV camera object.
Another issue we had was communicating with the Arduino. Creating a serial connection which we could read and write to on both sides turned out to be harder than we initially estimated. However we eventually found a nice library named
pyserial which assisted us in these efforts.
Accomplishments that we're proud of
- Using the Google Vision API to analyze an image
- Communicating between an Arduino and a laptop using a serial connection
What we learned
How to create a system which runs components on multiple processors. And how to coordinate the programs running on these processors to achieve an end goal.
What's next for Never Boils
We have two future applications which we would like to apply this technology to.
The first is to reduce the amount of energy used by kettles in households worldwide. We could integrate this technology to ensure that kettles are only used when people are looking at them. This would stop people from wasting energy by leaving the kettle on and then forgetting about it.
We would also like use this technology to improve the safety of kettles worldwide. We speculate that many household injury's are caused by inattentive kettle users. We would like to invert the behavior of our system and ensure that a kettle only boils while a user is looking at them. We hope this would reduce the number of injuries caused inattentive kettle usage.