Wind Whistler
Made by Semina Yi
Made by Semina Yi
What if the fan is whispering the color it wants to see? Wind Whistler sends the morse code to communicate with you. Feel the breeze carefully, and you will understand what it says: the long wind indicates a dash(-), and the short wind indicates a dot(.). It will keep sending the signal till you show the color it wants.
Created: February 17th, 2023
Human-centered design is a popular technique for people at the system's center so that the service can benefit users. It creates the direction of the value always towards the human side. In other words, the beginning of the command(input) is always done by humans, and as a result, the service (output) will follow as requested. Also, mutual interaction is the circular form in the society of living creatures, including humans and animals. I want to create a similar interaction with daily objects. What if the machine is independent and has its own needs and desires like a living creature? What if the device asks or commands the human to respond too?
The first interaction that I would like to shift is the servant and master relationship between objects and humans. There was a "Turnspit Dog" in the past, the dog who would run continuously on the wheel for hours to crank the spit for hours so that the flame in the kitchen could stay up. The dog back then was regarded as an instrument or a servant. On the other hand, dogs are 'men's best friends. I want to uncover what would lead the new types of relationships with humans.
The second interaction that I would like to change is the role of the listener and the speaker. For example, humans are always the speakers, and the objects are the listeners. What if it is the other way around? What if humans have to serve the request of things? The question about this relationship made me think of Tamagotchi. It is a portable digital pet created in Japan and constantly asks(sending notifications) for attention to survive.
I found that when people start paying attention to the object, it starts working abnormally. I wanted it to change human behavior by triggering peculiar behavior things. This shift will allow us to create new relationships with the objects, just like the past relationship with the animals.
I decided to make a fan that has its' desire, and it communicates with the morse code. Since the wind morse code is very subtle, humans should feel the breeze carefully, and you will understand what it says: the long wind indicates a dash(-), and the short wind means a dot(.). It will keep sending the signal till you show the color it wants.
The digital tools used were the color sensors on the Arduino Nano BLE and the relay. The color sensor requires the individual value of red, green, and blue. And it allows the creation of an infinite number of different colors, just like a human desire. Also, a relay was used to create the long and short wind; turning on and off was considered so that it had a binary pause in between the signals. Even though the power source is binary, the motor takes some time to stop rotation after the call. This allows the different softness of the winds as well.
The physical supplement is the set of cards, including R, G, and B color cards and the instruction of morse code. The instruction card helps people who are not familiar with the morse code could easily understand the signals. Also, the color cards are made not only for accessibility but also for affordance. It will be easier for the listener to know what it wants is the color among these three.
#include <Arduino_APDS9960.h>
long randNumber;
int r, g, b;
int relayPin = D2;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(relayPin, OUTPUT);
while (!Serial);
if (!APDS.begin()) {
Serial.println("Error initializing APDS-9960 sensor.");
}
randomSeed(analogRead(0));
digitalWrite(LEDR,LOW);
digitalWrite(LEDB,LOW);
}
void loop() {
// print a random number from 0 to 3
randNumber = random(20);
Serial.println(randNumber);
digitalWrite(relayPin, HIGH);
//delay(1000);
// check if a color reading is available
while (! APDS.colorAvailable()) {
delay(5);
}
//int r, g, b;
// read the color
APDS.readColor(r, g, b);
//morse Code
if (randNumber == 0){
//beginning signal
digitalWrite(relayPin, LOW);
delay(3000);
// read the color
APDS.readColor(r, g, b);
do{
digitalWrite(LEDR,HIGH);
digitalWrite(LEDB,HIGH);
morseRed();
//delay(1000);
while (! APDS.colorAvailable()) {
delay(5);
}
APDS.readColor(r, g, b);
Serial.print("Current r: ");
Serial.println(r-130);
Serial.print("Current g: ");
Serial.println(g);
Serial.print("Current b: ");
Serial.println(b);
Serial.println();
}while (r-130 < g && r-130 < b);
}
else if(randNumber ==1){
//beginning signal
digitalWrite(relayPin, LOW);
delay(3000);
// read the color
APDS.readColor(r, g, b);
do{
digitalWrite(LEDR,HIGH);
digitalWrite(LEDB,HIGH);
morseGreen();
//delay(1000);
while (! APDS.colorAvailable()) {
delay(5);
}
APDS.readColor(r, g, b);
Serial.print("Current r: ");
Serial.println(r-130);
Serial.print("Current g: ");
Serial.println(g);
Serial.print("Current b: ");
Serial.println(b);
Serial.println();
}while (g < r-130 && g < b);
}else if(randNumber ==2){
// morseBlue();
// begining signal
digitalWrite(relayPin, LOW);
delay(3000);
// read the color
APDS.readColor(r, g, b);
do{
digitalWrite(LEDR,HIGH);
digitalWrite(LEDB,HIGH);
morseBlue();
//delay(1000);
while (! APDS.colorAvailable()) {
delay(5);
}
APDS.readColor(r, g, b);
Serial.print("Current r: ");
Serial.println(r-130);
Serial.print("Current g: ");
Serial.println(g);
Serial.print("Current b: ");
Serial.println(b);
Serial.println();
}while (b < g && b < r-130);
}else{
//Serial.println(randNumber);
//delay(1000);
}
Serial.print("r = ");
Serial.println(r-100);
Serial.print("g = ");
Serial.println(g);
Serial.print("b = ");
Serial.println(b);
Serial.println();
// wait a bit before reading again
delay(1000);
}
void morseDot(){
//dot
digitalWrite(LEDR,LOW);
digitalWrite( relayPin, HIGH );
delay(500);
digitalWrite(LEDR,HIGH);
digitalWrite( relayPin, LOW );
delay(1500);
}
void morseDash(){
//dash
digitalWrite(LEDR,LOW);
digitalWrite( relayPin, HIGH );
delay(1500);
digitalWrite(LEDR,HIGH);
digitalWrite( relayPin, LOW );
delay(1500);
}
void morseRed(){
//R: dot-dash-dot
Serial.println("morse RED");
morseDot();
morseDash();
morseDot();
/*
//E: dot
morseDot();
//D: dash-dot-dot
morseDash();
morseDot();
morseDot();
*/
}
void morseGreen(){
//G: dash-dash-dot
morseDash();
morseDash();
morseDot();
}
void morseBlue(){
//B: dash-dot-dot-dot
morseDash();
morseDot();
morseDot();
morseDot();
}
Click to Expand
This project has been challenging to think outside of the box. As I mentioned previously, we are familiar with human-centric services. On the other hand, the objects based on the understanding of animism have their own will and life. Connecting these two different relationships was one of the exciting parts, and it was happy to see it changing people's behavior ultimately during the demo. Also, there are multiple factors that I should have considered after finishing the logical part of the codings. To be more specific, it works well. Still, it behaves slightly unnatural because of these small details. I would like to spend more time on these details next time so that the prototype can stand by itself and independently speak about its own purposes.
What if the fan is whispering the color it wants to see?
Wind Whistler sends the morse code to communicate with you. Feel the breeze carefully, and you will understand what it says: the long wind indicates a dash(-), and the short wind indicates a dot(.). It will keep sending the signal till you show the color it wants.