The inspiration of this project raised from the need of a connected but central IoT hub for water profiling, leak detection and saving applications. A solution which doesn't require the user to change all his taps and faucets or include costly sensors for each outlet, rather than creating an innovative sensor based system that is easy to implement and cost effective, in short minimal interference and maximum data collection, which is the heart of IoT applications. So that it can be adopted easily and widely.
What it does
The system consists of two main parts, first one is the water flow meter at the top overhead tank which keeps data of all the water used in a day with timestamps, so that user gets all the daily water usage stats in a nice graph and tabular format also can set limits for daily usage. User will get the alerts for not even the usage limit breach but also about any possible leaks in the plumbing. If there is no leak the flow meter will remain constant near 0, but if there is a leak even a small one the water will flow out at very slow rate, thus user will get an alert for possible leak in the system. Moreover, if the user forgot to close a tap the system will generate an alert message for any normal/fast flow retaining longer than an hour.
The second part consists of a very sensitive central sensor (which I am still trying to perfect, by tinkering with various vibration sensors in the market ranging from piezoelectric sensor to sw 18010p). It attaches to a central connection outlet of your plumbing (e.g. your kitchen sink ) whenever the water flows through the plumbing network a wave is generated through whole network, and by detecting the signature (time, and intensity) of the vibration wave we can tell which outlet it is generated from (e.g normal bath lasts upto 30 min, and hand wash 1 min etc), it will use learning algorithms to better understand the waveform signatures. This part is not yet fully implemented because I was waiting for the delivery of a couple of vibration sensors.
How I built it
The artik code is built on C using Temboo libraries, it runs for 10 cycles currently (to save the api calls) at one go but we can keep it running indefinitely.. The code connects to my custom API webservice at my website http://navjotsingh.me/api/showtables.php . The backend code is written in PHP and db is mysql
Challenges I ran into
This time I ran into plethora of challenges, first the late delivery of artik due to custom issues. Second Wifi connection errors in wpa_supplicant (as it turns out you can only save a single wifi on fedora 20) which kept me busy for a week. Thirdly ditching my initial progress with arduino based code for C because I was unable to see the interrupt and serial outputs.Figuring out how to attach the interrupt to a pin in C code (I found a workaround by using timestamps and analogRead() I calculate the flowrate on backend) Last but not the least is my delivery of hypersensitive vibration sensor which I have ordered 40 days ago is about to reach me on 5th April.
Accomplishments that I'm proud of
Working in a completely new environment facing challenges which even a simple google can't solve. Builiding a new type of innovative sensor to detect the water usage from different outlets.
What I learned
How to use vibration sensors and calibrating the sensitivity, running arduino and temboo based code on artik, google charting api
What's next for Drop
The centrally connected vibration sensor is one my best innovative ideas I have worked on so far. Even though I was not able to add it to the current build of the system. I will add it to my system to create a next generation water saving IoT solution. Also machine learning will be implemented to make it more accurate in detecting signatures of outlets