Project 2: Hybrid Interaction

Our second project was to create an Arduino-controlled physical interactive construction that explores hybrid possibilities and engages the audience in critical design.

‘Critical Design’ refers to “…designed objects that not only function but exist to be thought provoking as well, making users think in critical ways that are usually associated with art rather than design.”

– Programming Interactivity, Joshua Noble (16)

Thinking of critical design, I immediately thought of today’s society and how we currently live in this day and age. As mentionned in previous discussions and readings, our lives are endlessly being infiltrated by modern technology and it’s become so integral to our lives that I feel justified in saying that we have become “attached to the hip”— a statement similar to McLuhan claiming that media have become extensions of ourselves. Which I very much agree with. Technology has not only become a part of our identities–a part of who we are–but it’s become a part of how we are and how we function as well.

With this project, I wanted to create an environment that presents just how dependent we are on technology–even with the simplest tasks–and that exudes the qualities of modernity… leading me to the invention of ModerniTea.

Logo

The idea behind ModerniTea was to be a device that assists you in brewing your tea in which I wanted to raise the question of how we have become so reliant on technology that we can’t even make a cup of tea by ourselves. If you think about it, even without this device, we really can’t make tea without technology: what will heat up the water? what will keep track of time? No modern person is going to make a fire from sticks and stones or use an hourglass for a darn cup of tea.. But, this device puts forth this issue and exaggerates this dependency. Originally, I wanted it to not only demand physical interaction with the device, but I had intended the process to be facilitated by social media, specifically the ever-pervasive Twitter. Having found on the web Arduino projects that can send tweets to users, I wanted to have my contraption tweet to the participant, sending them notifications of what steps to follow and to alert them at what stage they are at. I wanted to invite people to reflect on how much we count on technology and to put forth the idea that we rely so heavily on technology that we have to have it directly address us to get us to perform actions— and they have to address via means that we are quite literally attached to: the screen that shows us our Twitter account. Here was my initial plan:

ProjectPlan1 ProjectPlan2

As you can see, the three input sensors that I wanted to use were pressure, temperature and light while the outputs were going to be the actions of turning the kettle on, tweeting when the water was ready, starting the timer and tweeting when the tea was done steeping. However, this was all before I realized that implementing Twitter into my project would require an Ethernet Shield which would cost me 100 dollars… So, unfortunately, I abandoned the idea of Twitter.

However, I really wanted this project to solicit this idea of being indisposed to media and technology. So instead, keeping to the heart of this endeavour, I decided I could still show our reliance through the display of screens— a physical object that contains what we rely on. We are glued to screens by necessity. So, instead of Twitter, for economy’s sake, I opted for an LCD screen that would do the same thing as a Tweet, the screen would talk to you and tell you what’s going on/what to do. A digital guide catered to the modern person. 

The Initial Circuit:
InitialWiring

Initial Sketch:

