Project Title: Blow Away
Designer: Tina Zhang & Wendy Tong
Instructor: Marcela Godoy
Context and Significance
In the last project, the Group Research Project, our group based our idea on the fiction story, Folding Beijing, and created an elevator that could transfer people across spaces and could detect the identity and purposes of the passengers all through scanning. Superficially, it has nothing related to my midterm project, however, the idea that smart elevator can be able to transfer to other spaces makes me start to think whether it is possible for me to do some small interactive objects that can move when people interact with them, thus making the users feel that they have entered a brand new space. This is part of the inspiration that I put forward for our midterm project. After discussing with my partner, we decided to make a moveable car whose movements are triggered by the user speaking loud, which is mainly inspired by our group research projects and one little game which was once a hit in China, called 跳一跳 (jump), a Mini-Program on WeChat. The rule of playing that game is that the longer time that you hold your finger on the screen, the further your character will go on the map, which is composed of many small high square columns. If you fail to accurately make your character stand on those square columns, you fail. This is a really interesting game, and the duration of each time is not that long, which makes the players very willing to play it again and again. Therefore, it is suitable for students to play in their intervals between the classes. Also, we create our game to need the players to shout and move the car, since shouting can relieve people’s stress, according to many famous types of research, therefore, we target this project to students who are encountering heavy midterm stress and want to relieve their stress.
Conception and Design
First, we cut some tissues into pieces and put them near our project, together with some pens. There are some basic instructions about our project alongside them. For example, one instruction is like — Please take a piece of tissue, write down anything that bothers you on the tissue, make it into any shape that you prefer, and put it in the box.
Second, about how to interact with our project, we want our users to discover the methods by themselves. In order to give them some hints about this should be triggered by loudness (noise). We have drawn some small circles to make the hole where we put the loudness sensor behind more like a microphone. Hopefully, the users can understand that there is a microphone. Plus, our project is named “Blow Away”, which also gives our users a hint that they need to create noise with their mouses in order to play this game.
Last but not least, speaking of the outcomes of this game, we made a small hole on the floor of our “arena”, the box that we created to put everything inside and let the users play. At the very first beginning, we were trying to put the pressure sensor in a certain position so that the player can easily acknowledge who the winner is. And we would mark that position as a goal gate, thus making it obvious for the players to discover where they should blow their “pressure” away. However, since the fan is really weak, the wind that it blows can only blow tissues away, which is really hard to trigger the pressure sensor. We tried to use magnets to make the buzzer connected to the pressure sensor work. We used two magnet disks, one was put behind the pressure sensor, and the other was hung by one light and thin string. We tried to use the fan to blow away some papers, and when papers touch the string, the small magnet disk below will sway, in that way, it will be attached to the other magnet disk, so that the pressure sensor can be triggered. However, this method sometimes works while other times it does not. It is too unstable, so we finally abandoned this plan and decided to make a hole in the middle of the box, which everyone will intuitively know that the winner goes to the one who blows his or her tissue into the hole.
Fabrication and Production
In producing our project, we have gone through several important stages.
The first is brainstorming. Our first idea was inspired when we were pouring water into the cafe. The machine is put really high, which is above my eyesight. Therefore, I cannot see where the water level is, thus making it more likely that I will over-pour water in my cup and even pour some water out of the cup. Since I had tried the moisture sensor in the recitation, I proposed that we could make a spoon that has a moisture sensor attached to it. Users can simply put it on the glass, and the part inside the cup, where we put the moisture sensor on a certain point, will trigger the buzzer once the water level reaches it. However, this encounter an important problem–how to make the spoon water-proof while making the moisture sensor work? Also, we did some research about the use of moisture sensors, and we discovered that it might not be that suitable for us to put on this design. Later on, my partner proposed the idea of creating a moving car, which was inspired by the game “跳一跳”, which I have mentioned in the first part of this reflection. Both of us love this idea, so we started to brainstorm more to add on. We came up with a project aiming to relieve midterm stresses, we thought of using the loudness sensors, and we wanted to make the car move in a distance which is aligned with the amount of the loudness.
Later on, Professor Marcela suggested that instead of making the car moveable, we use the servo to make a piece of cardboard change its angle, thus making the car naturally slip down to the ground. We found it was a great idea, but the readers of the loudness sensor were so unstable, which made the servo could not serve as what we wanted it to work. Finally, we decided to make the project that we are now making.
During the user-testing process, we only had the electronic circuit and had not made a box that contained all of our circuits and elements, and we only had one circuit. The users gave us suggestions that we should make a box for it and make it clearer to the users that there was one loudness sensor. Also, they suggested that competition may make the game much more intriguing. Taking those suggestions into consideration, we decided to make a box that is like a soccer playground in which the player needs to compete on who can first goal the tissue ball in the middle to the other’s gate. However, also due to the weakness of the fans and the lightness of the tissue ball, we finally had to give up on this fancy idea. But we still tried our best to make one more circuit and make the game competition. Also, to avoid one player’s score being affected by the other player’s loudness, we adjusted the number in the code really a lot of times, and in the end, we produced two different ways for the two sensors to work, one is to shout at it, and the other is to blow wind to it, which not only solved the problem but also make the game more fun.
Conclusions
The goal of this project is to relieve students’ midterm stress through shouting and blowing their annoyance written on the tissues away. We have tried our best within the limited time, but the result, in my opinion, though aligned with our initial purpose, in terms of the user experience, still has a long distance from what we wanted to create at the very beginning. Although we drew a microphone there on our box, it is still sometimes confusing for the users to find out how to interact with our project. This was not fully exhibited in the user testing in class, since most of our classmates already knew how our project works before the testing. Besides that, we found out that in most cases, it is hard for the players to blow their tissues into the hole, part of the reason is that they did not choose an appropriate way to fold their tissue, which could be developed if they try a few more times. But the instability of the tissues is also part of the main reasons, which can be traced back to the weakness of the fans.
About the interaction, actually, our design is quite extraordinary. Instead of creating buttons for the users to push, we make the interaction mode more interesting and less predictable. Most of our users also expressed the same feelings during user testing. In my previous blog posts, I defined the interaction to be “a cyclic process in which two actors alternately listen, think, and speak where actors could be anyone who wants to join this interaction”. This midterm project that we made really aligns with my definition of “interaction”. Our game is open for everyone to join. It can also continuously give feedback (the speed of the fan working) in response to the players’ actions. This feedback, including how far and which direction that the tissues are blown to, then motivates the players to continue interacting with the game, which can be seen as a loop.
In addition, if we have more time, we will definitely try if there are other stronger motors that can make the fan work stronger, thus making it possible to blow some heavier things away, which also makes giving winners direct and more various feedback possible. However, although the project is not perfect enough, I definitely learned a lot in the process of polishing our projects, especially the coding part we spent much time figuring out at the very beginning. The readers of the loudness sensors are quite unstable, we tried so many approaches trying to solve that problem, including adjusting the basic number of noise, etc. However, none of them works. Finally, we searched on the website and asked for help from the learning assistant, with a lot of attempts, we finally used smoothing and connecting our motors to external power sources to solve the problem.
final version
previous stages
magnet version
the box under the hole
project poster
Code:
/* Smoothing Reads repeatedly from an analog input, calculating a running average and printing it to the computer. Keeps ten readings in an array and continually averages them. The circuit: * Analog sensor (potentiometer will do) attached to analog input 0 Created 22 April 2007 By David A. Mellis <dam@mellis.org> modified 9 Apr 2012 by Tom Igoe http://www.arduino.cc/en/Tutorial/Smoothing This example code is in the public domain. */ // Define the number of samples to keep track of. The higher the number, // the more the readings will be smoothed, but the slower the output will // respond to the input. Using a constant rather than a normal variable lets // use this value to determine the size of the readings array. const int numReadings = 40; int readings[numReadings]; // the readings from the analog input int readIndex = 0; // the index of the current reading int total = 0; // the running total int average = 0; // the average int dcPin2=10; int sensorPin = A0; int dcPin=9; //int sensorPin=9; int val =0; int analogVal =0; void setup() { // initialize serial communication with computer: Serial.begin(9600); //pinMode(9, INPUT); pinMode(dcPin, OUTPUT); pinMode(dcPin2, OUTPUT); // initialize all the readings to 0: for (int thisReading = 0; thisReading < numReadings; thisReading++) { readings[thisReading] = 0; } } void loop() { // subtract the last reading: total = total - readings[readIndex]; // read from the sensor: readings[readIndex] = analogRead(sensorPin); // add the reading to the total: total = total + readings[readIndex]; // advance to the next position in the array: readIndex = readIndex + 1; // if we're at the end of the array... if (readIndex >= numReadings) { // ...wrap around to the beginning: readIndex = 0; } // calculate the average: average = total / numReadings; // send it to the computer as ASCII digits Serial.println(average); delay(1); // delay in between reads for stability //read val and control dc //val =analogRead(sensorPin); val = map(average, 200, 450, 0, 255); //analogVal = analogRead(A0); //Serial.println (val); // when the sensor detects a signal above the threshold value, LED flashes if (0<average && average<200){ analogWrite(dcPin, 0); analogWrite(dcPin2,0); }else if (200<average && average<250 ) { analogWrite(dcPin, val); analogWrite(dcPin2,0); Serial.println("yes"); }else if(average>250) { analogWrite(dcPin2, val); analogWrite(dcPin,val); Serial.println("yes"); } }