Introduction: A Laundry Alarm for the Hearing Impaired and Everyone Else!
This Arduino based project was designed to solve a recurring problem for my hearing impaired wife. Our laundry room is located remotely from our living area. If our laundry has finished washing and is not removed in time, it can sour or even get moldy. If our laundry has finished drying and is not removed promptly, then severe wrinkling occurs. My solution is to sense when the washer or dryer has turned off and then send a signal to a visual alarm inside our living space to alert my wife when the laundry is done. This project can be used with any 110 VAC washer or dryer or other appliance that needs to be monitored.
Step 1: The Modules
My solution consists of three physical modules:
1.The AC module provides 120 VAC to the washer and dryer and senses when either one is drawing current. When the current stops, a signal is sent to the master module. The AC module is a common 6 way receptacle that is modified for this project.
2.The Arduino based master module is located near the AC module in the laundry. It reads the current sensor inputs then decides when to turn the alarm in the slave module on or off. It also contains a voltage regulator and driver for the slave module.
3. The remotely located slave module is a flashing strobe light located in the living space. Our experience is that a strobe light was much more noticeable and less disturbing than an audible
Step 2: Building the AC Module
CAUTION ! Never work on a live circuit. Carefully route and insulate all wiring.
The AC module consists of a six way AC receptacle that has been modified with a Hall effect sensor mounted on two of the six available receptacles. Any current draw of more than 4 amps produces a 5VDC, 60 Hz square wave that can be read by the master module. Cut a small break in the neutral lead of the two receptacle neutral wires that you want to use for the washer and dryer. Cut a quarter inch iron bolt to about a half inch length. Wrap about 6 turns of #14 enameled copper wire around the bolt and solder the ends to each end of the break in the receptacle neutral. Glue the hall switch with to the end of the bolt with the beveled side toward the bolt. Solder the resistor between the outside leads of the hall switch. See schematic and photo for details. Make sure all wiring is separated and insulated properly.
The Hall switch also provides complete isolation from AC line voltages.
Step 3: Building the Master Module
Building this module will depend on what Arduino 328 based MCU you want to use. I chose the Ardweeny because it was cheap and small and I had two on hand. I mounted components on a perf board from my junk box. I used hobby servo interconnect cables between modules. The Ardweeny requires a 5VDC supply, other Arduinos may not. See schematic and photo for details.
Step 4: Building the Slave Module
Building the slave module:
I used a 12 VDC automotive strobe light mounted in the remote slave module as an alarm inside the house. You could use any combination of audio or visual alarms. I also used a wired link between the master and slave modules, but this could also be an RF wireless or even an internet like. I prefer to just keep it simple. The strobe requires a 12 VDC power supply. In my case, the master and slave are located on each side of a wall, so I used a common 12V wall wart supply for the slave and stepped down the 12 volts with a 5 volt regulator for the Ardweeny.
Caution: strobe lights use high voltages so be careful handling them.
Step 5: Start Up and Operation
1. Plug in washer and dryer to the modified AC module. Verify that they work normally.
2. Plug in the power supply to the Arduino master module and load the code. The on board LED should blink at about one second intervals.
3. Attach the slave (alarm) module to the master module and power supply.
4. Connect the signal lines from the AC module hall switches to the master module.
5. Turn on either washer or dryer for a few seconds or longer, then turn off. The Arduino LED should now glow continuously and the alarm should operate.
6. Reset the switch on the master module. The alarm will turn off and the Arduino LED should blink again and you are ready for the next cycle.
7. Note that the alarm triggers when either the washer or the dryer turns off and the Arduino must be reset manually (and hopefully the laundry is unloaded ;-). This assures that the alarm is not ignored!
Step 6: Arduino Code for Laundry Alarm
/*
laundry strobe alarm by Emile 'Butch' Alline
monitors turn off of either washer or dryer, then turns on strobe light and on board LED
Hardware is ardweeny ATmega 328, works with IDE 1.0 and earlier
*/
int loopDelay = 1000; // loop delay between readings set by user
const int LEDpin = 13; // output pin for on board LED
const int strobePin = 5; // strobe trigger output pin
const int dryerPin = 2; // dryer hall switch pin
const int washerPin = 3; // washer hall switch pin
int dryerState = 0; // current state of the dryer, set to zero=off
int washerState = 0; // current state of the washer, set to zero=off
int lastDryerState = 0; // previous state of the dryer, set to zero=off
int lastWasherState = 0; // previous state of the washer, set to zero=off
int firstDryerRead = 0; // first reading of dryer pin
int firstWasherRead = 0; // first reading of washer pin
int secondDryerRead = 0; // second reading of dryer pin
int secondWasherRead = 0; // second reading of washer pin
int readDelay = 8320; //the number of microseconds to delay between readings
// 8320 determined experimentally to yield best detection of 60 hz (~99.3% accurate)
void setup() {
pinMode(LEDpin,OUTPUT); // initialize LED pin as output for debug
digitalWrite(LEDpin,LOW); // set LED off
pinMode(strobePin, OUTPUT); // initialize the strobe pin as an output
digitalWrite(strobePin,LOW); // set the strobe pin LOW (strobe off)
pinMode(dryerPin, INPUT); // initialize the dryer pin as an input from hall switch
pinMode(washerPin, INPUT); // initialize the washer pin as an input from hall switch
}
void loop()
{
digitalWrite(LEDpin,HIGH); // flash LED to indicate loop is active
delay(20); // value not critical
digitalWrite(LEDpin,LOW);
//first we see if there is 60 hz current on the dryer, if so then dryer state is on (=1)
firstDryerRead = digitalRead(dryerPin); //check status of dryer pin for hi part of 60 hz
delayMicroseconds(readDelay); // wait for possible next cycle
secondDryerRead = digitalRead(dryerPin); //then check it again to avoid reading mains spikes
if(firstDryerRead != secondDryerRead) { //set the dryer state to on or off (!= means not equal)
dryerState = 1; // readings are different so there must still be 60 hz on dryerPin
}
else { // no 60 Hz so dryer must be off
dryerState = 0; // steady state condition, no 60 hz current
}
if ((lastDryerState == 1) && (dryerState == 0)){ // 60 hz changed from on to off (&& means boolean AND)
Serial.println(" dryer turned off "); // notify user
digitalWrite(strobePin,HIGH); // set strobe pin HIGH (strobe on),user will do reset to turn it off
digitalWrite(LEDpin,HIGH);
while (true) // Job done, loop until a human arrives to reset
{
}
}
//end of dryer readings
//check for 60 hz on washer, if so then washer state is on (=1)
firstWasherRead = digitalRead(washerPin); //check status of washer pin for hi part of 60 hz
delayMicroseconds(readDelay); // wait for possible next cycle
secondWasherRead = digitalRead(washerPin); //then check it again to avoid reading mains spikes
if(firstWasherRead!=secondWasherRead) {
washerState = 1; // readings are different so there must be 60 hz on washerPin
}
else { // no 60 Hz so dryer must be off
washerState = 0; // steady state condition, no 60 hz
}
if ((lastWasherState == 1) && (washerState == 0)){ // 60 hz changed from on to off
Serial.println(" washer turned off "); // notify user
digitalWrite(strobePin,HIGH); // set strobe pin HIGH (strobe on),user will do reset to turn it off
digitalWrite(LEDpin,HIGH);
while (true) // Job done, just loop until a human arrives to reset
{
}
}
//end of washer readings
lastDryerState = dryerState; // save dryer state for comparison later
lastWasherState = washerState; // save washer state for comparison later
delay (loopDelay); // optional, not required
}
Step 7: The Schematic
The schematic is a Visio file. I hope that I can insert it and that you can read it. I also have a list of parts for my build of the modules, but I could not get it to load into this instructable. If you have any questions, please contact me. Good luck on your build of the laundry alarm.

Participated in the
Arduino Challenge

Participated in the
Make It Real Challenge
11 Comments
8 years ago on Introduction
Being very hearing impaired myself I am always looking for concepts that will assist, so appreciate your invention. That said, some day hopefully someone will come up with a hand held device (similar to a cell phone) that will translate audio into script as find even the best hearing aid devices don't necessarily deliver clarity when in certain environments which in turn can be frustrating for both parties involved in a conversation.
11 years ago on Introduction
Great job!!!
A quick couple of questions...
What about people who have a 220v dryer? Instead of using a plug like you have, could we simply open the washer/dryer (at least the older units with the dial timers) and find 120vac on it, then attach a cord to it to bring it outside the case and attach your hall effect sensor?
Thanks
Reply 11 years ago on Introduction
110 V or 220V should not make any difference to the hall switch. It is the magnetic field that operates the switch.
I would strongly recommend that you have someone look over your plans before proceeding. I would also recommend that you keep all high voltages and the sensor within the appliance and only bring out the signal lines from the hall sensor.
Good luck on your build!
Reply 9 years ago on Introduction
I agree with yr safety advice. If the Hall sensor gives a 5V signal, one could consider feeding it to an optocoupler even, just to get a double isolation. Some of those wires in the AC box are rather close :-)
Reply 11 years ago on Introduction
I'm thinking I may stick with your design mostly except I'll use an or one rbbb for my washer and one for my dryer.
I still don,t know about the hall effect. I may even think about attaching an led to the dial timer with a 5v adapter and using a photocell or one of these
http://shop.moderndevice.com/products/ambi-light-sensor
to detect when the led is on.
9 years ago on Introduction
Great project, interesting, especially measuring the current
I was just wondering, in your situation wouldnt a cooking alarm set to the time the washer needs not have been a quicker and simpler solution? Obviously she would have to carry the alarm with her to feel the vibrations
9 years ago on Introduction
Great project, interesting, especially measuring the current
I was just wondering, in your situation wouldnt a cooking alarm set to the time the washer needs not have been a quicker and simpler solution?
11 years ago on Introduction
can I modify this to light up to different light for each?
you have do5 as the light trigger now. Could that be set for the washer and the do4 be set for the washer?
Reply 11 years ago on Introduction
Yes, you can have the code control LEDs on various pins, just be sure that you use a current limiting resistor.
If you send me your email address, I will send you my code. You do not have to use a separate MCU for the washer and dryer. I suggest you start with the dryer since dryers typically stay on from start to finish. Washers tend to have periods in their cycles (that vary in number and length) which can give a false "off" signal. These periods can be accounted for in software.
Reply 11 years ago on Introduction
or could you help me strip the code to just look for one machine and I'll build one foe each.
11 years ago
"Main" photos added per your request. Please let me know if this is acceptable and if this instructable is entered in the Arduino Challenge