Objects that notify

Made by MacKenzie Cherban

What if your objects remind you to remember them?

Created: February 1st, 2018

0

Proposal:

I forget things often. For some reason, I can recall with vivid detail, the time 4 friends shoved into a small Chevy Aveo and belted Bohemian Rhapsody at 1am, but I can’t remember the prototype in my bedroom before leaving the house. I wanted to address these doorway moments in my life. Our lives are busy, to compensate we have become experts in multitasking. But that takes a toll on our brains capacity to remember. I wanted to look into the space of what happens when our rooms/objects/places remember for us? 

0

Precedents:

I was inspired by several projects shared in class, as they had raised some question and propelled this idea further. Projects that address the "string on the finger" or helping you become more aware of your own process, such as Issac Bertran's Memory Device and Sebastian Ronde Theilke and Anders Hojmose Daily Stacks, were of particular interest to me. The tangibility and the proximity to a work computer and simplicity of use was what inspired me most. 

I also researched the doorway effect as well as the effects of multitasking on the memory. I did this to help me better understand why doorway effects happen as well as why my own short term memory might be so bad. 

0

Process:

I began with a much wider scope…however after talking with Daragh and Wei Wei, they encouraged me to start making and not be too afraid of the whimsical. While this project is not as “whimsical” as I might like, I felt that connecting these multiple components through the cloud left for a pretty magical aspect. Especially when you enter into a desired location and these boxes begin to light up. 

I went about this new idea by examining how, at the moment of remembering, I can send the location/object I think of a message to nudge me later. Spending the most time at school, I decided to make a desktop device that could signal the locations I want with reminders. I used Particle + RFID + IFTTT to build and create connections.

0

RFID Reader Code:

0
// This #include statement was automatically added by the Particle IDE.
#include <MFRC522.h> // Library for the RFID reader

#define SS_PIN SS // pins for RFID
#define RST_PIN D2 // pins for RFID

MFRC522 myRFID(SS_PIN, RST_PIN);	// Create MFRC522 instance.

String id = "";

String data_sent = "";

void setup() {
	// Initialize serial communications with the computer
	Serial.begin(9600);	
	myRFID.setSPIConfig(); // sets up SPI config

	myRFID.PCD_Init();	// Initialize RC522 card
	Serial.println("Start Scanning");
}

void loop() {

	// Look for new cards
    if ( ! myRFID.PICC_IsNewCardPresent()) { 
        return; 
    }
// Read tapped card data
    if ( ! myRFID.PICC_ReadCardSerial()) { 
        return; 
    }
    for (byte i = 0; i < myRFID.uid.size; i++) {
        // Create a RFID Hexdecimal String by adding and converting the binary
        id += String(myRFID.uid.uidByte[i], HEX);
    }
    id.toUpperCase(); // Convert to Uppercase
    // Print the RFID identifier to the Serial Port
    Serial.print(id);
    // If it is this card,
    if (id == "AB6E3E7E") { //call mom!
    data_sent = "soonish";
    Particle.publish("call_mom", data_sent, PRIVATE);
    }
    
    if (id == "BFC3D7E") { //remember something at home! 
    data_sent = "remember_me";
    Particle.publish("at_home", data_sent, PRIVATE);
    }
    
    if (id == "5BF43E7E") { //draft and email! 
    data_sent = "send_mail";
    Particle.publish("email_at_work", data_sent, PRIVATE);
    }
    
    
    // Reset Id
    id = "";
    Serial.println();
    // Stop the reading after one tap
    myRFID.PICC_HaltA();
    /* Used to exit the PCD from its authenticated state. Remember to call this function after
    communicating with an authenticated PICC - otherwise no new communications can
    start .*/
    myRFID.PCD_StopCrypto1();
	
	
}
Click to Expand
0

Light Box Code:

0
// This #include statement was automatically added by the Particle IDE.
#include <neopixel.h> // Neopixel Library

#define PIXEL_PIN D5
#define PIXEL_COUNT 1
#define PIXEL_TYPE WS2812B

int i=0;

bool event1 ; // home chip
bool event2 ; // work chip
bool event3 ; // home location
bool event4 ; // work 

String dataIn;

int caseState;

const bool isInterrupt = true;


Adafruit_NeoPixel pixels = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE);

void setup() {
    Serial.begin(9600);
    
    Particle.subscribe("at_home", atHome, MY_DEVICES);
    Particle.subscribe("call_mom", callMom, MY_DEVICES);
    Particle.subscribe("email_at_work", atWork, MY_DEVICES);
    Particle.subscribe("kenz_location", fakeLocation, MY_DEVICES);
    // Particle.subscribe("location_work", myHandle4, MY_DEVICES);
    
    pixels.begin();

}

void loop() {
    
    switch (caseState) {
        case 0: 
            pixelOff();
            break;
        case 1: // Work Location
            pixelWork();
            
            if (event2 == true){
                pixelEmail();
            }
            
            break;
        case 2: // Home Location
            pixelHome();
            
            if (event1 == true){
                pixelNotebook();
            }
            if (event3 == true){
                pixelMom();
            }
            
            break;
        default:
            pixelOff();
            break;
    }

/*
    if (( event1 == true) && (event3 == true)){
        pixelHome();
    } else if (( event2 == true) && (event4 == true)){
        pixelWork();
    } else {
        pixelOff();
    }
*/

}

