Improving the Hand Dryer
Last updated: Feb 13, 2020
When thinking about intangible bathroom interactions, Suphitcha and I felt like the biggest problem was that most devices were too easy to engage by accident and too difficult to engage on purpose. With two sensors to solve the problem (the IR break-beam sensors and the TMP006 contactless temperature sensor) we started out with the idea that both sensors should be activated to turn on the device—one sensor deactivating would turn the machine back off again.
Starting with the sink and the LED break-beam sensors
Based on Suphitcha’s inital post about the bathroom sink, we believed this was the device with the greatest opportunity for improvement. It’s annoying to have to put your hands in exactly the right place or move them around to try to get the sink going. Our first idea was to use the break-beam sensors to sense where the hand-washer is and the temperature sensor to confirm.
But after we hooked up the TMP006 and started getting back sensor data that fluctuates and hovers from around 27ºC up to about 29ºC, we started playing around with it and got the most reliable results by blowing on it. From there, we got to the idea that we might be able to better apply these sensors to the hand-dryer. It’s a funny idea (if a tad gross) to blow on a device you expect to blow on your hands—as if it were magnifying your breath.
Integrating the TMP006 and switching to the hand-dryer
We built a cardboard box prototype of the hand dryer and discovered very quicky how charming it is to blow on the LED and have it light up. I would love to be able to dry my hands this way, I think it’s funny and cute—it increases my agency as a user and minimizes the frustration of using the device.
I also think the frustration of using it comes largely from the fact that it doesn’t dry you off. It’s supposed to be doing something for you but it’s not. I think this setup increases the user’s role in the whole hand-drying process and has the potential to improve how users feel about hand-dryers in general.
///
Arduino code
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_TMP006.h>
Adafruit_TMP006 tmp006; // instance of the sensor library
int ledPin = 4;
int receiverPin = 2;
volatile byte reading = 0;
void setup() {
pinMode(receiverPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
attachInterrupt(digitalPinToInterrupt(receiverPin),
triggerLED, CHANGE);
Serial.begin(9600);
boolean sensorInitialized = tmp006.begin();
// initialize the sensor
while (!sensorInitialized) {
// Do nothing until sensor responds
Serial.println("Sensor is not responding");
}
}
void loop() {
reading= digitalRead(receiverPin);
if (millis() % 1000 < 2) { // every second
// read object temperature
float objectTemp = tmp006.readObjTempC();
// read chip temperature
float chipTemp = tmp006.readDieTempC();
// print the results:
Serial.print("Chip temperature: ");
Serial.print(chipTemp);
Serial.print(" deg. C. \t Object temperature: ");
Serial.print(objectTemp);
Serial.println(" deg. C");
if (reading == 0 && objectTemp > 40) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
}
void triggerLED(){
reading = !reading;
}