Inspiration

It is inevitable to forget to do your laundry every once in a while. It is also very inconvenient to keep checking if you have enough clothes for a load and whether there is an open machine you can use. I bet most of us have experiences dealing with huge piles of laundry after weeks of forgetting to do our laundry. When you are studying, that is the last thing that comes to your mind. This device will do that work for you.

What it does

This device will recognize when a student is potentially available to do laundry and will set off a buzzer reminding him/her to do laundry if the basket is full enough for 1+ loads. It checks whether the student is currently in the room, available to do their laundry, then checks if the laundry load is above the threshold.

How we built it

First, there is motion sensor (PIR) that keeps track of whether or not you're in your dorm room and available to do laundry. If you walk by your laundry basket, indicating you're potentially available to do laundry, the device will sense your motion and send the character 'H' through a Bluetooth module to another Arduino circuit. This other circuit keeps track of whether an H was received and of your laundry's weight. It includes an FSR (Force Sensitive Resistor) that will check if you have enough clothing for a load. The code in the Arduino board will then check if you're both walking by the basket and there is enough clothing; if both return true, it will set off a buzzer to remind you do to your laundry. The device can both be plugged into a wall or battery powered, whatever is more convenient for the user. Additionally, the platform was built to suit all shapes of laundry hampers in a pyramid design that will center all of the laundry's weight on the FSR even if the hamper's center of mass is not in the middle of the platform.

Challenges we ran into

Definitely with the FSRs. These sensors are very, very sensitive and very easy to break. We ran into a lot of issues with trying to solder and hot glue these to our platform without breaking/melting them. This was the biggest setback because each time we would build the project and one would break we would need to start from scratch with the soldering and gluing. At first, we were also planning to connect our device to the PennMobile app so that it sends a notification to the student's phone when they should do their laundry. By connecting our device to the app, we also tried to check if there were any empty laundry machines before the student actually had to get down to the laundry room. However, it was difficult for us to utilize the API that was not in the java format so we decided to use a buzzer to alert the student.

Accomplishments that we're proud of

Getting the code to actually do what we wanted. At first, we could not figure out why it was not recognizing both sensors, but then we slowly fixed it until it worked just the way we wanted it to. Moreover, building our own device using laser cutters were one of our big accomplishments. We used hot glue to actually stick the FSRs so that the device would measure the laundry load more accurately.

What we learned

We learned a lot about design, trial, and error. At first, the platform was not built right, so we needed to come up with a way to make it work. Additionally, we learned a lot about adapting the FSRs and wires to build the device's hardware, which was something we had never done. Soldering was a new experience, and so was the overall design process. In all my previous experience with circuitry, everything was either pre-assembled for me or had very explicit instructions as to how to accomplish a given goal. For this project, though, we needed to design it all by ourselves and figure out what works and what does not mostly through trial and error - with TA guidance, of course.

What's next for The Dorm Laundry Helper

Trying to integrate Twillio into it so that it sends a notification to your phone instead. A more ambitious goal is to have ti also check the Penn App for an open machine and only send you a text if a machine is open so that you don't even have to check that yourself, just get your clothes and go. We attempted to incorporate Twillio into the device but were not successful, but I believe it would not be a huge leap to attempt to incorporate it again. About the Penn App, however, it would be much more of a challenge to use the app's API to automatically retrieve the information we need.

Our Code

This keeps track of the motion sensor and sends a message to the other module if you walk by the laundry basket: .#include //delete the period SoftwareSerial BTSerial(2, 3); //TX RX int ledPin = 13; // choose the pin for the LED int inputPin = 4; // choose the input pin (for PIR sensor) int pirState = LOW; // we start, assuming no motion detected int val = 0; // variable for reading the pin status

void setup() { pinMode(ledPin, OUTPUT); // declare LED as output pinMode(inputPin, INPUT); // declare sensor as input

BTSerial.begin(9600);
Serial.begin(9600); }

void loop(){ val = digitalRead(inputPin); // read input value if (val == HIGH) { // check if the input is HIGH digitalWrite(ledPin, HIGH); // turn LED ON BTSerial.print('H'); if (pirState == LOW) { // we have just turned on Serial.println("Motion detected!"); // We only want to print on the output change, not state pirState = HIGH; } } else { digitalWrite(ledPin, LOW); // turn LED OFF // BTSerial.print("L"); if (pirState == HIGH){ // we have just turned off Serial.println("Motion ended!"); // We only want to print on the output change, not state pirState = LOW; } } }

This keeps track of whether motion was detected and there is enough pressure, and sets the buzzer off if both conditions are met: .#include //delete the period SoftwareSerial BTSerial(2, 3); //TX RX int fsrPin = A0; int led = 9;

int fsrReading;

void setup() { BTSerial.begin(9600); //begin bluetooth communication Serial.begin(9600); //begin serial communication pinMode(fsrPin, INPUT); pinMode(led, OUTPUT); }

void loop() { if (BTSerial.available()) { char inChar = (char) BTSerial.read(); //reads single character at a time fsrReading = analogRead(fsrPin); if(inChar == 'H') { if(fsrReading > 500) { digitalWrite(led, HIGH); Serial.println("bingo!"); Serial.println("bingo!"); Serial.println("bingo!"); Serial.println("bingo!"); Serial.println("bingo!"); Serial.println("bingo!"); Serial.println("bingo!"); Serial.println("bingo!"); Serial.println("bingo!"); } else { digitalWrite(led, LOW); } } else { digitalWrite(led, LOW); } Serial.println(inChar); Serial.println(fsrReading); } }

Built With

Share this project:

Updates