#include<LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
#include<CapacitiveSensor.h>
CapacitiveSensor capSensor = CapacitiveSensor(6,7);
//variables for the photoresistor
int sensorValue; //final sensor value to start the timer
int sensorLow = 1023; //the sensors lowest values
int sensorHigh = 0; //the sensors highest vaule
const int LED_PIN = 13;
//variables for the tempurature sensor
const int tempSensPin = A1;
const float baselineTemp = 20.0; // this is value you need to change to figure out the mug temperature
int testPin = 4;
//variables for the LCD
const int lcdSwitchPin = 6; 
int lcdSwitchState = 0;
int lcdPrevSwitchState = 0;
int reply =1;
//variables for the capacitive sensor
int threshold = 1000;
void setup()
{
 Serial.begin(9600);

 pinMode(LED_PIN, OUTPUT); //declare that the pin will be sending an output
 digitalWrite(LED_PIN, HIGH); //turn the pin holding the photoresistor to high

 while(millis() > 1000) //this loop will be on five seconds and read the sensor values; after it reads, it will write the value and send it to sensorValue
 { //change the time to make it faster or slower (probably faster for the project
 sensorValue = analogRead(A0);
 if(sensorValue > sensorHigh)
 {
 sensorHigh = sensorValue;
 }
 if(sensorValue < sensorLow)
 {
 sensorLow = sensorValue;
 }
 }

 digitalWrite(LED_PIN, LOW); //write the end value to the pin

 pinMode(testPin, LOW);
 digitalWrite(testPin, LOW); 

 //for the LCD
 lcd.begin(16,2);
 pinMode(lcdSwitchPin,INPUT);
 //lcd.print("TeaMaker2000");
 //lcd.setCursor(0,1);
 //lcd.print("Copyright Czarina");

 //capacitive sensor

} 
void loop()
{
 sensorValue = analogRead(A0);
 //Here is where we will add the function for the if sensorLOW, start timer 
 Serial.print("The photosensor: ");
 Serial.print(sensorValue);
 //To test with the peizo if the if the sensor is working
 //int pitch = map(sensorValue, sensorLow, sensorHigh, 50,4000);
 //tone (8,pitch,20);
 //delay(10); 

 //for the tempurature sensor
 int tempSensVal = analogRead(tempSensPin);

 Serial.print("Sensor Value: ");
 Serial.print(tempSensPin);
//convert the ADC reading to volatage 
 float tempVoltage = (tempSensVal/1024.0) * 5.0;
 Serial.print(", Volts: ");
 Serial.print(tempVoltage);
 Serial.print(", degrees C: ");
 float temperature = (tempVoltage - .5) * 100;
 Serial.println(temperature);
//turn on the LED for testing
 //if(temperature < baselineTemp)
 //{
 // digitalWrite(4, HIGH);
 // }

 //for the lcd
 lcdSwitchState = digitalRead(lcdSwitchPin);

 //if(capacitiveSensor)
 //{
 //lcd.print("Welcome to SuperTea");
 //}
 // if(capacitiveSensor && temperature)
 //{
 // lcd.print("Water is ready...");
 //lcd.setCursor(0,1);
 //lcd.print("Commence steeping!");
 //}
 //if(capacitiveSensor && temperature && photoresistor)
 //{
 //lcd.print("You have 6 minutes");
 //lcd.setCursor(0,1);
 // lcd.print("until heavenly bliss.");
 //}

 //capacitive sensor
 long capSensValue = capSensor.capacitiveSensor(30);
 Serial.println(capSensValue);

 if(capSensValue > threshold)
 {
 lcd.clear();
 lcd.print("Welcome to");
 lcd.setCursor(0,1);
 lcd.print("ModerniTea");

 if(temperature < baselineTemp)
 {
 lcd.clear();
 lcd.print("Water is ready...");
 lcd.setCursor(0,1);
 lcd.print("Commence the steep!");

 if(sensorValue < 500)
 {
 lcd.clear();
 lcd.print("You have 6min");
 lcd.setCursor(0,1);
 lcd.print("until tea bliss");
 }
 }
 }
 else
 {
 lcd.clear();
 lcd.print("ModerniTea");
 lcd.setCursor(0,1);
 lcd.print("CR Czarina");

 delay(10);
 }

}

Speaking to modernity, I wanted to take this one step further and emphasize this idea by also suggesting that modernity has not only made technology an embedded part of our lives, but that modernity calls for our attention in infinite ways and that it has rendered us so distracted and caught up in all of the different technologies that we need to be alerted by various sources in order to capture our attention. So, to physically represent this, I modified my contraption to not only have the screen very straightforwardly talking/instructing you, but having a light and audio source blatantly calling your attention as well. Three simultaneous outputs. It is only with all three of these calls that our attention is acquired and the task can be performed at hand— an exaggeration but one that gets my point across. Furthermore, it goes to show how technology can impact our senses as well with vision and aural in this case.

 Revised Circuit:

NewWiring

So, here is a breakdown of the stages of the revised contraption:

1) Hold the mug on the pressure sensor.

2) Add boiling water into mug. When the water is at the right temperature, the LED lamp will light up, the Piezo will ring and the LCD screen will inform you that the water is ready and that you should have your teabag ready to insert by holding it in front of the sensor.

3) When the photoresistor detects that the tea bag is ready to be dropped, the lamp and Piezo will alert you and prompt you to place it in the cup. This starts a timer and tells you that you have 6 minutes to steep the tea.

4) When 6 minutes have passed, the lamp and Piezo will call you again, letting you know that your tea is ready!

Revised Circuit:

NewWiring

Revised Sketch:

#include<LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
#include<CapacitiveSensor.h>
CapacitiveSensor capSensor = CapacitiveSensor(6,7);
//variables for the photoresistor
int sensorValue; //final sensor value to start the timer
int sensorLow = 1023; //the sensors lowest values
int sensorHigh = 0; //the sensors highest vaule
const int LED_PIN = 13;
//variables for the tempurature sensor
const int tempSensPin = A1;
const float baselineTemp = 80.0; // this is value you need to change according to the temperature you need the water to be at for your specific tea
int testPin = 4;
//variables for the LCD
const int lcdSwitchPin = 6; 
int lcdSwitchState = 0;
int lcdPrevSwitchState = 0;
int reply =1;
//variable for the LED turning on and off
 const int notificationLED = 13;
