Device Description
-
Give a 2 sentence description of your device.
The Smart Coast is an IoT device designed to promote healthy hydration habits and help the user stay hydrated throughout the day to support energy and productivity.
-
What inspired you to do the project? What problem is your device solving?
Noticing how easy it is to forget drinking enough water during a busy day—and how dehydration undermines energy and focus—sparked the idea for a smart, automated hydration coach. It tackles the common issue of untracked and irregular water intake by sensing each drink, logging consumption in real time to a mobile app, and alerting users when they’ve gone too long without sipping.
Device Functionality
-
Explain how your Internet-connected device is designed.
1. Data Acquisition & Processing
- ADC Input: SAMW25 reads amplified load-cell output to detect cup weight.
- I²C Sensor: SAMW25 polls AHT20 for temperature & humidity data.
- On-Board Logic: Firmware filters readings, identifies “drink events,” and calculates ideal refill intervals.
2. Wi-Fi Connectivity
- SPI Link: SAMW25 controls the Wi-Fi module over SPI.
- Data Upload: After each drink or on a schedule, JSON-formatted payload (timestamp, water volume, temp, humidity) is sent via HTTPS/MQTT to a cloud endpoint.
3. Remote Control & Feedback
- Cloud Sync: User settings (thresholds, alert intervals) are delivered from the cloud back to the SAMW25.
- Buzzer Alerts: If the cup remains idle past the configured interval, SAMW25 drives a MOSFET to trigger the buzzer, closing the feedback loop.
-
System-level block diagram
Challenges
-
Where did you face difficulties? This could be in firmware, hardware, software, integration, etc.
The FX1901 loadcell along with INA125P amplifier won't work as expected. The only way to maintain it's functionality is to add a 2.26V bias voltage, which is unacceptable for an IoT product. Besides, the LED strip was much more complex to use than we expected. Because we spent too much time on the loadcell before, we were unable to realize the intended function of the LED within the limited time. Moreover, we mistakenly hided all the designators on our PCBA, which seriously negatively affected the manufacturing process.
-
How did you overcome these challenges?
In the last few days before the demo, we decided to replace it with another loadcell. Although it was not as sensitive as expected, it worked fine. Although we weren't able to leverage LED strip, we adjusted the frequency of the buzzer sound to remind users in a more pleasant way. We added all the designators just in time with the assistance of TA.
Prototype Learnings
-
What lessons did you learn by building and testing this prototype?
One thing we learned is that we should never procrastinate on a problem for too long. If stuck at somewhere, just move forward and focus on other aspects of the project. Also, a more detailed time frame is needed to gurantee everything is settled down on time.
-
What would you do differently if you had to build this device again?
We should use a more commonly adopted load cell solution so that even when issues arise, we can find more existing resources and debugging experiences. Additionally, we should pay attention to selecting LEDs that are easy to drive. The Adafruit Neopixel LED strip we previously chose requires complex control and heavily relies on Adafruit's proprietary libraries, making it very difficult to implement on our SAM W25. Therefore, we should use LEDs that are simpler to control and can be driven with just a single GPIO pin.
Next Steps & Takeaways
-
What steps are needed to finish or improve this project?
The first step is to add the LED strip to this project, since it should've been the most attractive and good-looking part of the project. Meanwhile, we would like to develop a multiple-coaster system in which the data related to hydration will be synchronized to each coaster. This enables seamless switching among different usage scenarios. In addition, we should develop a custom algorithm that determines our notification behaviors based on the user's past drinking actions combined with temperature and humidity data.
-
What did you learn in ESE5160 through the lectures, assignments, and this course-long prototyping project?
The course deepened our understanding of Internet-of-Things products, embedded systems, and the interactions among hardware, firmware, and software; it led us through the whole process from inception of an idea to its implementation. Overall, this has given us greater confidence in developing hardware systems. It showed me that even complex IoT devices can be understood and built in a structured way, and that there are systematic methods for troubleshooting when problems arise.
Project Links
-
Provide a URL to your Node-RED instance for our review (make sure it’s running on your Azure instance!)
Link to Node-RED instance
Our node-red needs to be started manually in PowerShell, so we post the configuration file to the Github repo for your review.
-
Provide the share link to your final PCBA on Altium 365.
Link to final PCBA
Back to home page