the Spirits in the Lamp- Alternatives with Home Electronic Devices

Made by Chengzhi Zhang and Tianqi Chu

Created: April 4th, 2022

0

Intention

The spirits in the lamp is a project that we created to make people have more intentional, mindful encounters with home electronic devices. Unlike the normal lamp, our lamp does not have an on/off button. It requires people to hold it and warm it up with human body heat in order to turn it on, as if it's saying "Please warm me! I'm feeling cold right now." It will also dim little by little, urging people to heat it again. As we realized the interactions between human and those objects are too absolute, like pushing a switch button, and the light is on, pushing a button and then the toast is done, etc. We want to alter the relationship between people and those products by creating poetic interactions between people and everyday objects. In this way, people will see everyday objects with a different lens and not take this subject-object relationship for granted. Looking closer to the current environment we're living in. Actually, behind those conveniences we're enjoying, there is a huge infrastructure system that's supporting our current convenient life which most of the people on this planet are not privileged to enjoy. We created "the spirit in the lamp" also to inform people about the privilege they are enjoying, which is often neglected. 

0

Context

Our group took inspiration mostly from James Pierce's works.  Looking at his works, I find several coincidences of ideas I want to express, like the omnipresent camera, the always-on sensing devices, and how he negates some by presenting the alternatives or bringing those problems to the table by materializing them or making some material embodiments. Finding the alternatives is important. James Pierce's work like the curtains, which demonstrates how users negate the omnipresent sensing by covering them up[1], and the Privacy and Data Policies in the Print project, which reveals reading the privacy and data policies as an ignored failure of interaction design[2], are all thought-provoking. Those projects bring new angles to approach the status quo for us designers, not as problem-solving but as problem defining and witnessing. It also reveals that sometimes, people accept some problematic things for granted because they are used to them. Which is not a good sign. When the whole society takes more negative things for granted, it’s directing to an undesirable future. This can be a stage where designers may and should come into action.

Reflecting on what I experienced during half a year studying in the states, there are many things that are “wrong” but taken for granted by people living here. People never turned off lights in the library and the gym(even during Christmas!), people use of disposable dishware too frequently, and so on. Those are the things happening in this land that constitute only 5% of the population while consuming 24% of the world’s energy[3].   But, is this convenience good? I found that convenience in America, although in rapid consumption of energy and resources, does not have a significant impact on the happiness level of myself and the population[4]. And then, why should we even retain this “convenience”? Behind the so-called convenience, these figures reveal what are things ignored, or even unknown.  Inspired by James Pierce’s practice, our group intend to unveil these facts by inserting obstacles and mindful interastions in our home to call on people’s awareness of the privilege they are enjoying.

By inserting those naughty domestic devices, hopefully, we will become more aware of the privilege we are having and the backstage system that support the superficially convenient life.

0

Process

We iterated mainly through trying different sensors to achieve our final effect. We want to achieve the effect that the lamp can only be turned on when people hold it for some time, the body heat of the palms can be transferred to the lamp to warm it up. 

0

Product

0
22SpringRME_Spirits in the lamp
Chengzhi Zhang - https://youtu.be/rSvpocDVctE
0
#include <DHT.h>
#include <FastLED.h>

FASTLED_USING_NAMESPACE

// FastLED "100-lines-of-code" demo reel, showing just a few 
// of the kinds of animation patterns you can quickly and easily 

#define DATA_PIN    3
#define LED_TYPE    WS2812
#define COLOR_ORDER GRB
#define NUM_LEDS    16
CRGB leds[NUM_LEDS];

#define BRIGHTNESS          50
#define FRAMES_PER_SECOND  120

int ThermistorPin = 0;
const int LED = 2;
int Vo;
float R1 = 10000;
float logR2, R2, T, Tc, Tf;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
double avg_temp = 0;
double sum_temp = 0;
double cur_temp = 0;
bool isOn = false;
long int t1;
long int t2;


// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain


#include "DHT.h"

#define DHTPIN 2     // what digital pin we're connected to

#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321

DHT dht(DHTPIN, DHTTYPE);

void setup() {
    Serial.begin(9600);
    Serial.println("HEY HEY I AM A MAGIC LAMP.\n");
  
    dht.begin();
    for (int i = 0; i < 6; i++) {
        sum_temp += getTemp("h");
        delay(1000);
    }
    avg_temp = sum_temp / 6;
    Serial.println("Avg Temp is: " + String(avg_temp) + "\n");

FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
//FastLED.addLeds<LED_TYPE,DATA_PIN,CLK_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);

// set master brightness control
FastLED.setBrightness(BRIGHTNESS);
}

void loop() {
    // Wait a few seconds between measurements.
    delay(2000);  

    double holding_sum = 0;
    double holding_avg = 0;

    Serial.print("Please hold me.\n");
    for (int i = 0; i < 5; i++) {
        cur_temp = getTemp("h");
        holding_sum += cur_temp;
        print_info(cur_temp);
        delay(1000);
    }
    Serial.print("Calculating avg.\n");
    holding_avg = holding_sum / 5;

    if (holding_avg < avg_temp * 1.2) {
        if (isOn) {
            t2 = millis();
            Serial.print("T2: " + String(t2) + "\n");
            Serial.print("T1: " + String(t1) + "\n");
            long time = t2 - t1;
            Serial.print("Time: " + String(t2 - t1) + "\n");
            delay(time);
            Serial.print("ligts is turning off!\n");
            fade_out();
            isOn = false;
        } else {
            Serial.print("hey ligts off!\n");
        }
    } else {
        Serial.print("yesyesyes ligts up!\n");
        if (!isOn) {
            isOn = true;
            fade_in ();
            t1 = millis();
            Serial.print("T1: " + String(t1) + "\n");
        } else {
            for ( int i = 0; i < NUM_LEDS; i++) {
                leds[i] = CHSV(0, 0, 255);
            }
            FastLED.show();
        }
        
    }
}

