Backstory
So I'm a guy, who loves indulging in challenges. An optimist who tries finding fulfillment everywhere. "To define is to limit" said a great man so I'm in a quest to do all the stuff without any bounds by trying to seize my day the best.
But wait to seize my day, I need to wake up first. To wake up I need to stop snoozing my alarm or make my alarm so noticeable that I don't happily sleep off in ignorance and later look at the missed alarm notification with despair, of course damping my "seize the day" zeal to nadir yet another day :( . And more worse was the times I had 8 AM classes at halls far away, and I barely used to gain conscious at 7:45 AM, what a day-mare it was! And many such situations aren't uncommon for us power sleepers out there. My optimism tells me take take this as a challenge and make something of this. And so it struck me to make an alarm that shoots water and wakes the heck of me refreshed. So my pursuit began...
Working
This is the basic view of circuit with RPi, Pump, Camera being the primary units.
Being a fan of Nolan flicks especially Batman trilogy, who can be more cooler a servant than Alfred Pennyworth. Hence my servant bot named "Alfred Pi-nyworth".
Send a message to bot set time, show a smiley face to stop the spray.
display_time.py and telegramBot_Control.py need to run in separate terminal. As for face detection, cam display window needs to be accessed, the telegramBot_Control.py should be run directly or using VNC not SSH.
Constraints and Materials
I wanted my old RPi 3 as brain for this device with build being modular and utilize the unused material available at home. With this intension I scouted my store room and found an old rubber pipe, short plastic pipe and connector of water dispenser and nozzle of a broken plant sprayer. Luckily all fit perfectly. LEGOs were the first things that came up thinking of modularity, so made base, skeleton with them and used a packing foam sheet pieces to cover the rest.
Coding
Used common time library, Adafruit library for display part, and OpenCV, Telepot, GPIO libraries for Smile detection, telegram control and pump part. Did some copy, paste, improvisation of codes. Alarm time to be inputted with alarm word and time in HH:MM at last 5 digits. I must admit that I should have made more robust code and better code structures so will definitely update them.
Suggestions
This may be a simple implementation to start out but will be hoping to make this better with newer ideas. Hence always open for suggestions!
PS: my first documented project, hence might be a little overly stated/engineered :)
Great work Manas!!