As computing becomes more ubiquitous in our objects, designers need to be more aware of how to design meaningful interactions into electronically enhanced objects. At the University of Washington, a class of junior Interaction Design majors is exploring this question. These pages chronicle their efforts.

Tuesday, June 10, 2014

Jen + Emma | Laptop cover | Failures!!!! (problems with soldering)

We had a lot of trouble soldering wires together. Neither of us had every worked with electronics or circuitry before, so it was very difficult getting certain wires and pins to stick together, presumably because of the materials we chose. When we put the circuitry in the encasing, the pin that connected from the Arduino to the breadboard with the button would continuously break off and need to be soldered again because of the small connection surface area. I think that the reason we had trouble was because we had wires that were too thick and needed to be wrapped around the pin rather than being soldered straight on. The solution to this could be shrinking tape to secure the pin and wires, but I didn't know that this existed...until today. My soldering is just a giant big mess!!!!







Jered and Ciera | Tweety Clock | Prototype

After brainstorming, we decided that we wanted to combine aspects of social media, the idea of taking a "picture-a-day", and incentivizing getting out of bed on time in the morning. Our final concept is an alarm clock that takes a picture of you in the morning when your alarm goes off, and then uploads the photo to Twitter.

Because of the complexity of taking pictures and uploading them to Twitter, we decided to ditch the Arduino Uno in favor of the Raspberry Pi. The RPi provides many of the same hardware control and programming capabilities as the Arduino, with the added benefits of running Linux and connecting to USB devices and the internet very easily.

Once we had our idea, we worked out how to accomplish it. It was clear that we had a few mandatory components needed to get it to work:

1. Alarm clock (cheap, pre-existing model without a radio)
2. Raspberry Pi (to control the whole system)
3. USB Webcam (to take the pictures)
4. Light source (to illuminate the dark room when the picture is taken)

For the alarm clock we went to the thrift store Value Village in Capitol Hill and found a basic used $3 clock made by Sharp.

From previous projects I already had a Raspberry Pi and USB webcam, so we reused those components. For the light source we used a $4 LED lamp from IKEA that runs on two AAA batteries.

The prototype assembled with clock, webcam, light source, and RPi
Programming the Raspberry Pi was relatively easy thanks to online tutorials. For controlling the webcam and uploading to Twitter we decided to use Python because it is a powerful scripting language with lots of online support. One online tutorial in particular was perfect for our needs - it had code for taking webcam pictures and then uploading them to Twitter, allowing us to copy it virtually line-by-line for our project. It can be found here: http://www.makeuseof.com/tag/how-to-build-a-raspberry-pi-twitter-bot/

With our prototype assembled and programmed, I tried it out for a few nights, and it worked perfectly! Check out the Twitter feed with actual morning pics here: https://twitter.com/tweetyclock

Creating our Coin Counter: The Wood Shop and Painting. Constance Wellman and Haley Knox

We began the construction of our coin counter box by purchasing a plastic tupperware container from Storables. We then cut four perfect rectangles in the top by first drawing a diagram of the dimensions of the box, drawing this layout on the box and then cutting them out of the plastic box with the Vertical Speed Bandsaw in the Wood Shop. After we sanded the four rectangular cut outs on the top of the box we sanded the whole box with 600 grain sandpaper. Next we spray painted the box with white paint giving our box a very clean finish. Through this experience we learned how to construct and build a physical object, which allowed us to have creative control over the entire project. A picture of the rectangular cut outs is posted below.



 

Trip to Metrix: Making the Photo Resistors Work. Constance Wellman

For our project we used 4 Photo Resistors to count each coin that was dropped into our box, and add the correct amount, by sensing the amount of light that passed through them. In implementing these sensors into our project, we ran into a few problems that we were able to be assisted with at Metrics. At Metrics we learned that although our code was correct, we had placed the Photo Resistors in the breadboard so that the polarization of the pins were incorrect. Below we have posted a photo of how the sensors should be properly placed as well as the correct code to create the count that we desired.


#include <Adafruit_NeoPixel.h>
#define PIN 6
int val1;
int val2;
int val3;
int val4;
int setPoint1 = 100;
int setPoint2 = 100;
int setPoint3 = 100;
int setPoint4 = 100;
//int A = 100;
//int B = 300;
boolean countcheck1 = false;
boolean countcheck2 = false;
boolean countcheck3 = false;
boolean countcheck4 = false;
int count = 0;
int changes = 0;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(8, 2, NEO_GRB + NEO_KHZ800);