void fade_out () {
    for ( int i = 0; i < NUM_LEDS; i++) {
        leds[i] = CHSV(0, 0, 220);
    }
    FastLED.show();
    Serial.print("I feel a little bit cold.\n");
    delay(60000);

    for ( int i = 0; i < NUM_LEDS; i++) {
        leds[i] = CHSV(0, 0, 169);
    }
    FastLED.show();
    Serial.print("Time to warm me!.\n");
    delay(60000);

    for ( int i = 0; i < NUM_LEDS; i++) {
        leds[i] = CHSV(0, 0, 105);
    }
    FastLED.show();
    Serial.print("Don't need me any more?.\n");
    delay(60000);

    for ( int i = 0; i < NUM_LEDS; i++) {
        leds[i] = CHSV(0, 0, 50);
    }
    FastLED.show();
    Serial.print("I am freezing!!!\n");
    delay(60000);
    
    for ( int i = 0; i < NUM_LEDS; i++) {
        leds[i] = CHSV(0, 0, 0);
    }
    FastLED.show();
}

void fade_in () {
    for ( int i = 0; i < NUM_LEDS; i++) {
        leds[i] = CHSV(0, 0, 50);
    }
    FastLED.show();
    delay(300);
    for ( int i = 0; i < NUM_LEDS; i++) {
        leds[i] = CHSV(0, 0, 100);
    }
    FastLED.show();
    delay(300);
    for ( int i = 0; i < NUM_LEDS; i++) {
        leds[i] = CHSV(0, 0, 169);
    }
    FastLED.show();
    delay(300);
    for ( int i = 0; i < NUM_LEDS; i++) {
        leds[i] = CHSV(0, 0, 220);
    }
    FastLED.show();
    delay(300);
    for ( int i = 0; i < NUM_LEDS; i++) {
        leds[i] = CHSV(0, 0, 255);
    }
    FastLED.show();
}

void print_info(double temp) {
    Serial.print("Humidity: " + String(temp) + "\n");
    Serial.println("===========================\n");
}

float getTemp(String req) {

    // Reading temperature or humidity takes about 250 milliseconds!
    // Sensor readings may also be up
    //  to 2 seconds 'old' (its a very slow sensor)
    float h = dht.readHumidity();
    // Read temperature as Celsius (the default)
    float t = dht.readTemperature();
    // Read temperature as Fahrenheit (isFahrenheit = true)
    float f = dht.readTemperature(true);

    // Compute heat index in Fahrenheit (the default)
    float hif = dht.computeHeatIndex(f, h);
    // Compute heat index in Celsius (isFahreheit = false)
    float hic = dht.computeHeatIndex(t, h, false);

    // Check if any reads failed and exit early (to try again).
    if (isnan(h) || isnan(t) || isnan(f)) {
        Serial.println("Failed to read from DHT sensor!");
        return 0.0;
    }
    // Compute heat index in Kelvin 
    float k = t + 273.15;
    if(req =="c"){
        return t;//return Cilsus
    }else if(req =="f"){
        return f;// return Fahrenheit
    }else if(req =="h"){
        return h;// return humidity
    }else if(req =="hif"){
        return hif;// return heat index in Fahrenheit
    }else if(req =="hic"){
        return hic;// return heat index in Cilsus
    }else if(req =="k"){
        return k;// return temprature in Kelvin
    }else{
        return 0.000;// if no reqest found, retun 0.000
    }
}
Click to Expand
0

Coding Logic

At the very beginning, we will let the sensor run for a second to calculate an average value as a baseline for further detection. Then the sensor will collect data when the user holds the lamp and get the average value and compare it with the baseline value which will determine how long the lamp will be turned on. When the lamp is going to be turned on, it will go lighter and lighter gradually. After a while, the lamp will go dimmer and remind users to hold it again if they still need light.

0
0

Reflection

1. Firstly, the final effect on the presentation is not so stable. Our wires fell off from the pin, and we spent some time debugging the issue by taking all parts apart, which is not professional. Looking further, in the future we should enhance the robustness of the project we want to present. Like we should use soldering to solder those parts together, and so on.

2. Secondly, we can actually create many home devices in parallel, if this project can be extended to a larger one. We can apply the same principle to heat, the TV, and so on. 

3. For the current stage,  the lamp will let people know when they have to hold the lamp to let it keep turning on. It might be a better choice to add a projector to the lamp which can print the sentences on the table or add a voice feature for the lamp.

4. How we should create our prototype highly depends on how we imagine people interact, the context, and the user scenario. The same "spirits in the lamp" in different scenarios would be totally different stories. 

0

Acknowledgments, Attributions and Credits

Thanks to the lamps in codelab, who allowed us to take their light bulb off and created prototypes directly on their bodies. Some are already discarded, but we thank them all. 

0

References 

  1. Pierce, J. (2019). Lamps, Curtains, Robots: 3 scenarios for the future of the smart home. In Proceedings of the 2019 on Creativity and Cognition (pp. 423-424).
  2. Privacy and Data Policies in Print https://jamesjpierce.com/Privacy-and-Data-Policies-in-Print
  3. Consumption by the United States https://public.wsu.edu/~mreed/380American%20Consumption.htm
  4. Happiest Countries in the World 2022 https://worldpopulationreview.com/country-rankings/happiest-countries-in-the-world
x
Share this Project

Courses

48-528 Responsive Mobile Environments

· 5 members

As part of this project-based course, we’ll get hands-on with emerging technologies, concepts and applications in the internet of things through a critical socio-technical lens. Over it’s 15-weeks,...more


Focused on
About

~