Clairvoyant Doorbell

Made by yvonnef

The doorbell foretells the entry of a guest, but what if the guest is not a human, but changes in the atmosphere and weather? You can ring the Clairvoyant Doorbell to ask whether tomorrow will be a warmer day. It will always be excited to share with you that tomorrow will be a warmer day. I intend the doorbell to be spooky in that it knows the natural environment better than humans do, and I’m interested in how that can give the natural environment some form of animistic agency too.

Created: February 18th, 2023

0

Intention

The doorbell foretells the entry of a guest, but what if the guest is not a human, but changes in the atmosphere and weather? You can ring the Clairvoyant Doorbell to ask whether tomorrow will be a warmer day. It will always be excited to share with you that tomorrow will be a warmer day.


The main motivation for this project is to make an animistic technological object that serves as a communicator between the human and the environment. I intend it to be spooky in that it knows the natural environment better than humans do, and I’m interested in how that can give the natural environment some form of animistic agency too.
0

Context

I drew inspiration broadly from art and design works that challenge anthropocentrism. How can technology be in service of the environment, not just humans? How might technology in a possible future where life is wildly changed by ecological disasters be like? Within the creative constraints of “doorbell, temperature sensor, LED lights,” I felt an elegant way to embody my ideas is through an agentive and sensitive device that knows the weather and atmosphere better than humans, and communicates variations in weather to humans in an emotional way. Ideally, I want the doorbell to be “pressed” by the atmosphere/weather, taking away the agency from humans in that interaction(, which I wasn’t able to implement due to time constraints). I’m also vaguely inspired by a line in Shelley's poem: “If Winter comes, can Spring be far behind?”
0

Prototype/Outcome

I created a doorbell that can show you how it feels about (or predict) tomorrow’s weather. I connect both the LED strip and the doorbell to power sources and digital pins on the Arduino running my code. When someone presses the doorbell, the Arduino reads a 1 from the digital pin and “predicts” tomorrow’s weather based on the current temperature reading. Note that the temperature prediction code is just a Wizard of Oz dummy code rather than a functioning ML model.
    Materials used including:
    • Arduino Nano 33 BLE
    • LED Strip
    • Cardboard
    • Doorbell
    Code (see below):

    0
    #include <Arduino_LPS22HB.h>
    #include <Adafruit_NeoPixel.h>
    #define PIXEL_PIN D3
    #define PIXEL_COUNT 30
    #define PIXEL_TYPE NEO_GRB + NEO_KHZ800
    
    Adafruit_NeoPixel strip = Adafruit_NeoPixel(30, D3, PIXEL_TYPE);
    
    float old_temp = 0;
    
    void setup() {
      Serial.begin(9600);
      //while (!Serial);
    
      if (!BARO.begin()) {
        Serial.println("Failed to initialize pressure sensor!");
        while (1);
      }
    
      pinMode(D2,INPUT_PULLDOWN);
    
      //LED strip code
        strip.begin();
        strip.show();
    }
    
    void loop() {
      // read the sensor value
      float pressure = BARO.readPressure();
    
      // print the sensor value
      Serial.print("Pressure = ");
      Serial.print(pressure);
      Serial.println(" kPa");
    
      float temperature = BARO.readTemperature();
      Serial.println();
    
      // wait 1 second to print again
      delay(1000);
      float temp_diff = temperature-old_temp;
      old_temp = temperature;
    
      int val = digitalRead(D2);
      Serial.print("the doorbell says ");
      Serial.print(val);
       //if doorbell says 1, it predicts the weather
       if(val == 1){
        Serial.print("temp diff ");
        Serial.print(temp_diff);
        if (temp_diff>=0.01 && temp_diff <10){
          Serial.println("warmer");
          int blinknum = random(50);
          strip.setBrightness(255);
          for (int j=0;j<blinknum;j++){
            for (int i=0; i<strip.numPixels();i++){
              strip.setPixelColor(i, random(255),random(255),random(255));
              strip.show();
            }
            delay(random(50));
            for (int i=0; i<strip.numPixels();i++){
              strip.clear();
              strip.show();
            }
            delay(10);
          }
        }
      else if (temp_diff<0.01 && temp_diff <10){
         Serial.println("colder");
         for (int i=0; i<strip.numPixels();i++){
              strip.setBrightness(30);
              strip.setPixelColor(i,0,0,255);
              strip.show();
              //strip.clear();
            }
    for (int j = 30 ; j> 0 ; j--) {  
        for (int i = 0;i <strip.numPixels ();i ++) {  
          strip.setBrightness(j);
          strip.show();
        }
        delay(10); 
      }
        delay(10);
        }
       }
    }
    Click to Expand
    0

    Process

      Throughout my weekly explorations, I learned how to program sophisticated LED behavior, and attempted to upload a ML model trained on Pittsburgh weather through Eloquent Tiny ML (with some errors I couldn’t fix in time.) Originally, my design involved allowing the weather to “press” the doorbell through a servo motor. However, I did not have the time to explore that, and instead, I tweaked my design so that the doorbell will give a weather prediction everytime someone presses it. For challenges I faced when uploading the ML model, I ended up writing some Wizard of Oz code for the demo, where small temperature increase would lead to “warmer” predictions, and vice versa.
      0

      Open Questions and Next Steps

      The aspect of taking away human agency in this interaction remains unresolved, and I’d like to implement servo motors if I have time. The weather prediction algorithm also remains unimplemented. I could actually do more there. Instead of learning how to predict weather from the Pittsburgh weather dataset, the object could have its own idiosyncratic way of foretelling the weather. One big challenge that remains is the fact that this project relies on changes in ambient temperature over time, which poses difficulty for demoing and documentation. A possible solution is to simulate different environments during demo with electronic components like fans.

      Since this is a rather simple idea, the question of what role such a technology that helps humans connect to the weather can play in a person’s home can be further explored. More iterations and even testing would be beneficial to understand how “animistic” this object actually feels to people. 

      0

      Reflection

      • This project is in my opinion not completely successful. I had to abandon the idea of a doorbell being “pressed by weather,” and people still had to initiate the interaction. Part of the reason is the failure to implement a servo motor, but one other reason is that the animistic behavior could be more nuanced and convincing. One opportunity I should explore more is programming more lifelike behavior in the LED strip. For example, following some feedback in class, I realized I could program a “thinking/deciding” behavior by blinking the two LED pixels that resemble eyes. In addition, sound with different emotional qualities is another area I could explore. Prediction of weather conditions such as sunny, cloudy, rainy, etc. would also be clearer and more interesting than “colder” and “warmer,” and since I already have illustrations on the box, I could illuminate the different illustrations to signal the prediction.

      0
      x
      Share this Project


      About

      The doorbell foretells the entry of a guest, but what if the guest is not a human, but changes in the atmosphere and weather? You can ring the Clairvoyant Doorbell to ask whether tomorrow will be a warmer day. It will always be excited to share with you that tomorrow will be a warmer day. I intend the doorbell to be spooky in that it knows the natural environment better than humans do, and I’m interested in how that can give the natural environment some form of animistic agency too.