Architecture of the device and communication!
One of the devices. Apple for scale.
the 3D printer making another enclosure!
Human forgetfulness is bad, and we need ways to remind ourselves to do things. In my biomedical research laboratory, people forget to order fresh lab supplies. These supplies include ingredients to a drug, reagents for a diagnostic device... anything! This means we can accidentally be using expired reagents or have development delays because of this oversight.
To reduce the burden of needing to remember to order new lab supplies (when it's tough to, when you're in a lab with no computer around...) I made a Amazon Dash-like device with buttons that users can press, which sends an email and text to the lab manager requesting ordering of low supplies. A Flask server I deployed on a Google Cloud Platform Instance receives the button press POST request, sends that email/text, logs the request in MongoDB Atlas, and will send emails in the future of supply expiry - when the new supplies come, the server will send reminders that we should throw away the new supplies after their expiry.
How I built it
The device is simple, using 4 simple tactile buttons wired to a Particle Photon, which connects via webhooks to a Flask server deployed to a Google Cloud Platform VM instance. The Flask server uses the MongoDB Atlas API to save all button press requests for order confirmation and supply information, Twilio to send texts to users, and Sendgrid to send emails as well. The enclosure was designed in SolidWorks, sliced in Cura, and printed on a Lulzbot Taz6 and Creality CR-10mini.
What's next for buttons
I will see how I can couple the device to actually order supplies directly- like the Amazon Dash button. I will also add more functionality to the buttons-- and will build more button devices! The device can also be used by consumers- put this device on your fridge so you get reminded to throw out that old milk, or to use your peppers before they go moldy! The platform is really versatile.