Dream Garden
Alice (Leying Guo) instructed by Professor Andy
Alice (Leying Guo) instructed by Professor Andy
CONTEXT AND SIGNIFICANCE
As art and craft persons, Cynthia and I found online some videos of paper flowers opening and closing with the control of hands, so we decided to make a garden of interactive flowers with more elements. The video that inspired us most was the one using paper to make a flower and used a straw inside the stem of the flower to pull the flower back and forth as if controlling the blossoming and closing of the flower. I thought this mechanism could be interactive as it provides realtime feedback in the form of the shift of the flower's condition to the user pulling the stem of the flower. If you pull the flower, it blossoms; if you don't, it's closed. This inspired our midterm project to create an interactive flower using a servo motor controlled by Arduino. By implementing a distance sensor, users can now engage with the flower by controlling its movements in a back-and-forth manner, for example, placing their hands onto and away from the sensor. They no longer need to touch the flower to control its conditions, which may give them a surprise when they see the flower blossom for the first time. We also saw some videos of swings made with chopsticks, so we revised the design to make it swing more flexibly with soft strings and connected it to Arduino with a speed and acceleration sensor and a player to play different sounds according to different accelerations detected. Therefore, it not only builds on our earlier findings but also enhances user interaction by making it more dynamic and responsive. Our project is intended for a broad audience, including not only children but also anyone interested in robotics or nature. For children, it serves as an engaging educational tool that teaches basic principles of robotics and the coexistence of nature and technology through a playful medium. For others, their childhood memories may be recalled as they see the swing swinging, hear the laughter of children and witness the flowers blossoming to create shade for them amid their interaction with our project. The unique value lies in our project's ability to connect users with both technology and the natural world, which makes it fun, interactive, educational and nostalgic.
Full video of the swing:
CONCEPTION AND DESIGN
We aimed for an interactive experience where users could control the flower’s opening and closing through a distance sensor, so that they wouldn’t need to physically touch the flowers. Users could observe the flower responding to their presence, enhancing the sense of connection without direct contact. We incorporated an acceleration sensor to control sound effects from a swing. (which wasn't presented in the original sketch on the right because we didn't intend to make a swing at the proposal part) By linking the swing’s acceleration to different sounds, to be specific, laughter for higher ones and soothing melodies for lower ones, we intended to create an emotional response in users that aligns with their physical movement. This decision was based on our understanding that sound can significantly enhance user experience as the users may be engaged in the happy atmosphere and recall their sweet childhood memories and give feedback that complements their visual interaction.
Initially, we used card paper to create the flowers. However, we found that card paper made it difficult for the flowers to open and close effectively. After experimenting, we switched to a more flexible paper(actually the A4 paper) which allowed for smoother movement and a more lifelike response.
When selecting materials, we considered several criteria, namely:
Flexibility: The material needed to easily accommodate movement of the flowers and the swing.
Aesthetic Appeal: We wanted the flowers and the swing to look inviting and engaging.
Ease of Manipulation: The material had to be easy to work with for our intended audience.
Flexible paper emerged as the best choice for the flowers as it provided the necessary responsiveness while being lightweight, which ensures that the mechanism would operate smoothly. Skewers and strings turned out to be suitable materials for the swing as the combination of them can guarantee the swing of being solid and flexible.
Another option we considered was using fabric for the flowers, which could add a tactile element and enhance visual appeal. We also planned to make an iron rack to lay the flowers on.However, we ultimately rejected this idea because fabric was too soft so that it might not respond as well to the opening and closing mechanism we designed. Moreover, it wasn't as easy as we thought to make the iron rack and attach the flowers onto it as the flowers needed to move while the rack needed to be solid to prevent our artifact from collapsing.
👆The original sketch of our project which still featured some notes played during the interaction with the flower but was later rejected because we didn't think it was a good idea to present the nature and had no idea of how to program the flowers to play random notes.
👆The final sketch showcasing all the components and their brief mechanisms
👆The iron rack's failure to hold the metal needed tightly to support the flowers
👆The card paper's failure to hold the flower open and close (movement almost invisible to the eye)
FABRICATION AND PRODUCTION
We made the flowers by cutting them out of paper and using the hot glue gun to connect straws and wires to the receptacle to make it function. (Cynthia and I each made one of the flowers)
Cynthia and I were each responsible for building one circuit for the flower we made to connect the flower with, connecting a servo and a distance sensor.
It was quite difficult to attach the servo to the flower without hindering its movements, as the flower often fell off the servo when we simply glued it to the servo. After asking Andy for help, we were informed that we could bind the wire to the servo, which may make it more solid and keep its movements. We also changed our servo motor to a bigger one with higher power so that the movements of the flower would be more invisible to the eye and may create a better experience when interacting with the flowers. But we still need to put the servo against the desk to make the flower function.
Then, we made a box out of cardboard to hide our circuit and make the artifact look more like a garden.
To avoid the flowers from leaning to other sides, we cut out a window in the center of the box and used hot glue to consolidate the flowers.
We made a few decorations to the base to make it look like a garden and brought it to the user testing session.
Several people interacted with our work during the user testing session. But it turned out that they were not that aware of what the trigger of the flowers were. Some of them tapped the box, others said hello to the flowers and snapped their fingers to activate the flowers. Moreover, the form of interaction with our project seemed to be too monotonous compared with other groups as the users only used the distance sensor for interaction. Therefore, we decided to make some refinements to make the trigger more obvious and to diversify the forms of interaction with the project.
To make the trigger more obvious, we coated the distance sensors with some cotton as if they were clouds, so that the user may uncover it cloud to discover the movements of the flowers. The cotton also added to the mysterious and illustionary atmosphere of our garden, which may recall the user's childhood memories that were a little vague in their dreams.
To diversify the interactions, we asked Angy for suggestions and decided add a swing to the garden and use the acceleration sensor combined with some melody playing with the swing swinging. In this case, our project may recall more childhood memories and look more intriguing to interact with. We referred to the tutorials* to learn how to play the melody with codes and got help from Yanny's group* also using this function.
Thanks to the faculties' help and online reference of how to play random notes using code, our revised code looks as follows:
#include <Servo.h>
#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>
Servo myServo;
int toneDo = 261;
int toneRe = 293;
int toneMi = 329;
int toneFa = 349;
int toneSo = 392;
int toneLa = 440;
int toneTi = 493;
int tones[] = {toneDo, toneRe, toneMi, toneFa, toneSo, toneLa, toneTi};
int lastTone = -1;
*(We copied this part of the code regarding notes online as we didn't know how to play the notes using code by ourselves)
int xValue;
SoftwareSerial mySoftwareSerial(6, 11);
int currentTrack = 0;
bool playMusic1 = false;
void setup() {
Serial.begin(9600);
mySoftwareSerial.begin(9600);
if (!myDFPlayer.begin(mySoftwareSerial, false, false)) {
Serial.println("DFPlayer Mini initialization failed!");
}
myDFPlayer.volume(20);
Serial.println("DFPlayer Mini initialized successfully!");
pinMode(9, OUTPUT);
pinMode(10, INPUT);
pinMode(8, OUTPUT);
myServo.attach(3);
myServo.write(0);
randomSeed(analogRead(0));
}
void loop() {
digitalWrite(9, LOW);
delayMicroseconds(2);
digitalWrite(9, HIGH);
delayMicroseconds(10);
digitalWrite(9, LOW);
duration = pulseIn(10, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
if (distance < 15) {
myServo.write(180);
int randomTone;
do {
randomTone = tones[random(0, 7)];
} while (randomTone == lastTone);
lastTone = randomTone;
tone(8, randomTone);
delay(500);
noTone(8);
delay(100);
} else {
myServo.write(0);
}
xValue = analogRead(A0);
Serial.print("x = ");
Serial.println(xValue);
if (xValue > 230) {
if (currentTrack != 2) {
myDFPlayer.loop(2);
currentTrack = 2;
}
} else {
if (currentTrack != 1 && !playMusic1) {
myDFPlayer.play(1);
currentTrack = 1;
playMusic1 = true;
delay(4000);
myDFPlayer.stop();
}
if (playMusic1) {
myDFPlayer.loop(2);
currentTrack = 2;
playMusic1 = false;
}
}
delay(100);
}
👆A photo of the circuit after we connected the swing
👆The overall appearance of our garden after making the revisions mentioned above
👆This is how our artifact functions after making the revision.
At first, only the flower part moved. We checked our circuit and code and found out that we had input the original pinnumber after combining the circuits together and changing the pins.
Howvever, after making the revision, the code still didn't work well. We asked a professor at the lab for help. The issue turned out to be quite simple: we didn't put the precise initial value of the acceleration of the swing, which hindered it to function correctly. Every time we uploaded the code, only laughter would be played because we set the initial value too high. We were getting really depressed because it looked as if our swing was laughing at us!
Finally, after making all those refinements, our code finally worked! The melody playing now had a soothing and calming effect on us who built it!
*Yanny's code:
void setup(){
pinMode(9, INPUT); // Attach DFPlayer to pin9 to check whether it is busy
void loop(){
if (sensorVal1 > 20 && digitalRead(9) == HIGH) { // Only play if music is not busy (HIGH = not playing)
myDFPlayer.start(); // Resume music
} else if (sensorVal1 <= 20 && digitalRead(9) == LOW) { // Only stop if music is busy (LOW = playing)
myDFPlayer.pause(); // Pause music
}
The primary goals of our project were to create an interactive garden in which flowers responds to users’ proximity using a distance sensor while the swing responds to the height users pull it to. The experience of the interaction might be enhanced with sound effects controlled by an acceleration sensor and the distance sensor. We aimed to foster a playful yet meaningful interaction between users and the elements of our project, which can allow them to engage without much physical contact.
Our project results aligns with my definition of interaction, as users could observe how their presence influenced the flower’s movement and how their actions on the swing altered the accompanying sounds. This created an interactive experience by giving feedback that complemented the user's visual interaction, thereby helping the users engage in the happy atmosphere while recalling their sweet carefree childhood memories. After the practice in the user testing session, it can be seen that our users interacted with the project in a variety of ways. Many enjoyed the visual spectacle of the flowers responding to their movements and found joy in the playful sound effects tied to the swing's swinging motion. However, some participants were hesitant to engage fully, possibly due to a lack of understanding of how their actions influenced the project.
As can be seen from above, there were aspects that did not fully align with my definition of interaction mentioned at the beginning. For instance, while the distance sensor worked effectively, there were moments when the responsiveness could be improved to create an even more seamless interaction between the user and the flowers.(Sometimes the flower closes too slowly after the user removes his or her hand from the sensor so that it is hard for the user to judge what the trigger is.) What's more, during the user testing session, some users expressed confusion about the mechanism behind the sounds, indicating that clearer instructions or visual cues could be made to enhance their experience.
If I had more time, I would focus on providing clearer guidance on how to interact with the elements. Maybe I will try to incorporate visual feedback such as connecting some LEDs to some components in the garden (perhaps just as Andy originally taught us to do--make a shining rainbow). I think this could help users understand the relationship between their actions and the system’s responses more intuitively.
In light of setbacks, particularly with the failure of the code controlling the swing, I learned the importance of accuracy in coding as we needed to check the pins and measure the initial value to distinguish different states of the swing. Moreover, we found it really hard to diversify the forms of interactions as we had no idea what to base those sensors on. The challenges we faced led to a deeper understanding of the craftsmanship of the designers as well as the critical role inspiration plays in innovation and project design,
Reflecting on our accomplishments, I have a sense of fulfillment in creating an interactive experience that succeeded in combining the techniques we learned in class and applying them into practice to create playful engagement. The making of the project not only met our initial objectives but also gave me an idea of areas for future growth and improvement, which is a precious experience.
After documenting users' interactions with our garden, we disassembled the project into elemental components, and returned them into the assigned box so that they can be of use to future students of Interaction Lab.