//variable for the peizo
//variables for the capacitive sensor
int threshold = 500;
//runonce variable
int runOnce = 0;
int X = 1;
//timer variable
unsigned long timer = 360000;
void setup()
{
 Serial.begin(9600);
 //for the photoresistor
 pinMode(LED_PIN, OUTPUT); //declare that the pin will be sending an output
 digitalWrite(LED_PIN, HIGH); //turn the pin holding the photoresistor to high
 //for the LED notification peizeo connected to 9
 pinMode(notificationLED,OUTPUT);
 off();

 while(millis() > 1000) //this loop will be on five seconds and read the sensor values; after it reads, it will write the value and send it to sensorValue
 { //change the time to make it faster or slower (probably faster for the project
 sensorValue = analogRead(A0);
 if(sensorValue > sensorHigh)
 {
 sensorHigh = sensorValue;
 }
 if(sensorValue < sensorLow)
 {
 sensorLow = sensorValue;
 }
 }

 digitalWrite(LED_PIN, LOW); //write the end value to the pin

 pinMode(testPin, LOW);
 digitalWrite(testPin, LOW); 

 //for the LCD
 lcd.begin(16,2);
 pinMode(lcdSwitchPin,INPUT);

} 
void loop()
{
 sensorValue = analogRead(A0);
 //Here is where we will add the function for the if sensorLOW, start timer 
 Serial.print("The photosensor: ");
 Serial.print(sensorValue);

 //for the tempurature sensor
 int tempSensVal = analogRead(tempSensPin);

 Serial.print("Sensor Value: ");
 Serial.print(tempSensPin);
//convert the ADC reading to volatage 
 float tempVoltage = (tempSensVal/1024.0) * 5.0;
 Serial.print(", Volts: ");
 Serial.print(tempVoltage);
 Serial.print(", degrees C: ");
 float temperature = (tempVoltage - .5) * 100;
 Serial.println(temperature);

 //for the lcd
 lcdSwitchState = digitalRead(lcdSwitchPin);

 //capacitive sensor
 long capSensValue = capSensor.capacitiveSensor(30);
 Serial.println(capSensValue);

 if(capSensValue > threshold)
 {
 lcd.clear();
 lcd.print("Place water");
 lcd.setCursor(0,1);
 lcd.print("in cup.");
 on();
 tone(9,262,500);
 delay(2000); //these are the delays that you fool with if you want to mess with the timing
 off();
 delay(1000);

 if(temperature > baselineTemp)
 {

 lcd.clear();
 lcd.print("Place teabag in");
 lcd.setCursor(0,1);
 lcd.print("front of sensor...");
 on();
 tone(9,330,500);
 delay(2000); //these are the delays that you fool with if you want to mess with the timing
 off();
 delay(1000);

 if(sensorValue < 900) // adjust this value depending on the light of the setting
 { 
 lcd.clear();
 lcd.print("Insert teabag. 6");
 lcd.setCursor(0,1);
 lcd.print("mins to steep!");
 on();
 tone(9,394,500);
 delay(5000); 
 off();
 delay(360000); 
 on();
 tone(9,394,500);
 delay(5000); 
 off(); 
 }
 }
 }
 else
 {
 lcd.clear();
 lcd.print("ModerniTea");
 lcd.setCursor(0,1);
 lcd.print("CR Czarina");

 delay(10);
 }
 }
void on()
{
 digitalWrite(notificationLED, HIGH);
}
void off()
{
 digitalWrite(notificationLED,LOW);
}

 

Now, for my Arduino project to be functional and for ease of user interaction, I needed to sodder the parts in order for them to extend from the breadboard. I had never soddered before so this would prove to be a challenge but luckily, I have a friend who has a soddering gun and was able to help me out!

SodderingGun

Here’s how everything looked after extending the wires and soddering things together:

SodderedWiring SodderedWiring2

A huge mess, right? Well, that’s exactly how I intended it to be anyways. Building on my theme of modernity, I felt like the tangled chaos of the wires exudes what modernity is all about–connected to so much and trying to do so much. However, it doesn’t appear as such on the outside, so what I wanted to do was to house this mess in a sleek, contemporary-looking design.

Construction of the Housing Unit:

Housing

