Problem: I live in a double duplex (quadplex?) with one washing/dryer unit in the basement. Living on the top floor, it’s mildly inconvenient if I take the three flight journey to the basement only to find someone else already using the laundry machines. Then I often forget I was waiting for laundry, or take too long and end up having someone else take my slot. I believe there is a better way to not only check if its being used (more than a webcam!) but also to smartly inform behavior if it is in fact being used. While this is somewhat a selfish assignment from my end, I do think processes like this that can allow users to not exert themselves on staircases are helpful overall. My grandmother lived in a two-story house, walking up and down the steps daily, for probably too long, and this would ease the burden.
Solution: A system that broadcasts availability of the laundry machines, and also reminds users upon their availability after checking to ensure efficient use patterns of both. Users are alerted via a beep and red LED.
Proof of Concept: The user would activate the system whenever they were wanting to do laundry. If available, the system would immediately beep and let them know it was “safe” to do so. If not, the system would remain dormant until either a) the wash cycle on the washer had passed or b) the washer stopped running. Choice A is more of a failsafe in case the accelerometer isn’t working as it is a “maximum possible time the washer could run,” but the real meat of the concept is in B. An accelerometer responds to the washing machine movement to let the user know easily if it is in use or not.
Fritzing Sketch:
Basic sketch w/ speaker and LED on digital out with an overkill accelerometer only outputting its change in Y. A less intense accelerometer would be fine, but this is the one I found first. The only major assumption is on the accelerometer being 3 flights below the controller, but it wouldn’t be that hard to make it broadcast wirelessly.
Arduino Psuedocode:
Single-state of waiting when powered on by the user to check the laundry machine availability.
bool isTime, isInUse;
float timer = 60f * 30f; // 60secs * 30mins, adjustable dependent on wash cycle
float timeToOff = 60f * 2f;
void loop() {
isInUse = MotionSensorStatus(); // base it off some function that reads motion input
timer -= deltaTime; // whatever the time since powering on is
if (!isInUse || timer <= 0f) {
itsTime();
}
}
void itsTime() {
// power on LED and make a beep to notify them
// power off system after a certain amount of time
timeToOff -= deltaTime;
if (timeToOff <= 0) Quit();
}