Introduction: Dirty Dish Detector

Tired of going to use your sink only to find that your roommates, coworkers, or classmates have left a bunch of dirty dishes behind? This handy hack will send you an email whenever any dishes get left in the sink, so you can track down the culprit and hold them accountable!

Step 1: Materials List



  • Sink Grid
  • Sugru
  • Pushbutton switch
  • Solid Wire
  • Arduino Feather HUZZAH
  • 2 LEDs
  • Power Cable
  • 5V Outlet Adapter
  • Foam Core
  • Heat Shrink Tubing
  • Matte Board


  • Breadboard
  • Soldering Iron
  • Fume Extractor
  • Wire Strippers
  • Xacto Knife
  • Helping Hands
  • Hot Glue Gun

Step 2: Prepping Wires

Cut two long pieces of wire. Make sure these are long enough to reach from the sink to where you want to set up your Arduino.

Trim the ends so that there is a long end and short end on each wire. The short ends will go to the button and the long will go to the Arduino board.

Step 3: Wiring Your Button

Set up your soldering station with your helping hands, soldering iron, solder, and fume extractor.

Don't be dumb like I was and make sure your leads are connected on the same side of the button rather than opposite of each other.

Throw some heat shrink tubing on there once you get those solder joints nice.

Step 4: Waterproofing Your Button

Grab a single packet of sugru and add it to the button.

I added it like a hamburger bun on the top and bottom of the button then smoothed it out to make sure everything was covered.

I made sure to flatten out the bottom as well as add two bumpers on either side of the button to counteract the extra weight of my heavy sink grid pressing the button without any dishes on it.

Step 5: Wiring Up Your Arduino

Attach your button leads, ground wire, and LEDs according to Fritzing diagram and picture.

Step 6: Create an Enclosure

Use some matte board (or any other easy-to-work thin material) to create a simple enclosure for your Arduino. Be sure to cut two holes for the LEDs as these will help you diagnose your circuit when you upload the code.

Step 7: Upload Code to Board

The first thing you'll want to do is set up an Adafruit IO account and get your AIO Key from there. Input your username and key to the code (leaving the quotation marks).

#define IO_USERNAME "Username"
#define IO_KEY "Key"

Don't forget to update the code with your wifi network name and password (leaving the quotation marks in place).

#define WIFI_SSID "Network Name"
#define WIFI_PASS "Password"

Additionally you can adjust how long dishes have to be left in the sink before getting an email by adjusting the intervalButton constant. It's measured in milliseconds so, for example, 5 seconds = 5000. I reccomend setting it to something closer to 5 minutes (300000).

const long intervalButton = 5000;

When you first upload the code watch the serial monitor to be sure it connects to WiFi, then test the circuit. This is where the LEDs come in handy. The first LED will light up when it detects the button is pressed then the second will light up when it has communicated to send an email to you.

Whenever you plug in the board after that be sure to give the board a few moments to get connected to WiFi.

Step 8: Set Up Online Actions

Set up a feed called 'command' in Adafruit IO. Then in IFTTT set up an account and make a new applet that checks the Data from Adafruit and sends you an email.

You can change the X in the applet to reflect however much time you chose when setting up the code

Step 9: Install the Dirty Dish Detector

Install the dirty dish detector by setting up the sink grid on top of the button and plugging the Arduino into a nearby outlet. This is where you'll want to give it a minute to get hooked up to your WiFi. Then when you test it you can keep an eye on the LEDs to make sure it's working properly.

The final touch is to hide any excess wire length you have with common counter top items.

Now you're ready to be the hero (or villain depending on who you ask) who tracks down dirty dish perpetrators and keeps the kitchen under control