A crack team of Carnegie-Mellon students attempt to stop college roommates from improperly loading a dishwasher which results in cruddy dishes, a waste of energy, and often some hard feelings :(

What was our solution? Follow the steps below to see. Keep in mind, what's shown is a prototype that doesn't address certain concerns such as, oh, water in an electrical circuit :0 So we don't recommend installing this exact setup in your own dishwasher, unless you do a little re-design.

Team: Ana Alves, Torrey Brenner, Zack Jacobson-Weaver & Gabriela Marcu from Eric Paulos' Activating Objects and developed in part at CodeLab.

Step 1: Step 1: Get the Stuff

Here's what you'll need:

Tools: SHARP KNIFE (X-acto);  STRAIGHT EDGE;  RULER;  CUTTING BOARD;  HOT GLUE/GUN;  DRILL w/  DRILL BIT INDEX,  SOLDERING TOOLS/SOLDER;   PC or MAC w/ ARDUINO SOFTWARE ;  ARDUINO BOARD (PIC) (if you get a good kit, you'll have just about everything you need for the electronic stuff)...

Materials:  FOAM CORE (otherwise something that would bio-degrade a little faster than 10,000 years); THIN DOWEL RODS;  LED'S (in the kit);  PIEZO SPEAKER (in the kit);  ELECTRICAL WIRE (<= 22ga.);  TACTILE SWITCH (pictured: not in kit);  JUMPER WIRES (yup, kit);  SOLDERLESS BREADBOARD (kit);  PHOTO RESISTOR (kiz-nit);  RESISTORS (kiiiittt);  HATRED OF DIRTY DISHES (innate);

Step 2: Honor the CODE

Here's the code and a pseudo-schematic for the Arduino.  If you don't know what this stuff means, there are alot of self-starter web sights for Arduino.  I recommend Arduino.cc and Lady Ada.  Don't let all this technical garble stop you from playing with it.

CODE: (copy and paste this into your Arduino sketch.  It's not cheating)

/*This code will use a 'tunable' light sensor (photo-resistor) to do two things
when the light level is BELOW a certain threshold: Turn on some flashing LEDs,
and sound an alarm!!!

This code was compiled using source code from http://www.arduino.cc/en/Tutorial/Melody
(2005) D. Cuartielles for K3, and http://ardx.org/CODE09.

The COPY and PASTE functions were written sometime long ago by a really
lazy person...who I personally love.*/

//PhotoResistor Pin
int lightPin = 0;
//LED Pin
int ledPin = 9;
int ledPin2 =11;
int ledPin3 =13;
int soundPin= 3;
//number of notes
int length = 7;
char notes[]= "cacacaa";
int beats[] = {1,1,1,1,1,1,1};
int tempo = 300;

void playTone(int tone, int duration) {
  for (long i = 0; i < duration * 1000L; i += tone * 2) {
    digitalWrite(soundPin, HIGH);
    digitalWrite(soundPin, LOW);

void playNote(char note, int duration) {
  char names[] = { 'c', 'a' };
  int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014 };

  // play the tone corresponding to the note name
  for (int i = 0; i < 8; i++) {
    if (names[i] == note) {
      playTone(tones[i], duration);

void setup()
  pinMode(ledPin, OUTPUT);
 pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT); //sets the led pin to output
  pinMode(soundPin, OUTPUT);

void loop()
 int threshold=500;       /*<---- THIS IS THE KEY FEATURE ! ! ! */

    while (analogRead(lightPin)>threshold)

    for (int i = 0; i < length; i++) {
    if (notes[i] == ' ') {
      delay(beats[i] * tempo/3); // rest
    } else {
      playNote(notes[i], beats[i] * tempo*1.3);
    // pause between notes
    delay(tempo/2); }

     if (analogRead(lightPin)>threshold)
  delay (20);
  delay (20);
  delay (20);
  digitalWrite(ledPin3 ,LOW);


  digitalWrite(ledPin, LOW); 


The trick in this code is to use the "threshold" to tune the light sensor for the local conditions.  If you get everything else to work on your work bench, remember to anticipate adjusting the threshold in ANY other lighting condition.

Also, the second image show's a MESS of wires and the BREAD BOARD.  We used the BREAD BOARD because it's a quick way to build a circuit AND , because we could use the TACTILE SWITCH to turn on/off the signals from the ARDUINO when the dishwasher door was closed/open.  In other words, we didn't have to write some code for the switch to enter the system.  The switch just connected power from the ARDUINO to the BREAD BOARD when the door closed.  It'll make more sense in a minute.

Step 3: Rack 'Em

You need to build two things to idiot proof your dishwasher, according the teams' design.  The first was a modular rack which is designed to accommodate only a particular kind of dish, and only to fit in a place that dish belongs (That is to say:  get the best scrub).  

DISCLAIMER:  We're not going to illustrate how to measure and cut foam core or ,for the rack, the dowels that make up the bottom and the pins.  That's where your measuring, marking, and cutting tools come in along with a little HOT GLUE.  We're assuming if you're an "Instructables" viewer, you have that covered so we'll just say: make this, make that.

The key features of the rack design are:

Modularity:  there's a 'cups' rack, a 'bowls' rack, a 'pots' rack etc. that position particular wares in the optimal cleaning orientation and location.

ADA shout out:  Each rack has a 'key' on one corner indicating which it is.  The model, for instance, is for cups ONLY!  The key in the corner let's the sighted and blind alike know what rack they have, what goes in it, and where it goes in the washer.

Step 4: Raise the Alarm!

Time to assemble the electronic gizmos. 

First, take some measurements on the space you'll need to install things in.  It doesn't make sense to try to shove a 3inch box into a 2inch gap.  Second, take some measurements on the items you'll be using that already exist!  If you want to cover the leads from your LEDs or in this case, the resistor + LED, then there is a real measurement  you can make ahead of time, right?  Diameter of the LEDs, the PIEZO, distance for lead wires to travel etc. etc.

SOLDERING : Go ahead and solder RESISTORs to LEDs and lead wires to everything.  

FIRST IMAGE: Make a box  out of FOAM CORE for the PHOTO RESISTOR.  Run the two wires thru to the inside until the surface of the PHOTO RESISTOR is flush to the top.  (OH! The tape is just what we used to attach the box to the dishwasher. Don't worry.)

SECOND IMAGE: Make another box for the LEDs and the PIEZO.  This is where the DRILL and DRILL BITS come in.  The diameter of the parts was matched to a DRILL BIT and we just marked the center points of each part.  (Hint:  practice on some scrap to figure out how to get a clean cut.  And good luck with that by the way.)

THIRD IMAGE:  Insert each component into its respective place.  Run the lead wires out together and bundle them with tape to keep things neat.

FOURTH IMAGE:  The TACTILE SWITCH is placed just inside the door so when the door's closed, the switch is ON and provides power to the BREAD BOARD allowing ARDUINO to tell the other stuff "You can do your job now".

Step 5: Install and Calibrate

IMAGE ONE: Find a suitable postion for the alarm box.  Somewhere where its dual (audio/visual) functions will be sensed by the dish loader.  We found HOT GLUING it under the edge of the counter to be appropriate, vandalistic fun.

IMAGE TWO:  Install the PHOTO RESISTOR under the bottom rack in the washer where, if someone blocks too much light from above (IMAGE THREE) with a huge dish, the sensor will say, "Hey!  That also means you're blocking too much cleansing water from bellow!  How will those poor cups up top get the bath they deserve?! I'm sounding the ALARM!"

IMAGES FOUR & FIVE:  This is where the calibration thing comes in.  We had to tweak the 'int threshold' value several times before the sensor worked inside the washer.  The number can be quite different!  From the work bench to the dishwasher the value changed from 30 to 500!   And don't forget, the TACTILE SWITCH has to be depressed to run the program.

Note:  Ideally, the light in image three would turn ON via the TACTILE SWITCH and OFF when a properly loaded (a.k.a. no alarm) dishwasher began doing its thing.  For the demonstration, a camping headlamp was used because it was the only thing bright enough, and small enough to run the program well.  We hope you understand the concept in spite of our having to adjust on the fly.

Step 6: A Demo

Here's a peak at the thing in action.  Our goal was to find a way to address the needs of top-rack dishes who so often are marginalized in dish society.  And we think this concept works. it's reasonably realistic.  With a little detail work it could even become a real thing!!!


Full disclosure: we (a.k.a. I) broke the PIEZO while installing the alarm box!  Don't expect that sound out of the code.  It is however, just as annoying.

Thank you from the TEAM, and please hack away to improve the system!
I note that the dishwasher in your video only has one water spray at the very bottom, meaning that large objects are always going interfere with the top rack. <br><br>In Oz, I have never seen such a machine before. All machines I have ever used and/or observed have a second spray between the two baskets so that that the upper rack gets its fair share of water and soap, and in my particular machine(s) it is not a wise move to put plastic cups in the lower rack---the force of water will blast them out of place and they bounce around everywhere until they stick like a spanner in the works.
You're right! It isn't a matter of every dishwasher. The part of the story we didn't include that perhaps we should, is that college housing usually means the cheapest bidder gets their appliances in the door. So, while I imagine some dishwashers available in the States have the features you're mentioning, for student housing (i.e. my housing) you don't get the best, you get the cheapest.<br><br>I think that speaks to a general American malaise anyway. We buy cheap stuff that we care nothing about and then throw it away. Whereas, elsewhere, it' may be more common to make things that lasts and that you love because it get's you thru so many...whatevers. <br><br>Thats part of the fun of the DIY movement, I think. One understated goal is to increase the value we place in everyday things by customizing them.<br><br>You see, hackers, are really sentimental sweet hearts at the end of the day.<br><br>Treknology! Watch out for kangaroos, my friend!
Australia has equally a growing sloppy disposable-attitude, however as our post-industrialization is far more recent than yours, we still have higher quality standards, although they are rapidly dropping.<br><br>When it comes to kangaroos, they're damn tasty!
Aww, that stinks, the music really makes the video
PS Dear Sir Richard Branson, I would like to fly to outer space with you, please.<br><br>Cheers,<br><br>ZJW
VIDEO! For those of you having copywrite issues with Boo-tube, try the link underneath the video panel. I think that is free from the prying eyes of Sony or BMG or Virgin or whomever. It's not like we're getting rich off the song, but I don't want to blow my opportunity to fly to outer space with Richard Branson..uh..sorry..<br>SIR Richard Branson. Enjoy!
Sorry gang. I'll try to get a copy w/o that particular audio and post it up.
no music on the video please can`t watch because of copyright issues
me neither :(
Here's my engineering solution: calculate rent difference between room in house and one-bedroom apartment, then compare to cost and time of electronics project adjusted by 'expected value' of it actually fixing others' behavior.<br><br>I live in a 1-bedroom apartment now =)<br><br>For those without the financial flexibility, maybe you should institute a dishwasher-loading quiz as part of your housemate interview. I'm sure you wouldn't scare anyone away. (To save time, maybe there could be a pre-screening exam involving dryer lint and shoe removal?)
It's cool to see that people actually have training programs for this problem. And more so that the thing in common is BEHAVIOR adjustment. That's the hardest thing to do, for me. <br><br>It took the GUI on my Prius dashboard (cool cred = sinking sound) to make me actually change the way I drive. I had to see a COMPARISON GRAPH!!! of my fuel milage to make me adjust my behavior. What did it for me was making it PLAY. My wife and I compete to see who charts highest. Otherwise the only thing I'm thinking about is getting where I'm going ASAP. <br><br>One thing we tried to do was make the alarm a game to play...<br><br>SHOUT OUT to 'mgalyean': Makers are OFTEN trading one problem for another. And to paraphrase my friend John Marshall, without physical tools and the ability to use them, my broken computer remains useless!
Theseus only had a ball of string.
It is so funny what people will do to stop the clean verses dirty dishwater! The solution is very simple and only requires one rule to follow: when you empty the dishwasher, put soap in the cup and close the soap cup door! That's it!!! Whenever you open the dishwasher door and there is soap in the cup - dishes are dirty! Whenever you open the dishwasher door and there is NO soap in the cup - dishes are clean!
I have been telling my wife this forever but, I can't get her to conform.<br>
Agreed. The trend to ignoring simple behavior solutions in favor of techno-bandaid$, or to put another way, the effort involved in educating wetware in favor of making stuff &quot;idiot proof&quot; has gone too far to the dark side, imho. At this rate we'll be bowing down to Skynet and/or the Cylons in record time, ha ha. Still, I don't think that is what the author(s) are after; they are just having fun. It is always fun to see what can be done with stuff. I do think the makers are just trading one problem for another. Instead of difficulties getting roommates to load the dishwasher correctly, now they will have difficulties getting roommates to not break the sensors and trying to train them how to work &quot;with&quot; instead of &quot;against&quot; the cool, but unappreciated, upgrades to the dishwasher. Raise your hands if you know what I mean. And when something does break in the &quot;idiot-proof&quot; circuit (usually because of rough handling or misuse) who has to fix it? Not the &quot;idiots&quot;,that is for certain. Anyway, its all good as long as it is educational from one or more viewpoints.
Very nice, though there's a key ingredient missing: a really, really rubbish dishwasher!! I've lived in a lot of really badly furnished flats with a lot of rubbish dishwashers but I've never seen one that doesn't have a separate spinning jet for the cups!<br><br>Still, as I said - very nice ;)
Really no kidding, I'm thinking that's the main reason that the dishes are coming out not fully clean ~ I literally have never seen that.<br><br>That said, I hate to be a spoil sport, but I can't endorse placing wooden dowels in a dishwasher. I don't even allow my wooden spoons in there for one cycle. That makes no sense, sorry they will disentigrate. Are there plastic dowels that would work instead?
No I hadn't. But that's a good idea. How? Would I map the threshold onto the pot value?<br><br>Got some code for that?
Did you consider a trim pot or rotary encoder to adjust the 'int threshold' on the fly?
How about a new alarm: If , after a cycle runs and someone pulls out ONE dish but not the others (and in lieu of sdelucia's great magnet idea, which sometimes works) the dishwasher, sensing the change in dish weight (delta dish?), takes a picture of the culprit and emails it to everyone in the house. DIshwasher security camera!
what would be great is a techno-easy method of determining whether the stuff in the dishwasher is clean or dirty..
That is easy. Get a flat magnet, color one side green and print dirty on it and color the other side red and print clean on it. Flip it to red when you turn it on. Flip it to green when you empty it.<br>
Wonder if you could just use the analog pin of the pc joystick port and tweet the status?

About This Instructable



More by ZJ-Weaver:Augmented Hyper-Reality Glove The Idiot Proof Dishwasher 
Add instructable to: