Objects that notify
Made by MacKenzie Cherban
Made by MacKenzie Cherban
What if your objects remind you to remember them?
Created: February 1st, 2018
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?
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.
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.
// 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
// 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
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?
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/
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
What if your objects remind you to remember them?