However, building the housing unit proved to be much more difficult and painful than I had anticipated, having to work around the wires. After construction, I actually had messed up my circuit somewhere and it took hours and hours of not only building, but trying to repair the damage.. In the end, I actually had to rewire everything. If I had to do it over again, I would have planned the wiring of the circuits and the construction of the box ahead of time to save me the headache of trying to maneuver around things as I went… Also, I wanted the wires to aesthetically represent a mess but it probably would have been wiser from the beginning to keep my circuits and wires as neat, legibly accessible and maneuverable as possible. When I redid my wiring I tried to do this but when I had started, I didn’t keep that in mind and everything was such a huge mess and incredibly fragile–the slightest touch would remove wires and components and then I’d have to backtrack to fix all the issues… Lesson learned, I now have a much more stable and somewhat organized breadboard.

FinalWiring

 

Here is the construction coming together..
Construction

…and after countless hours of hard work, tears and sweat, here is the final product!

modernitea

STAGE 1: Hold the mug on the pressure sensor.

stage1

STAGE 2: Add boiling water into mug.

stage2

STAGE 3: Hold teabag in front of light sensor.

teabag

STAGE 4: Drop the teabag into the water. Now wait six minutes for tea bliss!

stage3

STAGE 5Once the timer reaches six minutes, the Piezo will ring and the LED will light up to let you know that your tea is done steeping and you’re ready for a modern cup of tea!

Fritzing Wiring Circuit Diagrams

Sketch_bb

Sketch_schem

The Project of Perpetual Problems

This project has literally been endless problem after problem after problem, resulting in a lot of mental breakdowns and recurring tears being shed. (Seriously.) I’m not even sure if I can list down all of the obstacles that I’ve had to face because there was always something going wrong.  Everything has malfunctioned or given me difficulty at one point. First off, the code was a huge struggle to make it work. Especially since so many of my outputs and the events to take place rely on a combination of different inputs. With that said, this struggle carried on throughout the actual building, wiring and execution of the contraption. I would say that making events depend on not only several different inputs– but very specific parameters (specific temperature, specific light levels) was my biggest mistake. Although it is very sophisitcated, it makes everything hugely complicated for a number of reasons.

1) If one parameter isn’t working, then the action won’t take place. Also, if one parameter doesn’t work, then I have to investigate ALL OF THEM to find out which one is malfunctioning. Hence, very time consuming and frustrating.

2) I have to always adjust the parameters depending on the environment I am in. Depending on the lighting and the temperature of the setting, I have to change the values in the code to ensure the action will take place. And I have found out that lighting and temperature values can be very finnicky. Below you can see that even just having a wire touch another can throw off the temperature values.. I know the NMED labs can get hot sometimes but I don’t think they get up to 300 degrees…

Temperature

In the end, it is such a hassle to meet all the right conditions when the nature of these components are so fragile and even a slight physical bump that causes a wire to touch another or a component to loosen off the breadboard can ruin the entire project. Countless times have my problems arisen from just the simplest tweaks and movements.

Another huge issue that I had was initating the capacitive pressure sensor. My initial plan of placing tin foil underneath the mug did not work as it wasn’t conductive enough. After that, I proceeded to ground another wire to negative and adding wire underneath the mug, but that still did not initiate the sensor.

mug

I tried different types of metals such as coins and knives but nothing that could work with my mug. In the end, a metal Contigo thermos proved to be the only thing conductive enough so now this device can only use that. But what I found most interesting was that the user has to touch the mug to initiate the next step– which is something that I actually like because it reinforces the fact that a human is required in this whole task. Therefore, I actually like this change, enhancing the conceptual idea behind my project. This alteration has also affected the structure of my device and now instead of having the photo sensor attached to the box, I have attached it to the thermos itself. If this were a real life practical device, I would have it detachable or build something to hold the sensor but for the sake of this project and economy, I just have it removable by tape.

Because of so many complications and setbacks, this is not the most practical contraption but given more time and skills, I would have it constructed more durably/accessible, design the housing unit to facilitate wiring changes in a much easier manner and have more LED screen instructions.. These are just to name a few of the major modifications I would have liked.

After everything, I think that I was overambitious with this project and I made things much too complicated for myself to handle with too many parameters and conditions to look after. If I could do this over again, I would simplify EVERYTHING so much more. Ironically enough, I think that even just the experience of making this project exudes the underlying theme behind it: the complications of modernity. While I meant to bring forward the issue of dependency, my project ironically and rather unintentionally embodies the problems of having too many things depending on one another.

In conclusion, I do think that my project does successfully use some of the possibilities of hybrid interaction/physical computing to its advantage, combining the physical interaction of the user with the device with the electronic components all intricately relying on one another. The functioning of the contraption relies on so many things, including the user, but the user also relies on the contraption. Not only is the user  literally prompted by the device to take action but they are also prompted to think about their relationship to the device and technology as a whole.

 

Leave a Reply