smileforme

Made by Nickie Cheung, Varun Gadh and gracielg

a physical representation of an often overlooked hostile human interaction

Created: February 19th, 2018

0
0

Intention

This project intends to spread awareness for the failure of the male hegemony to recognize their full influence in the female everyday routine. Spurred by an increasing awareness within contemporary communities that individuals are unaware of micro-agressions that ultimately help perpetuate a misogynistic social culture. Using the common male to female predatorial phrase, "Smile More", as inspiration for the project, we hope to raise awareness on the larger influence that seemingly harmless statements can cause. While the project remains abstract without sufficient knowledge, it intends to promote conversation between various individuals that interact with the object.Twitter users would direct message our family-friendly Twitter account about their individual experiences being catcalled. As a result, the object would "smile" in real life and create an intimate, and yet anonymous, indicator for the physical user.

0

Context

This project was aesthetically inspired by the Rolling Stones "Tongue" Logo and built upon previous knowledge that we gained from our earlier projects. 

0

Brainstorming Process

We started our conversation talking about our motivations for the project. What do we want to achieve? Do we want to address a problem? Raise awareness for a problem? Are we even trying to think about a problem, or is our intent focused on the aesthetic? To these questions, we had lengthy conversations over many hours, sketches, and iterations of designs. Using sketch, words, and discussion, we ultimately came upon our current working idea through a quick design activity called "5-3-1 Brainstorming!" where each member takes some time to produce a 5 different design ideas, trade with another participant, add 3 different design ideas, trade with a participant, and add 1 idea. This allowed us to quickly get our thoughts on paper and illicit reactions between each other. 

0

Design Process

Using Rhino modeling software, Solidworks, Python, and Particle, we created and tested various project solutions through graphic and digital modeling. Below is a series of digital models that we used to refine our geometry. We also used 3D modeling to simulate the rotating motion that was critical to our design.

0
0

The following is the code for the project. The Python code needs to be in the same folder as the Temboo SDK and the particle code. We first created a twitter account (Smile_more) and used Temboo to get the information off of Twitter. Once we got the data we parsed it to only show the direct messages in the inbox. We then sent that number to the cloud which was received by the particle photon and interpreted as an event. 

0
# Python Code 
# Need to download the Temboo SDK

import requests
import json
from temboo.Library.Twitter.DirectMessages import GetDirectMessages
from temboo.core.session import TembooSession
import sys
import time

while 1 == 1:

    # Create a session with your Temboo account details
    session = TembooSession("graci", "Smile_More", "7ebEYKEUR6fQOkzY2iIo4vCMtDz4XimV")

    # Instantiate the Choreo
    getDirectMessagesChoreo = GetDirectMessages(session)

    # Get an InputSet object for the Choreo
    getDirectMessagesInputs = getDirectMessagesChoreo.new_input_set()

    # Set the Choreo inputs
    getDirectMessagesInputs.set_ConsumerKey("mqhOEbt7YaouyBjrNoMrMBrBr")
    getDirectMessagesInputs.set_AccessToken("964289607532675072-qsnrH6w1Advrp1Tk8vN4ahPK5zTsPqq")
    getDirectMessagesInputs.set_ConsumerSecret("eXfFeIAc6IHy1R00xldDWDJpDZjdJKoYNxLq27E1mQ8y8mjjJm")
    getDirectMessagesInputs.set_AccessTokenSecret("cnlHD3qySKQNX2Q2O9xItaunV48IurIh4fub1gp57W8He")

    # Execute the Choreo
    getDirectMessagesResults = getDirectMessagesChoreo.execute_with_results(getDirectMessagesInputs)

    inbox = getDirectMessagesResults.get_Response()
    d = inbox.replace("false", "False")
    d = d.replace("true", "True")
    d = d.replace("null", "None")
    d = eval(d)

    num_dem = len(d)
    str(num_dem)

    # Send data to the cloud 
    requests.post('https://api.particle.io/v1/devices/events', data = {'name':'DirectMessages', 'data':str(num_dem), 'private':'true', 'ttl':60, 'access_token':'070f57a959b0b7155f81d88bf60f57122ed4dda6'})

    time.sleep( 10 )
Click to Expand
-1
// Particle Code

    //
    //∆∆∆∆     SERVO STUFF     ∆∆∆∆
    //

    int mouthClosed = 168;
    int mouthOpen = 129;
    int increment = 4;
    int newPos = mouthClosed + increment;
    int servoPin = D0;
    Servo myServo;
    int servoPos = mouthClosed;


    void setup() {
      Serial.begin(9600);

      myServo.attach( D0 );

      Particle.function("servo", servoControl);
      // Particle.function("message", handleDirectMessages)

      Particle.variable("servoPos" , &servoPos , INT );

      Particle.subscribe("DirectMessages", handleDirectMessages);
      const char * test;
      const char * t;
      handleDirectMessages(test, t);

      }

    void loop() {

    }

    void handleDirectMessages( const char * eventName, const char *data ){

      String dataStr = String( data );
      int directMessages = dataStr.toInt();

      Serial.println("new event published, sent");
      Serial.println(directMessages);
      Serial.println("hellyeah");
      incrementIt();
      for(int i = 0; i < 3; i++){
        digitalWrite(D7, HIGH);
        delay(100);
        digitalWrite(D7, LOW);
        delay(100);
      }
      //servoControl("fw");

    }

    int servoControl(String command)
    {
        //char data = 2;
        Serial.println(command);
        //handleDirectMessages("DirectMessages",  data );
       // Convert
         if(command.equals("fw"))
         {
           newPos = servoPos-increment;
         }
         else if(command.equals("bw"))
         {
           newPos = mouthClosed;
         }
         else{
            newPos = command.toInt();
         }
         servoPos = newPos;
         Serial.print("servoPos");


            // Make sure it is in the right range
      //servoPos = constrain( newPos, 0 , 180);

      // Set the servo
      myServo.write(servoPos);
    //Serial.println("wazzup" );
      Serial.print(newPos);
      Serial.print("    ");

      //BLINK IT
      //blinkLED(100, 100, 120);

      //blinkLED(230, 230);



       return 1;
    }

    int incrementIt()
    {
        if(servoPos-increment<=mouthOpen){
            servoControl("bw");
        }
        else{
            servoControl("fw");
        }
        return servoPos;
    }
Click to Expand
0

Product

The final product involves using a servo motor to rotate the lower lip and simulate a "smile". 

0

Reflection

If we were to redo the project, we would begin with a new design strategy that involves using a greater breadth of ideas rather than initially refining a concept. However, by beginning with the concept, we were able to quickly grow as a group and understand where our individual interests lie in the project. Further development on the project would include live data gathering from individuals that would allow us to create more dynamic interactions between the object and the physical experiencer.

x
Share this Project

Courses

49313 Designing for the Internet of Things (Undergrad)

· 22 members

A hands-on introductory course exploring the Internet of Things and connected product experiences.


About

a physical representation of an often overlooked hostile human interaction