void atHome(const char *event, const char *data){ // listening for at home reminder
    if(strcmp(data, "remember_me")==0){
        event1 = true;
    } else {
        event1 = false;
    }
}

void atWork(const char *event, const char *data){ // listenging for at work to send email 
  if(strcmp(data, "send_mail")==0){
        event2 = true;
        
    } else{
        event2 = false;
    }
  
}

void callMom(const char *event, const char *data){ // listenging for at work to send email 
  if(strcmp(data, "soonish")==0){
        event3 = true;
        
    } else{
        event3 = false;
    }
  
}


void fakeLocation(const char *event, const char *data){ // listening for fake location data HOME
    
    dataIn = data;
    dataIn.toLowerCase();
    
//-----DEBUGGING-----
    // Serial.print(data);
    // Serial.print(", ");
    // Serial.println(dataIn);
    
    if(dataIn == "work"){
       
       caseState = 1;
        
    } else if(dataIn == "home"){
       caseState = 2;
        
    } else if(dataIn == "clear"){
        caseState = 0; 
    }
  
}

void pixelGreen(){
    pixels.setPixelColor(0, pixels.Color(255, 0, 0)); //(GREEN, RED, BLUE)
    pixels.show();
}

void pixelOff(){
    pixels.setPixelColor(0, pixels.Color(0, 0, 0)); //(GREEN, RED, BLUE)
    pixels.show();
}

void pixelHome(){
  pixels.setPixelColor(0, pixels.Color(255,0,165));
  pixels.show(); // This sends the updated pixel color to the hardware.
  delay(500);
  pixels.setPixelColor(0, pixels.Color(0, 0, 0));
  pixels.show(); // This sends the updated pixel color to the hardware.
  delay(500); 

}

void pixelWork(){
  pixels.setPixelColor(0, pixels.Color(0, 255, 106));
  pixels.show(); // This sends the updated pixel color to the hardware.
  delay(500);
  pixels.setPixelColor(0, pixels.Color(0, 0, 0));
  pixels.show(); // This sends the updated pixel color to the hardware.
  delay(500); 

}

void pixelMom(){
    pixels.setPixelColor(0, pixels.Color(0,168,206)); //(GREEN, RED, BLUE)
    pixels.show();
    delay(1000);
    pixels.setPixelColor(0, pixels.Color(0, 0, 0));
    pixels.show(); // This sends the updated pixel color to the hardware.
    delay(500); 
}

void pixelNotebook(){
    pixels.setPixelColor(0, pixels.Color(255,0,40)); //(GREEN, RED, BLUE)
    pixels.show();
    delay(1000);
    pixels.setPixelColor(0, pixels.Color(0, 0, 0));
    pixels.show(); // This sends the updated pixel color to the hardware.
    delay(500); 
}

void pixelEmail(){
    pixels.setPixelColor(0, pixels.Color(0,255,40)); //(GREEN, RED, BLUE)
    pixels.show();
    delay(1000);
    pixels.setPixelColor(0, pixels.Color(0, 0, 0));
    pixels.show(); // This sends the updated pixel color to the hardware.
    delay(500); 
}
Click to Expand
0

IFTTT Applets:

0

Reflection:

I feel like I could have pushed myself to come up with a less literally approach to my short term memory. However, this was a bit of an exercise for me to think about what type of customized system do I need for myself. Knowing that sometimes a one size fits all system doesn’t work for everyone, I wanted to explore a project that would allow me to deep dive into my own thought process and remembrance process for better understanding overall. If I could wrap my head around the way I remember, perhaps in future projects I could begin to better understand the pain points or opportunities of others. 

Some questions that still remain for me are...what if these become just another thing collecting dust, never to be used, no habit to be built? An interesting question, which I had thought about, but was reiterated in the feedback was...do you need to continue to make new chips the more tasks you think to remember? I'm not sure, right now. these are some of the main things that I need explicitly spelled out for myself. However, the biggest burning question that remains is that while I used a lot various touch points and IFTTT applets–basically multitasking the workflow–I came out of this wondering am I perpetuating my own short term memory loss?

-1

REFERENCES:

Clark, Josh. 2010. How Does Multitasking Affect Memory? https://www.huffingtonpost.com/josh-clark/multitasking-how-does-mul_b_552673.html

Henry, Alan. 2014. Productivity 101: A primer to the Pomodor Technique. https://lifehacker.com/productivity-101-a-primer-to-the-pomodoro-technique-1598992730

Bertran, Ishac. 2015. The Memory Device. http://ishback.com/memory/index.html

Theilke, Sebastian and Anders Hojmose. 2009. Daily Stack. http://ciid.dk/education/portfolio/idp09/courses/tangible-user-interface/projects/daily-stack/

x
Share this Project

Courses

48-528 Responsive Mobile Environments

· 12 members

The theme for 2018 will be the exploration of human memory and how digital and connected technology can support, augment, enhance, effect and alter the ways in which we remember, recount and reflec...more


About

What if your objects remind you to remember them?