{"id":15228,"date":"2022-03-10T19:38:31","date_gmt":"2022-03-11T00:38:31","guid":{"rendered":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/?p=15228"},"modified":"2022-03-16T01:25:55","modified_gmt":"2022-03-16T05:25:55","slug":"15228-2","status":"publish","type":"post","link":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/15228-2\/","title":{"rendered":"Water Drinking Recorder"},"content":{"rendered":"<p><span style=\"font-weight: 400\"><span style=\"text-decoration: underline\"><em>Device Function:<\/em><\/span> The core of this device is a scale that weighs the amount of water in a bottle and updates how much of your goal you have reached based on the difference in measurements.\u00a0<\/span><\/p>\n<p style=\"text-align: left\"><span style=\"text-decoration: underline\"><em>Moving Image:\u00a0<\/em><\/span><\/p>\n<div style=\"width: 620px;\" class=\"wp-video\"><!--[if lt IE 9]><script>document.createElement('video');<\/script><![endif]-->\n<video class=\"wp-video-shortcode\" id=\"video-15228-1\" width=\"620\" height=\"349\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/Untitled-1.mp4?_=1\" \/><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/Untitled-1.mp4\">https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/Untitled-1.mp4<\/a><\/video><\/div>\n<p>&nbsp;<\/p>\n<p><em><span style=\"text-decoration: underline\">Scale Image:<\/span><\/em><\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-15330 size-full\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/like1-scaled.jpg\" alt=\"\" width=\"2560\" height=\"2217\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/like1-scaled.jpg 2560w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/like1-300x260.jpg 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/like1-1024x887.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/like1-768x665.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/like1-1536x1330.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/like1-2048x1773.jpg 2048w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/like1-973x842.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/like1-508x440.jpg 508w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/p>\n<p><span style=\"text-decoration: underline\"><em>Detail Image:\u00a0<\/em><\/span><\/p>\n<p>&nbsp;<\/p>\n<div id=\"attachment_15287\" style=\"width: 1930px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-15287\" loading=\"lazy\" class=\"wp-image-15287 size-full\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/led-scaled.jpg\" alt=\"\" width=\"1920\" height=\"2560\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/led-scaled.jpg 1920w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/led-225x300.jpg 225w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/led-768x1024.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/led-1152x1536.jpg 1152w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/led-1536x2048.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/led-973x1297.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/led-508x677.jpg 508w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><p id=\"caption-attachment-15287\" class=\"wp-caption-text\">This is the LED strip that is a visual indicator of when the user reaches their goal<\/p><\/div>\n<p>&nbsp;<\/p>\n<div id=\"attachment_15288\" style=\"width: 1930px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-15288\" loading=\"lazy\" class=\"wp-image-15288 size-full\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/electronic-organization-scaled.jpg\" alt=\"\" width=\"1920\" height=\"2560\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/electronic-organization-scaled.jpg 1920w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/electronic-organization-225x300.jpg 225w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/electronic-organization-768x1024.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/electronic-organization-1152x1536.jpg 1152w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/electronic-organization-1536x2048.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/electronic-organization-973x1297.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/electronic-organization-508x677.jpg 508w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><p id=\"caption-attachment-15288\" class=\"wp-caption-text\">One of my focuses for this device was to make it visually appealing. I did this by creating a separate space for each component of the device. Arduino at the bottom, breadboard in the middle and load cell at the top.<\/p><\/div>\n<p><span style=\"text-decoration: underline\"><em>Function Image:<\/em><\/span><\/p>\n<div id=\"attachment_15377\" style=\"width: 1923px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-15377\" loading=\"lazy\" class=\"wp-image-15377 size-full\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_6004-scaled-e1647381351137.jpg\" alt=\"\" width=\"1913\" height=\"1535\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_6004-scaled-e1647381351137.jpg 1913w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_6004-scaled-e1647381351137-300x241.jpg 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_6004-scaled-e1647381351137-1024x822.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_6004-scaled-e1647381351137-768x616.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_6004-scaled-e1647381351137-1536x1232.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_6004-scaled-e1647381351137-973x781.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_6004-scaled-e1647381351137-508x408.jpg 508w\" sizes=\"(max-width: 1913px) 100vw, 1913px\" \/><p id=\"caption-attachment-15377\" class=\"wp-caption-text\">LCD display asks to measure water. If user answers yes, next message is displayed.<\/p><\/div>\n<div id=\"attachment_15378\" style=\"width: 1917px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-15378\" loading=\"lazy\" class=\"wp-image-15378 size-full\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_6005-scaled-e1647381336173.jpg\" alt=\"\" width=\"1907\" height=\"1670\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_6005-scaled-e1647381336173.jpg 1907w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_6005-scaled-e1647381336173-300x263.jpg 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_6005-scaled-e1647381336173-1024x897.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_6005-scaled-e1647381336173-768x673.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_6005-scaled-e1647381336173-1536x1345.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_6005-scaled-e1647381336173-973x852.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_6005-scaled-e1647381336173-508x445.jpg 508w\" sizes=\"(max-width: 1907px) 100vw, 1907px\" \/><p id=\"caption-attachment-15378\" class=\"wp-caption-text\">After answering yes on the serial monitor, the LCD display shows how much water the user had and how much they have left to reach their goal.<\/p><\/div>\n<div id=\"attachment_15300\" style=\"width: 1294px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-15300\" loading=\"lazy\" class=\"wp-image-15300 size-full\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_5983.jpg\" alt=\"\" width=\"1284\" height=\"672\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_5983.jpg 1284w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_5983-300x157.jpg 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_5983-1024x536.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_5983-768x402.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_5983-973x509.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_5983-508x266.jpg 508w\" sizes=\"(max-width: 1284px) 100vw, 1284px\" \/><p id=\"caption-attachment-15300\" class=\"wp-caption-text\">Once the goal is met, the LED strip turns on and the device asks if the user wants to restart.<\/p><\/div>\n<p>&nbsp;<\/p>\n<p><strong>Progress:<\/strong><\/p>\n<p><span style=\"text-decoration: underline\"><em>Decision Point 1:\u00a0<\/em><\/span> When I first designed my device, I had thought that my plates only needed to be half an inch wider in radius than my personal water bottle. I laser cut three plates according to my intial sketches but soon realized that these plates were too small. Although they could still hold my water bottle, I realized there wasn&#8217;t enough space for all my electronics and that when the bottle was placed on the device, it wasn&#8217;t pleasing to look at. To fix the issue I cut larger sized plates and printed 4 plates instead of 3 plates. I now had enough space for the Arduino and breadboard and was satisfied with the overall aesthetic of my device with this change.<\/p>\n<div id=\"attachment_15229\" style=\"width: 1930px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-15229\" loading=\"lazy\" class=\"wp-image-15229 size-full\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/platesDoc-scaled.jpg\" alt=\"\" width=\"1920\" height=\"2560\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/platesDoc-scaled.jpg 1920w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/platesDoc-225x300.jpg 225w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/platesDoc-768x1024.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/platesDoc-1152x1536.jpg 1152w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/platesDoc-1536x2048.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/platesDoc-973x1297.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/platesDoc-508x677.jpg 508w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><p id=\"caption-attachment-15229\" class=\"wp-caption-text\">This shows a comparison between the original smaller plates and the larger plates cut after revision.<\/p><\/div>\n<p><span style=\"text-decoration: underline\"><em>Decision Point 2:<\/em><\/span> I had mainly worked on my device using a temporary 1kg load cell while I waited for a 5kg load cell to arrive. It turns out that the measurements of the 1kg load cell were not the same as the measurements on the 5kg load cells. But given that there was not enough time to re-laser cut the plates that would hold the load cell, I decided to move forward using double sided sticky tape. Unfortunately I could not demo my device using my personal 40 oz water bottle as the double sided sticky could not keep the plate sturdy with heavy objects. Fortunately, with a standard sized plastic water bottle, my device still worked as intended.<\/p>\n<div id=\"attachment_15230\" style=\"width: 1930px\" class=\"wp-caption alignleft\"><img aria-describedby=\"caption-attachment-15230\" loading=\"lazy\" class=\"wp-image-15230 size-full\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/spacersMismatch-scaled.jpg\" alt=\"\" width=\"1920\" height=\"2560\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/spacersMismatch-scaled.jpg 1920w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/spacersMismatch-225x300.jpg 225w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/spacersMismatch-768x1024.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/spacersMismatch-1152x1536.jpg 1152w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/spacersMismatch-1536x2048.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/spacersMismatch-973x1297.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/spacersMismatch-508x677.jpg 508w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><p id=\"caption-attachment-15230\" class=\"wp-caption-text\">Spacer holes don&#8217;t match with the holes on the 5kg load cell<\/p><\/div>\n<div id=\"attachment_15231\" style=\"width: 2570px\" class=\"wp-caption alignleft\"><img aria-describedby=\"caption-attachment-15231\" loading=\"lazy\" class=\"wp-image-15231 size-full\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/doubleTape-scaled.jpg\" alt=\"\" width=\"2560\" height=\"1920\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/doubleTape-scaled.jpg 2560w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/doubleTape-300x225.jpg 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/doubleTape-1024x768.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/doubleTape-768x576.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/doubleTape-1536x1152.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/doubleTape-2048x1536.jpg 2048w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/doubleTape-973x730.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/doubleTape-508x381.jpg 508w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><p id=\"caption-attachment-15231\" class=\"wp-caption-text\">Chose to use double sided sticky tape to attach load cell due to time crunch<\/p><\/div>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-decoration: underline\"><em>Design Process:<\/em><\/span><\/p>\n<div id=\"attachment_15232\" style=\"width: 556px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-15232\" loading=\"lazy\" class=\"wp-image-15232 size-full\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-10-at-3.38.23-PM.png\" alt=\"\" width=\"546\" height=\"862\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-10-at-3.38.23-PM.png 546w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-10-at-3.38.23-PM-190x300.png 190w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-10-at-3.38.23-PM-508x802.png 508w\" sizes=\"(max-width: 546px) 100vw, 546px\" \/><p id=\"caption-attachment-15232\" class=\"wp-caption-text\"><strong>First Design on TinkerCad<\/strong><br \/>The bottom plate was supposed to be thicker to attach LCD and LED strip. Everything including the support bars were to be 3D printed.<\/p><\/div>\n<p>&nbsp;<\/p>\n<div id=\"attachment_15233\" style=\"width: 1930px\" class=\"wp-caption alignleft\"><img aria-describedby=\"caption-attachment-15233\" loading=\"lazy\" class=\"wp-image-15233 size-full\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_5860-scaled.jpg\" alt=\"\" width=\"1920\" height=\"2560\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_5860-scaled.jpg 1920w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_5860-225x300.jpg 225w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_5860-768x1024.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_5860-1152x1536.jpg 1152w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_5860-1536x2048.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_5860-973x1297.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_5860-508x677.jpg 508w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><p id=\"caption-attachment-15233\" class=\"wp-caption-text\"><strong>Second Revision <\/strong><br \/>Progress after changing the plate sizes. At this stage I was testing with the 1kg load cell. There was no led strip or LCD display.<\/p><\/div>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<div id=\"attachment_15234\" style=\"width: 620px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-15234\" loading=\"lazy\" class=\"wp-image-15234 size-full\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_F224523EB9C4-1.jpeg\" alt=\"\" width=\"610\" height=\"700\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_F224523EB9C4-1.jpeg 610w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_F224523EB9C4-1-261x300.jpeg 261w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/IMG_F224523EB9C4-1-508x583.jpeg 508w\" sizes=\"(max-width: 610px) 100vw, 610px\" \/><p id=\"caption-attachment-15234\" class=\"wp-caption-text\"><strong>Final Revision <\/strong>(before load cell change)<br \/>I added an LED strip, the LCD Display and secured all electronics to their respective plates. I also started testing using an actual water bottle.<\/p><\/div>\n<p><strong>Discussion:\u00a0<\/strong><\/p>\n<p><em><span style=\"text-decoration: underline\">In Class Crit:<\/span><\/em><\/p>\n<p>I agree that my device would be &#8220;convenient and easy to use for college students&#8221;. In fact my inspiration for this project came from the fact that I tend to forget to drink water as I do my coursework. And so having something portable and on my desk makes it easier to remember. Many comments pointed out that the device looked unstable. One person suggested to &#8220;<span style=\"font-weight: 400\">add more pole supports to make the device more stable since it looked like it would tip if the bottle wasn\u2019t put right in the middle&#8221;. Along with this suggestion I would also use a better supported load cell. As I mentioned above the use of double sided sticky tape was a large reason why the device was unstable. Adding extra poles and bolts would definitely help. Overall I&#8217;m glad many people liked the use of plates to make the device look cleaner and aesthetic as that was a large goal of mine.\u00a0<\/span><\/p>\n<p><em><span style=\"text-decoration: underline\">Self Critique:<\/span><\/em><\/p>\n<p><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0I am happy with my project but I&#8217;m not completely satisfied with it. I think that despite my negative thoughts that I will not be able to complete this project, I still met my main goals. For that I am very proud of myself. Originally my idea was for my device to take all measurements by itself and have a more attractive LCD display. The current version of my project is more user dependent and heavily relies on the user to take measurements and function as intended. Going forward I would like to remove this reliability or at least integrate it within the device rather than an external computer.\u00a0<\/span><\/p>\n<p><span style=\"text-decoration: underline\"><em>Lessons:<\/em><\/span><em>\u00a0\u00a0<\/em><\/p>\n<p><span style=\"font-weight: 400\">\u00a0 \u00a0 I learned that I could apply my programming skills to actual products and not just assignments in my classes. I found the coding for this project especially difficult because the load cell takes continuous measurement. I had to be in control of which of the stream of readings from the load cell to use for calculations. I worked around this issue by adding a user interface through the Serial Monitor. I asked the user when they wanted to take a measurement and only when \u201cyes\u201d was entered did my code move forward with the program.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">\u00a0 \u00a0 I also learned that all is not lost if things don\u2019t go as planned at the last minute. I was very afraid when I received my demo load cell the day before the assignment was due and found that my laser cut pieces don\u2019t align with the load cell holes. Instead of using screws, I went with double sided tape and found that my device still worked. In the future though, I want to take this as a lesson to have my parts ahead of time. In general I learned that its important to set milestones and work with what you have each step of the way instead of waiting to perfect everything. This way I\u2019m not crunching for time and stress less.\u00a0<\/span><\/p>\n<p><span style=\"text-decoration: underline\"><em>Next Steps:<\/em><\/span><\/p>\n<p><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0I would like to make another iteration if I have the time and opportunity to do so. Given that I do have both, I would like to remove the user input from my laptop and instead add buttons to the device for user input. I would also change the LCD display so that it shows a visual icon (like a battery) to indicate how much of my goal I have met. I would also laser print the plates again so that I can bolt the load cell rather than use tape.\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Technical: <\/strong><\/p>\n<p><span style=\"text-decoration: underline\"><em>Schematic:<\/em><\/span><\/p>\n<p><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/15228-2\/project2-2-2\/\" rel=\"attachment wp-att-15482\"><img loading=\"lazy\" class=\"alignnone wp-image-15482 size-full\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/Project2-2-1.jpg\" alt=\"\" width=\"713\" height=\"1013\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/Project2-2-1.jpg 713w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/Project2-2-1-211x300.jpg 211w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/Project2-2-1-508x722.jpg 508w\" sizes=\"(max-width: 713px) 100vw, 713px\" \/><\/a><\/p>\n<p><span style=\"text-decoration: underline\"><em>Block Diagram:<\/em><\/span><\/p>\n<p><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/15228-2\/block-diagram-2-2\/\" rel=\"attachment wp-att-15513\"><img loading=\"lazy\" class=\"alignnone wp-image-15513 size-full\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/Block-Diagram-2.jpg\" alt=\"\" width=\"1229\" height=\"846\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/Block-Diagram-2.jpg 1229w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/Block-Diagram-2-300x207.jpg 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/Block-Diagram-2-1024x705.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/Block-Diagram-2-768x529.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/Block-Diagram-2-973x670.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/03\/Block-Diagram-2-508x350.jpg 508w\" sizes=\"(max-width: 1229px) 100vw, 1229px\" \/><\/a><\/p>\n<p><span style=\"text-decoration: underline\"><em>Code:<\/em><\/span><\/p>\n<p>&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\">#include &lt;Q2HX711.h&gt;\r\n#include &lt;LiquidCrystal_I2C.h&gt;\r\n#include &lt;PololuLedStrip.h&gt;\r\n#include \"HX711.h\"\r\n\r\n\r\n\/*\r\n * @Title: Water Drinking Recorder\r\n * @author: Sumayya Syeda\r\n * @Description: This program uses the Serial Monitor to allow for user input and take measurements of items placed on the load cell. \r\n                 Based on the difference between consecuitive measurements, the program updates properties that indicates how much water is left, \r\n                 how much water is currently in the bottle and if the user goal has been met. \r\n                 When the goal is met the LEDs turn on. \r\n \r\n   HX711 Calibration code by ElectroPeak\r\n   https:\/\/create.arduino.cc\/projecthub\/electropeak\/digital-force-gauge-weight-scale-w-loadcell-arduino-7a7fd5\r\n*\/\r\n\r\n\r\nHX711 scale;\r\nPololuLedStrip&lt;12&gt; ledStrip;\r\nLiquidCrystal_I2C screen(0x27, 16, 2);\r\n\r\nconst int LOADCELL_DOUT_PIN = 4;\r\nconst int LOADCELL_SCK_PIN = 5;\r\n\r\n\/\/ Create a buffer for holding the colors (3 bytes per color).\r\n#define LED_COUNT 60\r\nrgb_color colors[LED_COUNT];\r\nrgb_color off = rgb_color(0, 0, 0);\r\n\r\nfloat goal, og_water, curr_water, water_drank;\r\nfloat old_curr, old_drank;\r\nfloat units;\r\nbool read_init, no_change, reached_goal, no;\r\nconst float CALIBRATION_FACTOR = 505;\r\n\r\nvoid setup() {\r\n  goal = 0;\r\n  og_water = 0;\r\n  curr_water = 0;\r\n  water_drank = 0;\r\n  old_curr = 0;\r\n  old_drank = 0;\r\n  units = 0;\r\n\r\n  Serial.begin(9600);\r\n\r\n  screen.init();\r\n  screen.backlight();\r\n  screen.home();\r\n  screen_print(screen, \"Track your drinking!\", 0, 0);\r\n\r\n  turnLEDOff();\r\n\r\n  scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);\r\n  calibrate_setup();\r\n  goal_setup();\r\n\r\n\r\n}\r\nvoid loop() {\r\n  Serial.print(\"---- \");\r\n  Serial.print();\r\n  Serial.println(\" ----\");\r\n\r\n  \/\/tare;\r\n  if (Serial.available()) {\r\n    char temp = Serial.read();\r\n    if (temp == 't' || temp == 'T') {\r\n      scale.tare();  \/\/Reset the scale to zero\r\n    }\r\n  }\r\n\r\n  if (!reached_goal) {\r\n    screen.clear();\r\n    Serial.println(\"Measure water?\"); \/\/Prompt User for Input'\r\n    screen_print(screen, \"Measure water?\", 0, 0);\r\n\r\n    Serial.print(\"OG:\");\r\n    Serial.println(og_water);\r\n\r\n\r\n    while (Serial.available() == 0 &amp;&amp; !reached_goal) {\r\n      print_measure_message();\r\n    }\r\n\r\n    String response = Serial.readString();\r\n\r\n    if(response == \"yes\") {\r\n      read_scale();\r\n      curr_water = units;\r\n\r\n      float diff = old_curr - curr_water;\r\n      if (abs(diff) &lt; 1) {\r\n        diff = 0;\r\n      }\r\n\r\n      Serial.print(\"OG: \");\r\n      Serial.println(og_water);\r\n      screen.clear();\r\n      screen_print(screen, \"OG:\", 0, 0);\r\n      screen.setCursor(4, 0);\r\n      screen.print(og_water);\r\n\r\n      Serial.print(\"curr water: \");\r\n      Serial.println(curr_water);\r\n      screen_print(screen, \"curr:\", 10, 0);\r\n      screen.setCursor(15, 0);\r\n      screen.print(curr_water);\r\n\r\n      \/\/no change state\r\n      if (curr_water &lt;= (old_curr + .5) &amp;&amp; curr_water &gt;= (old_curr - .5)) {\r\n        print_no_change_message();\r\n        delay(2000); \/\/Display message for 2 seconds\r\n        screen.clear();\r\n      } \r\n      else { \/\/change states\r\n        \r\n        if (diff &gt; 0) {      \/\/water decreased in bottle\r\n          water_drank += diff;\r\n          print_water_drank_message();\r\n          delay(3000); \/\/Display message for 3 seconds\r\n          screen.clear();\r\n        } \r\n        else if (diff &lt; 0) {    \/\/water increased decreased in bottle\r\n          og_water += diff * -1;\r\n          print_water_added_message(diff);\r\n          delay(3000); \/\/Display message for 3 seconds\r\n          screen.clear();\r\n        }\r\n      }\r\n    }\r\n    else if (response == \"no\") { \/\/did not want to measure water\r\n      screen.clear();\r\n      Serial.print(\"OG: \");\r\n      Serial.println(og_water);\r\n      screen_print(screen, \"OG: \", 0, 0);\r\n      screen.setCursor(3, 0);\r\n      screen.print(og_water);\r\n\r\n      screen_print(screen, \"You drank: \", 0, 1);\r\n      screen.setCursor(10, 1);\r\n      screen.print(water_drank);\r\n      screen_print(screen, \"Left: \", 0, 2);\r\n      screen.setCursor(10, 2);\r\n      screen.print(goal - water_drank);\r\n\r\n      delay(4000); \/\/wait 4 seconds before asking again\r\n    }\r\n  }\r\n\r\n  \/\/Reached goal state\r\n  if (water_drank &gt;= (goal - 0.6)) {\r\n    Serial.println(\"You reached your goal!!\");\r\n    goal = 0;\r\n    turnLEDColors__on();\r\n    reached_goal = true;\r\n    if (!no) {\r\n      Serial.println(\"Again?\");\r\n      screen_print(screen, \"Again? \", 0, 0);\r\n      while (Serial.available() == 0) {\r\n        \/\/ Wait for User to Input Data\r\n      }\r\n      if (Serial.readString() == \"yes\") {\r\n        turnLEDOff();\r\n        goal_setup();\r\n      }\r\n      else if (Serial.readString() == \"no\") { \/\/does not want to measure again\r\n        no = true;\r\n        reached_goal = true;\r\n\r\n      }\r\n    }\r\n  }\r\n\r\n  if (no) { \/\/if don't want to measure again, blink LEDs\r\n    screen.clear();\r\n    turnLEDOff();\r\n    delay(20);\r\n    turnLEDColors_on();\r\n\r\n  }\r\n\r\n  old_curr = curr_water;\r\n  old_drank = water_drank;\r\n\r\n}\r\n\r\n\/**Calibrate the load cell. Only needs to be done once**\/\r\nvoid calibrate_setup() {\r\n  scale.set_scale(CALIBRATION_FACTOR); \/\/Adjust to this calibration factor\r\n  scale.tare();  \/\/Reset the scale to 0\r\n\r\n  long zero_factor = scale.read_average(); \/\/Get a baseline reading\r\n}\r\n\r\n\/**Reads the load scale measurement and sets the global variable: \"units\". \"Units\" can be accessed anywhere to get the weight measurment in ml**\/\r\nvoid read_scale() {\r\n  units = scale.get_units(), 5;\r\n  if (units &lt; 0)\r\n  {\r\n    units = 0.00;\r\n  }\r\n}\r\n\r\n\/**General print function for lcd display**\/\r\nvoid screen_print(LiquidCrystal_I2C lcd, String message, int x, int y) {\r\n  lcd.setCursor(x, y);\r\n  lcd.print(message);\r\n}\r\n\r\n\/**Turn on LEDs off**\/\r\nvoid turnLEDOff() {\r\n  for (uint16_t i = 0; i &lt; LED_COUNT; i++)\r\n  {\r\n    colors[i] = off;\r\n  }\r\n  ledStrip.write(colors, LED_COUNT);\r\n}\r\n\r\n\/**LED changes color on a gradient**\/\r\nvoid turnLEDColors_on() {\r\n  byte time = millis() &gt;&gt; 2;\r\n  for (uint16_t i = 0; i &lt; LED_COUNT; i++)\r\n  {\r\n    byte x = time - 8 * i;\r\n    colors[i] = rgb_color(x, (255 - x), x);\r\n    delay(10);\r\n  }\r\n\r\n  \/\/ Write the colors to the LED strip.\r\n  ledStrip.write(colors, LED_COUNT);\r\n\r\n}\r\n\r\n\/**sets up goal variable by asking user**\/\r\nvoid goal_setup() {\r\n\r\n  \/**Ask for goal and store value in \"goal\"**\/\r\n  Serial.println(\"What is your goal?\");\r\n  screen.clear();\r\n  screen_print(screen, \"What is your goal?\", 0, 0);\r\n  while (Serial.available() == 0) {\r\n    \/\/ Wait for User to Input Data\r\n  }\r\n  goal = Serial.parseInt();\r\n  Serial.println(\"Place your water bottle on the scale!\");\r\n  screen_print(screen, \"Place your bottle on the scale!\", 0, 0);\r\n\r\n  delay(3000); \/\/give time to place bottle\r\n\r\n  read_scale();\r\n  screen.clear();\r\n\r\n  if (read_init == false) {\r\n    \/**set initial water readings**\/\r\n    og_water = units;\r\n    curr_water = units;\r\n    old_curr = units;\r\n    Serial.print(\"Init water: \");\r\n    Serial.println(og_water);\r\n    screen_print(screen, \"OG water: \", 0, 0);\r\n    screen.setCursor(0, 10);\r\n    screen.print(og_water);\r\n    read_init = true;  \/\/once a reading is taken, don't take another\r\n  }\r\n\r\n  \/**print weight to serial monitor and LCD**\/\r\n  Serial.print(\"Weight: \");\r\n  Serial.print(units);\r\n  Serial.print(\" grams\");\r\n  Serial.println();\r\n\r\n  screen.clear();\r\n  screen_print(screen, \"Weight(ml): \", 0, 0);\r\n  screen.setCursor(10, 0);\r\n  screen.print(units);\r\n  delay(1000);\r\n\r\n  reached_goal = false;\r\n  water_drank = 0;\r\n  old_drank = 0;\r\n\r\n}\r\n\r\n\/**Message to print while device waits for user to measure their water**\/\r\nvoid print_measure_message() {\r\n  screen_print(screen, \"Measure water?\", 0, 0);\r\n  delay(1000);\r\n  screen.clear();\r\n  screen_print(screen, \"OG:\", 0, 0);\r\n  screen.setCursor(5, 0);\r\n  screen.print(og_water);\r\n\r\n  screen_print(screen, \"You drank:\", 0, 1);\r\n  screen.setCursor(11, 1);\r\n  screen.print(water_drank);\r\n  screen_print(screen, \"Left:\", 0, 2);\r\n  screen.setCursor(10, 2);\r\n  screen.print(curr_water);\r\n  delay(1000);\r\n  screen.clear();\r\n}\r\n\r\n\/**Message to print if there is no change between measurements**\/\r\nvoid print_no_change_message() {\r\n  Serial.println(\"No change!\");\r\n  Serial.print(\"You drank: \");\r\n  Serial.println(water_drank);\r\n\r\n  screen_print(screen, \"No change!\", 0, 1);\r\n  screen_print(screen, \"You drank:\", 0, 2);\r\n  screen.setCursor(10, 2);\r\n  screen.print(water_drank);\r\n}\r\n\r\n\/**Message to print if the user drank some water**\/\r\nvoid print_water_drank_message() {\r\n  Serial.print(\"You drank: \");\r\n  Serial.println(water_drank);\r\n  Serial.print(\"You have left: \");\r\n  Serial.println(curr_water);\r\n\r\n  screen_print(screen, \"You drank: \", 0, 1);\r\n  screen.setCursor(10, 1);\r\n  screen.print(water_drank);\r\n  screen_print(screen, \"Left: \", 0, 2);\r\n  screen.setCursor(10, 2);\r\n  screen.print(goal - water_drank);\r\n\r\n}\r\n\r\n\/** Messsage to print if the user added some water to bottle**\/\r\nvoid print_water_added_message(float diff) {\r\n  Serial.print(\"Water added: \");\r\n  Serial.println(diff);\r\n  Serial.print(\"You now have: \");\r\n  Serial.println(og_water);\r\n\r\n  screen_print(screen, \"Add: \", 0, 1);\r\n  screen.setCursor(10, 1);\r\n  screen.print(diff * -1);\r\n  screen_print(screen, \"Left: \", 0, 2);\r\n  screen.setCursor(10, 2);\r\n  screen.print(goal - water_drank);\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Device Function: The core of this device is a scale that weighs the amount of water in a bottle and updates how much of your goal you have&#8230;<\/p>\n","protected":false},"author":222,"featured_media":15328,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[89],"tags":[],"_links":{"self":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/posts\/15228"}],"collection":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/users\/222"}],"replies":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/comments?post=15228"}],"version-history":[{"count":25,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/posts\/15228\/revisions"}],"predecessor-version":[{"id":15376,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/posts\/15228\/revisions\/15376"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/media\/15328"}],"wp:attachment":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/media?parent=15228"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/categories?post=15228"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/tags?post=15228"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}