Context and Significance
After reading the blog “Making Interactive Art: Set the Stage, Then Shut up and Listen” in the previous group project, I realized that good interactive products involve independence and speak for themselves. All the things the designer needs to do is listen rather than explain. I am a pragmatic person. Initially, I wanted to design an everyday noise detector, but eventually, I gave up that idea because I knew it would not be straightforward enough for the audience. When we, namely me and my partner Kenneth, were deep in thought about what we should do, I saw the trash can sitting next to his desk. Every time I throw something away, I need to step on its pedal, which can be easily broken. That trash can gave us the inspiration for what we should devise. We can design an automatic trash bin that can free people of stepping and the fragile pedal. No further explanation will be needed about the trash can if we design an accurate look and put it in the right place. Pragmatic and straightforward, the trash can coincides with my philosophy about interaction and life. Compared with a common trash can, our trash can is more convenient. Compared with an existing touchless trash can on the market, our trash can is low-cost. Most importantly, this trash can has the potential to be used in every house.
Conception and Design
During the brainstorming, my partner and I agreed that the low budget is one of the most important characteristics of our product so that it would be easy to duplicate. Therefore, we chose cardboard as our basic material for its ubiquity and reliability. Since my design allows people to open the trash bin without using their hands or feet, we need a sensor to detect whether the user is standing in front of the can. Considering the convenience that people do not need to bend over or stretch out their feet when using the can, we decided to install the sensor on the front side, close to the ground. For the color choice, we initially decided to choose the green color because this is the color for most trash cans we see. Eventually, we decided on the black color because green can possibly spoil the overall color aesthetics of a certain room, while black is a safer choice.
Fabrication and Production
My partner Kenneth and I agreed that he would be in charge of most of the coding part while I would be responsible for the fabrication. First, we need to choose which type of sensor we need. After searching on the Arduino project hub, we found the website of “Ultrasonic Sensor HC-SR04 with Arduino Tutorial,” we decided to use the ultrasonic sensor for its availability and compatibility.
Also the website provides the code for how to manipulate the sensor as follows (Jabbaar, 2019):
// ---------------------------------------------------------------- // // Arduino Ultrasoninc Sensor HC-SR04 // Re-writed by Arbi Abdul Jabbaar // Using Arduino IDE 1.8.7 // Using HC-SR04 Module // Tested on 17 September 2019 // This was adapted from a the tutorial found here: // https://create.arduino.cc/projecthub/abdularbi17/ultrasonic-sensor-hc-sr04-with-arduino-tutorial-327ff6 // ---------------------------------------------------------------- // #define echoPin 2 // attach pin D2 Arduino to pin Echo of HC-SR04 #define trigPin 3 //attach pin D3 Arduino to pin Trig of HC-SR04 // defines variables long duration; // variable for the duration of sound wave travel int distance; // variable for the distance measurement void setup() { pinMode(trigPin, OUTPUT); // Sets the trigPin as an OUTPUT pinMode(echoPin, INPUT); // Sets the echoPin as an INPUT Serial.begin(9600); // // Serial Communication is starting with 9600 of baudrate speed Serial.println("Ultrasonic Sensor HC-SR04 Test"); // print some text in Serial Monitor Serial.println("with Arduino UNO R3"); } void loop() { // Clears the trigPin condition digitalWrite(trigPin, LOW); delayMicroseconds(2); // Sets the trigPin HIGH (ACTIVE) for 10 microseconds digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Reads the echoPin, returns the sound wave travel time in microseconds duration = pulseIn(echoPin, HIGH); // Calculating the distance distance = duration * 0.034 / 2; // Speed of sound wave divided by 2 (go and back) // Displays the distance on the Serial Monitor Serial.print("Distance: "); Serial.print(distance); Serial.println(" cm"); }
The next thing to decide is the mechanism to open the lid. I suggested we use a servo motor as we had just learned how to use it in the lecture. If I attached a chopstick to the servo arm and fixed the motor inside of the trash can and Kenneth created a code for controlling the motor with the ultrasonic sensor, then the lid of the trash can would be opened up by the stick. Then, Kenneth found another website of “Servo Motor Basics with Arduino” to learn how to use it better.
// We checked this sweep mode for our project // The tutorial can be found here: // https://docs.arduino.cc/learn/electronics/servo-motors#knob #include Servo myservo; // create servo object to control a servo // twelve servo objects can be created on most boards int pos = 0; // variable to store the servo position void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() { for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } }
The most important step is to figure out how to build up the circuit. We referred to some other projects on the Arduino projects, like the “Trash Can Project” by Arduino Education and the “Smart Trash Can!” by corn_isamazing.
We tried combining the two ways of constructing the circuit and made our own schematic like this:
The materials we used are:
Servo motor *1 Arduino Uno *1 AA battery*6 Chopstick *1 Cardboard box*1 Black paint spray*1 Breadboard *1 Ultrasonic sensor*1 Some pieces of cardboard Male-to-Male cables Male-to-Female cables
Also, by researching all the codes in these projects, we came up with our first version of the code as well.
#include Servo servo; int const Pulse = 9; //blue cable int const Echoreceive = 10; // green cable void setup() { Serial.begin(9600); //channel for serial monitor pinMode(Pulse, OUTPUT); pinMode(Echoreceive, INPUT); servo.attach(6); //Blue long cable } void loop() { int duration, distance; digitalWrite(Pulse, HIGH); digitalWrite(Pulse, LOW); duration = pulseIn(Echoreceive, HIGH); distance = duration * 0.034 / 2; //We found distance formula from arduino project hub. // servo triger distance is from 0 - 45 cm if (distance <= 45 && distance >= 0) { servo.write(90); delay(3000); } else { servo.write(180); } delay(10); Serial.print("Distance: "); Serial.print(distance); Serial.println("cm"); delay(300);
Then, Kenneth and I worked separately. He focused on improving the code while I tried to build the circuit.
We chose a cardboard box as the bin, painted it black, and installed everything we needed into the box.
When we were happy about our progress, I put one plastic bag into the trash bin and noticed that the bag would be displaced by the rotating chopstick. The problem was raised — since I was in charge of the fabrication, how should I deal with this? I came up with adding a bar in the middle to divide the box so that the bag could be put on the bar and would not be affected by the operating stick. I talked with Kenny about this, and we both think it is a good idea.
Problems always come after one another. Because the servo motor spins fast and our coding requires a big angle, the chopstick would be in its place too rapidly that the lid would be flipped over to the back by the propulsion, which meant it could not be closed by itself. To address that, Kenneth modified the code by adding several angles between the initial angle and the designated angle for the servo motor to reach step by step, neutralizing the force. That’s how our second and final version of code was born.
#include Servo servo; int const Pulse = 9; //blue cable int const Echoreceive = 10; // green cable int open; void setup() { Serial.begin(9600); //channel for serial monitor pinMode(Pulse, OUTPUT); pinMode(Echoreceive, INPUT); servo.attach(6); //Blue long cable } void loop() { int duration, distance; digitalWrite(Pulse, HIGH); digitalWrite(Pulse, LOW); duration = pulseIn(Echoreceive, HIGH); distance = duration * 0.034 / 2; //We found distance formula from arduino project hub. // servo triger distance is from 0 - 15 cm if (distance <= 15 && distance >= 0) { if (open == 0) { servo.write(162); delay(100); servo.write(153); delay(100); servo.write(144); delay(100); servo.write(135); delay(100); servo.write(126); delay(100); servo.write(117); delay(100); servo.write(108); delay(100); servo.write(90); open = 1; delay(5200); } } else { open = 0; servo.write(180); } delay(10); Serial.print("Distance: "); Serial.print(distance); Serial.println("cm"); delay(300); }
Problems solved. Hooray! We were ready for the user test.
In the User Testing Session, a lot of people came to our project to try it. We found two main problems when we observed how people interacted with the trash can and listened to their advice. First, the breeze sometimes blew up the plastic bag, triggering the sensor to detect the bag and open the lid. Second, the sensor could be mistaken as a pedal and people would try to step on it. Both of the problems were about the sensor, so we agreed to change the sensor to a different angle and location to solve the issues.
The best way of doing this is to dig two holes in the box and stick the sensor into the box so that it won’t be triggered by the sporadic breeze and can detect people’s movement as well.
(Me testing the final result)
The adaptation worked perfectly. Here, we finished all the work needed. Personally, I think it is the best part of our project as the adaptation not only prevents people from stepping on the crucial components and assures the durability of the trash can but also fuses the sensor into the trash can, generating the integrity of the whole project. More importantly, I learned that in the process of creating I need to keep an open mind to listen to others’ advice and be open to multiple choices. In a word, we need to jump out of the box.
Conclusion
The goal of our project is to create a practical, low-budget, easy-to-produce automatic trash can for households. For me, our project is more daily-life-oriented and straightforward about how it can be used, which coincides with my principle of interaction. I think what can be improved is how it can be more interactive, or to say, how it can involve more thinking and processing for the users to increase its convenience, for example, intelligent trash classification for recycling. However, in the presentation, I think we did not give explicit signs to the users on how to trigger the sensor. The notion of straightforwardness we intended to convey did not reach the users very well. If I had had more time, I would have added more fun indicators on the trash can to show users where the sensor is and designed a new lid and mechanism to open it to leave more room for the opening.
In a nutshell, I think the most important lesson I learned from this is that even if designers think of themselves as user-oriented, they can make some mistakes by imposing their own thoughts on the users. Therefore, it is critical to do the user test during the designing process. What’s more, never be afraid of change. When we encountered the trouble of the stick displacing the bag, to be honest, I did not want to make any rectifications because I was worried that once I started correcting, it might disturb other mechanisms and eventually destroy the whole project. However, I still tried to solve the problem by adding a bar, and I am glad I did. If not, the whole project would be an epic failure for increasing the inconvenience for users rather than diminishing it.
Why should anyone care? Since our project coincides with pragmatism, I would answer by saying pragmatism is the driving force for increasing our life quality. When we are dazzled by immense improvements in technology or fascinating avant-garde artworks, don’t forget that continuous improvement in detail is what makes our life easier. If we want to improve the details, we should harbor a pragmatic attitude and focus on what brings us inconvenience in everyday life. Only by doing this can we make our own contributions to the happiness of humanity and maybe some commercial success for ourselves.
Work Cited
Jabbaar, A. A. (2019, September 17). Ultrasonic sensor HC-SR04 with Arduino Tutorial. Arduino Project Hub. Retrieved November 1, 2022, from https://create.arduino.cc/projecthub/abdularbi17/ultrasonic-sensor-hc-sr04-with-arduino-tutorial-327ff6
Rachel Menzies. (2020). Drawing an arc in Processing. Retrieved November 2, 2022, from https://www.youtube.com/watch?v=U8W6KNKCEM0.