void setup()
{
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(A3, INPUT);
  pinMode(A4, INPUT);
  pinMode(A5, INPUT);
  pinMode(A2, INPUT);
  Serial.begin(9600);
  digitalWrite(13, HIGH);
  digitalWrite(12, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(10, HIGH);
  
  strip.begin();
  strip.show();
//  stripone.begin();
//  stripone.show();
}

void loop() {
val1 = analogRead(A3);    // Read the analogue input value
//Serial.print("1ai");
//Serial.println(aiValue1);
//Serial.print("slot1count");
//Serial.println(slot1count);

if (val1 < setPoint1 && countcheck1 == false) 
{  count = count + 5;
    Serial.println("count1");
    countcheck1 = true;
  }
  
      
if (val1 > setPoint1)
{ countcheck1 = false;
}

val2 = analogRead(A4);    // Read the analogue input value
//Serial.print("2ai");
//Serial.println(aiValue2);
//Serial.print("slot2count");
//Serial.println(slot2count);

if (val2 < setPoint2 && countcheck2 == false) 
{  count = count + 10;
Serial.println("count2");
    countcheck2 = true; 
  }
  
  
if (val2 > setPoint2)
{ countcheck2 = false;
}   

val3 = analogRead(A5);    // Read the analogue input value
//Serial.print("1ai");
//Serial.println(aiValue1);
//Serial.print("slot1count");
//Serial.println(slot1count);

if (val3 < setPoint3 && countcheck3 == false) 
{  count = count + 25;
    Serial.println("count3");
    countcheck3 = true;
  }
  
if (val3 > setPoint3)
{ countcheck3 = false;
}   

val4 = analogRead(A2);    // Read the analogue input value  

if (val4 < setPoint4 && countcheck4 == false) 
{  count = count + 1;
    Serial.println("count4");
    countcheck4 = true;
  }
  
      
if (val4 > setPoint4)
{ countcheck4 = false;
}






Making the Neo Pixel Lights Work. Constance Wellman and Haley Knox

As we continued to proceed in creating our coin counter, the final stage of our building process was getting the LED lights to work. Originally we started out with five sets of Neo Pixel lights, but in the end we realized that we only need one strand to get the same effect using the least amount of power. In working with the Arduino and altering our code we first ran into the issue of creating a new code that made the lights go dark after they light up for a few seconds. The next was getting them to flash in the patterns that we wanted. After experimenting with different variations of our code we found great advice at the Adafruit Neo Pixel Library linked below. Code is posted bellow.

https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library




CODE: 
      
if (val4 > setPoint4)
{ countcheck4 = false;
}

if (count > 100)
{ strip.begin();
  strip.show();
  if (changes == 0) {
   colorWipe(strip.Color(255, 0, 0), 50); // Red
  colorWipe(strip.Color(0, 255, 0), 50); // Green
  colorWipe(strip.Color(0, 0, 255), 50); // Blue 
  colorWipe(strip.Color(0, 0, 0), 50); // Nothing  
  strip.show();  
  changes = 1;
  }
}


if (count > 300)
{ strip.begin();
  strip.show();
  if (changes == 1) {
  colorWipe(strip.Color(255, 0, 0), 50); // Red
  colorWipe(strip.Color(0, 255, 0), 50); // Green
  colorWipe(strip.Color(0, 0, 255), 50); // Blue 
  colorWipe(strip.Color(255, 0, 0), 50); // Red
  colorWipe(strip.Color(0, 255, 0), 50); // Green
  colorWipe(strip.Color(0, 0, 255), 50); // Blue 
  colorWipe(strip.Color(0, 0, 0), 0); // Nothing  

  strip.show();
  changes = 2;
  }
}

if (count > 500)
{ strip.begin();
  strip.show();
  if (changes == 2) {
  colorWipe(strip.Color(255, 0, 0), 50); // Red
  colorWipe(strip.Color(0, 255, 0), 50); // Green
  colorWipe(strip.Color(0, 0, 255), 50); // Blue 
  colorWipe(strip.Color(255, 0, 0), 50); // Red
  colorWipe(strip.Color(0, 255, 0), 50); // Green
  colorWipe(strip.Color(0, 0, 255), 50); // Blue 
  colorWipe(strip.Color(255, 0, 0), 50); // Red
  colorWipe(strip.Color(0, 255, 0), 50); // Green
  colorWipe(strip.Color(0, 0, 255), 50); // Blue 
  colorWipe(strip.Color(255, 0, 0), 50); // Red
  colorWipe(strip.Color(0, 255, 0), 50); // Green
  colorWipe(strip.Color(0, 0, 255), 50); // Blue 
  colorWipe(strip.Color(0, 0, 0), 0); // Nothing  
  strip.show();
  changes = 3;
  }
}

}

void colorWipe(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, c);
      strip.show();
      delay(wait);
  }

}

Concept. Constance Wellman and Haley Knox

For this project both Haley and I focused on an educational product for children. As we began to brainstorm we moved toward thinking about how we could create a product that encouraged children to begin making goals to save money at a young age. We were inspired by the linked product from an interaction designer at IDEO who created a piggy bank that needs to be sustained by money, mimicking a pet relationship. This allowed users to feel responsible for depositing and saving money. This inspired us to create a coin counter for children that would allow them to set saving goals and be motivated by a small light show each time the user reached 1, 3 and 5 dollars.






http://zenona.com/work/piggy-bank/

Knolling Constance Wellman and Haley Knox





We chose to take apart the Bop It, which we found at Value Village in Fremont. As we took apart the Bop It we thought it was interesting how intuitively the parts were designed to fit together. One aspect that was surprising to us in the beginning was that the speaker was much smaller than expected. As we created the circuit map we made sure to make clear distinctions between all of the various sensors that coordinated with the Bop Its interactive functions such as the slide, pull and twist.