Iot Laundry Notifier with Arduino Uno
This is a self-initiated project developed in the summer of 2014. As a precursor to my Senior Design Project, I initiated this to gain additional experience in the hardware/software design process. In addition to expanding my knowledge of working with sensors and the Arduino, the project also exposed me to a number of web development languages such as HTML, CSS, and PHP.
The Laundry Notifier is initiated by a web interface where the user selects which machine is running (i.e., washer, dryer, both). The web server is updated, and the CC3000 uses GET requests to fetch the appropriate sound threshold to test for. The LM386 amplifier and an electret microphone are used to measure sound levels, which are processed with sampling and filtering functions. When the appropriate machine is finished, the CC3000 sends a PUT request to the server; a shell script is then executed and a text message is sent to the user. A video demonstrating the Laundry Notifier is provided below.
This is a self-initiated project for which I conceived the concept, performed research, interfaced hardware, and developed software.
Research, Experimentation, and Hardware Design
- Obtained the necessary equipent (Uno, CC3000, LM386 Amp, passive components).
- Experimented vibration sensor readings.
- Researched and experimented with web development languages.
- Interfaced Uno, LM386 amp, electret mic, and passive components to attain microphone readings.
- Developed Arduino code for the following:
- microphone readings (sampling and max-read filter)
- unit conversion functions (dB and Volts)
- network connections
- server requests (GET and PUT)
- Developed PHP scripts to update server-side data.
- Developed bash shell scripts to send HTTP requests to Lively service and send text messages via cURL.
This project offered a tremendous amount of exposure to both new and familiar technologies. The project was a rewarding experience, yet it was not without difficulty. My initial concept involved using a vibration sensor rather than a microphone. However, the vibration sensor proved ineffective in producing accurate measurements, so I transitioned to using a microphone. Although mic readings were more reliable than the vibration sensor, they were not perfect either. If I were to revisit this project, I would improve the signal processing code and investigate using an accelerometer to measure machine movements.
In developing client/server code, I encountered a vast number of web programming languages which I was previously unfamiliar with. The research and experimentation required to familiarize myself was time-consuming, and the focus of the project was redirected as a result. Although I neglected deeper investigation of signal processing, I familiarized myself with web programming. This was a fortuitous opportunity to learn languages that I would otherwise not be exposed to in my particular major.