DishShamer solves the age-old problem of getting your roommates to wash their dishes. The kitchen is a communal space. When one individual fails to keep this shared environment clean, there can be two outcomes: conflict and socially awkward confrontations, or placing unfair cleaning burdens on the responsible roommates. By tracking who checks out and returns dishes, maintaining a leaderboard, and sending periodic email updates, DishShamer holds sloppy roommates accountable for their actions.
A closer look at our working prototype.
- Auditory feedback in response to dish stock changes
- An LED dish stock gauge
- Image capture, triggered by dish stock changes
- Web app with leaderboards
- Email feedback
1. Wire up your electronics as shown above.
3. Upload the Arduino code to your arduino.
4. Check the port that your Arduino is using and change line 11 of camera.py to indicate that port.
5. 'cd' into your project directory.
6. Run 'python -m SimpleHTTPServer 8000'.
7. Point your browser to http://localhost:8000.
8. For each user of your DishShamer, add an entry in the emails dictionary in camera.py. The key should be the user's name, and the value should be the user's email address.
9. For each user of your DishShamer, take a photo of the user, name it <name>.jpg, where <name> is the same string that was used for the user's entry in the emails dictionary in Step 8. Put these images in the 'images/training' directory.
10. Select the gmail account from which your DishBlamer emails should be sent. In camera.py, set GMAIL_USER to be the username and GMAIL_PASS to be the password.
11. Run 'python camera.py'.
12. You should be up and running!
Find the source code for the LED and sound control, the image recognition, and the web app here:
On every change in the dish stock, DishShamer automatically photographs the user adding or removing a plate. This image is used to identify who completed the action, which allows us to maintain a log of user interactions with DishShamer.
The web application allows users to see the current leaderboards at any time. It updates in real time, so when a user adds or removes dishes, the web application displays the captured photograph along with its guess about who is in the photograph. Changes in the leaderboards are briefly highlighted.
You can see the web application in action in this brief video demo:
DishShamer also sends out emails to let users know how they're doing. The typical DishShamer email contains the current leaderboard, but also scolds the worst performing user and congratulates the best performing user.
This brief video demo gives a glimpse of the types of email feedback a user might receive:
In order to test our sensor in a live setting we needed a kitchen cabinet. In order to conveniently prototype and later demonstrate and explore how DishShamer functions in different locations, we needed a portable shelf. We decided on on a light weight design able to be collapsed and "flat packed" for easy deconstruction, reconstruction, moving and storage. A series of simple joints and notches created structural redundancy, resulting in an open frame able to hold dishes and electronic equipment. Plywood, used for its strength in tension and compression and light weight properties, made up the entire shelf unit.
A further iteration would include a housing unit for the sensor and electronics. This housing would be self contained with a battery and could be installed on the underside of the shelf above the target dishes. This idea would meet renters' needs in that the device could be installed without having to drill or screw into existing cabinetry. In order to achieve this, the housing could be slid onto removable plastic hooks, installed with sticky backed tape.
Our model file:
Our four kitchens vary greatly in terms of culture and usage. Alison shares her kitchen with three other flatmates; Sarah does not have roommates but shares her kitchen with her boyfriend; Baxter lives in a 20-person house; Christian rarely uses his shared kitchen. But as we compared notes and images, one obvious commonality was that dishes sometimes went unwashed for days. In one case, Christian says his frustrated roommate actually bought a portable dishwasher...which then went almost totally unused.
We all took different approaches to deeply exploring and understanding our kitchens. For example, Sarah's exploration included detailed logging of her kitchen's contents each day for a week. From this log, she synthesized the following map of her kitchen, which labels items according to whether they are immovable, stable across the observation period, or present only occasionally. Objects that moved were labelled with their frequency in a given location. This map reveals that dishes piled up in many locations in her kitchen, both unwashed dishes, and dishes that had been washed but needed to dry.
In contrast, Alison decided to begin her kitchen exploration by writing down thoughts on her kitchen's functions, usage, and particular organization. She then mapped a physical layout of her kitchen, but realized that the layout didn't convey much about how it was actually used. She decided to overlay her map with notes about the culture of her kitchen, and added to these notes over time. When the group chose dirty dishes as the issue to tackle, she performed further investigation: she took several pictures and noted multiple instances of unwashed dishes, concluding that a product reminding you to do the dishes would be both relevant and welcome for her apartment.
In our early brainstorming sessions, we considered many possible directions, ultimately settling on a project for encouraging users to put their dishes away promptly. This small excerpt from notes from one of those early brainstorming sessions shows the tail end of our more wide ranging brainstorming and the beginnings of the DishShamer idea, after we discussed the number of dirty dishes piling up in all our various kitchens:
As these notes reflect, when we started expanding on the DishShamer idea, we originally planned to create an object that would monitor dishes piling up in the sink. When we thought about how dishes also pile up in the dryer, and roommates piling wet dishes on top of dry ones, we realized this wasn't sufficient. We decided that the real key was to get dishes back to their proper place, clean and dry and ready to be used. So we started thinking about how to incentivize users to return dishes to the shelves where they belong.
At the end of this session, as pictured at the end of the excerpt above, we planned to create small platforms, one for each type of dish to be housed. Here we discussed using force sensors, but when early prototyping (see image below) revealed that force sensors would not allow us to identify how many dishes were stacked on a platform, we considered alternatives.
Our preferred designs all demanded two surfaces connected by stiff springs. We considered attaching a flex sensor to the two surfaces to estimate the number of dishes on top. We considered attaching a slider between the platforms --- again to measure the distance between them and estimate the number of dishes. Although we liked this idea very much, we worried that cabinet space is often at a premium, and the large sliders to which we had access would take too much of a cabinet's vertical space. Instead we elected to build our prototype with an IR distance sensor, which could be attached to the bottom of a shelf to point to the shelf below, taking very little vertical space.
We also considered several different ways of identifying users. Our first thought was to require users to state their names, and have an alarm sound if they failed to do so. Since users could easily state another user's name, we abandoned this approach. We leaned towards using bluetooth to detect the nearest phone for a while, but since users might take or return dishes without carrying their phones, this wasn't feasible. At this point, we were weighing voice recognition against image recognition. Since voice recognition required an extra step from the user and made the product more obtrusive, we decided to use image recognition instead.