Introduction to Physical Computing / Week 7 / Midterm Project
For the midterm project, we present Aquarduino! Aquarduino is basically a smart coaster, that detects the level of water in your cup, and based on the time elapsed, gives you reminders to drink water and not dehydrate yourself. I worked with Lindsey on this project. We had brainstormed on many ideas, ideas revolving around board games, toys for pets and audio modulations. But eventually, we decided on something that can find an application in the busy world, and can assist people in some way.
At this point in time, people are becoming increasingly conscious about the food choices that they make, and the physical activity that is needed, in order to live a healthy life. We thought that water is an important part of our daily intake, and has been overlooked by the plethora of apps and smartwatches that are out there. Therefore, we settled on the idea of a smart coaster. Voila!
Theoretically, Aquarduino detects the level of water in a cup and keeps track of the number of cups of water the user has had during the day. For the numbers, we estimated that the average sleeping time for an average human being is 8 hours a day (not applicable to ITP though haha). So, a person is awake for around 16 hours in a day. And the person should have at least 8 glasses of water in the day. And that’s what the project tries to achieve. To remind the user to have at least 8 glasses of water during the day.
For the project, we worked with a force sensitive resistor (FSR) to detect the water level in the cup, and a neopixel LED that can update the user about the water consumption activity. We also integrated the application in p5.js to provide a real time simulation of the level of water in the cup and the count of cups of water that the user has had during the day. The user can reset the coaster in the morning to start over the count.
Most of the challenges that we faced were centered around serial communication between Arduino and p5.
1. Noise. An FSR is not steady and can produce a lot of noise when passing values. To control this we introduced a minimum threshold in the Arduino code, which can detect when a cup is picked up from the coaster and there doesn’t need to be a simulation of results during that time.
2. Constant flow of values. The constant flow of input between Arduino and p5 had to controlled. The overflow of input every 9600 parts of a second was making the simulation to go haywire and project results that were not desired. For instance, random variations in the water level when the cup is picked up to drank from. We decided to modulate the way in which information was exchanged between Arduino and p5.
This simple project can find a useful application in an office/library where people generally get engrossed in work/assignments and forget to consume the recommended quantity of water. If the FSR input is noise-free and works well with water, the application can be extended to alcohol consumption. The coaster can be used in bars/pubs by a bartender to keep track of the amount of beer/wine a customer is having, and to remind them when is a good time to stop.
Lindsey Daniels, Utsav Chadha