Dish Buddy!

Hi all, hopefully most of you are already in bed by now!

Say hello to Dish Buddy:


Dirty dish buddy is a simple sink grid sitting on top of a push button. This is connected to a WiFi-enabled Arduino hidden within a modest enclosure. When someone places a dish on the sink grid, this presses the button. If the dish stays there for more than 5 minutes, whoever is looking after the sink will get an email alert. Once they see this email, they can track down the culprit before too many dishes pile up.




Here is my video:

And how’s about a link to the instructable.

And my thoughts on the project:

As far as the Arduino aspect, learning about the WiFi capabilities and seeing it work without the aid of a computer was a magical moment. Additionally, I learned how to use a variable to track when the program is in different “states” enabling multiple processes to run in tandem and be intentionally affected when specific events trigger a state change. Also using the Sugru to waterproof the button was a handy tip.

With the video, I learned a lot about how a good, thorough storyboard can streamline the whole video shooting process, making it much more enjoyable when you know everything you have to do from the start. And it makes it much easier in general because you can edit many unnecessary shots before recording a second of footage. Additionally, I was able to experiment hands-on for the first time with high quality video lighting which made a huge difference.

Jumping off questions:

Is this too invasive of a solution?

Would anyone actually be willing to track down a dirty dish culprit if they got an email about it?

Does it increase or diminish feelings of respect in a shared environment?




3 Ideas for Final

Apologies for the delayed post. Here are my 3 ideas for the final project:


The first is a display which shows you on your desk the data from a time tracking app. This way you can have a reminder of how productive your week has been and if you have been achieving your goals or not.

The second is a lamp that “gets angry” when you spend too much time on either instagram or your phone. Using the data from instagram or a phone usage app such as moment, the lamp will start white and gradually start turning a more aggressive shade of red when you hit your limit.

The final is a kitchen sink grate that when dishes are left in the sink for too long it will email you. Or in the case of PoD it could send emails to bother the KP stewards!

Booli: The Adorable Plush Robot and Flashlight












Like any kid, I was terrified of the dark.  Any reason for me to leave my room or even my bed in the middle of the night was a cause for much consternation whether it was a trip to the bathroom or running to my parents’ room after nightmare.  Of course we had flashlights around, but they were usually misplaced and even still the thought of a trip from my bed to my desk to retrieve one was terrifying. The flashlight needed to be where I was—in bed.

Additionally, I was big on reading in bed.  I would stay up well after midnight reading all sorts of science fiction and fantasy until either I couldn’t keep my eyes open or my parents caught me.  I would use all sorts of things to see the pages in the dark.  Book lights and some toys like a light up bracelet I had worked, but they were designed to be small and compact and thus were easily lost by a child.  Some bigger toys with lights were harder to misplace, but didn’t produce the light necessary and weren’t very comfortable to have in bed with me anyway.

These two needs are why I created Booli.  His shape is meant to be reminiscent of EVE, the futuristic, but friendly flying robot from the movie Wall-E.  Booli is short for boolean which is a binary variable used in computing.  Booli is comfortable to hang out with in bed, and big enough that he won’t be easily lost in a messy room.  His eye lights up with a cool pattern that illuminates the pages of your favorite book or lights the way as you navigate the dark hallway.















Circuit diagram


Week 3 Arduino Exercises

These exercises were a little harder to wrap my head around than last week because I don’t quite understand how the pull-up resistor works.  In the exercise it says that the digitalRead pin has a direct connection to ground when the button is pressed, so it ignores the small amount of electricity coming from through the resistor.  This seems like a strange way to explain it however because electricity doesn’t run from ground to ground so it’s not really directly sensing that the other ground is activated.  The way I understand it is that the small amount of electricity from the resistor is only going into the digitalRead pin which is just enough to return a HIGH reading.  But when the button is pressed, the current is split between to the two grounds, so the digitalRead pin only feels half the original current which puts it within the threshold to return a LOW reading.  I really do want to make sure I understand this so I’ll be sure to ask about it in class.

For the final exercise I did the two momentary switches controlling one LED.  I managed to set it up so that both buttons were using the pull-up resistors integrated into the Arduino pins.

// constants won't change. They're used here to set pin numbers:
const int buttonPin2 = 2; // the number of the pushbutton pin
const int buttonPin3 = 3;
const int ledPin = 13; // the number of the LED pin

// variables will change:
int buttonState2 = 0; // variables for reading the pushbutton status
int buttonState3 = 0;

void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin2, INPUT_PULLUP);
pinMode(buttonPin3, INPUT_PULLUP);

void loop() {
// read the state of the pushbutton values:
buttonState2 = digitalRead(buttonPin2);
buttonState3 = digitalRead(buttonPin3);

// check if the pushbutton 2 is pressed. If it is, the buttonState is LOW:
if (buttonState2 == LOW) {
// turn LED on:
digitalWrite(ledPin, HIGH);

// check if the pushbutton 3 is pressed. If it is, the buttonState is LOW:
if (buttonState3 == LOW) {
// turn LED off:
digitalWrite(ledPin, LOW);