Tuesday 31 January 2012

Pachube: tapping into existing feeds

This tutorial was followed http://community.pachube.com/arduino/usb/processing#pachube-output and the board wired up with an LED attached to PIN9. Sample code tested whether the serial read monitor at the bottom of the window was working, which it was.



Next, the proper code was run and the feed connection worked, but the LED did not light up. The resistor was replaced with a wire, and the LED lit up, but far too brightly and it heated up almost burning out completely creating a burning smell. Trying a very weak 560k ohm resistor instead still did not light up the LED. The feed values are changing, which suggests that the feed itself is working. This will be tried with another feed type.



Because the LED was overheating, I updated the code so that it drew a circle whose size corresponded with the remote sensor values, which are currently ‘159’, which changed from ‘162’. To do this, I used the ‘ellipse’ function from the processing library and added a single line of code. This worked well: see photo below. This could be used to connect to a remote sensor network on another arduino board connected to the internet. Processing is interesting because of the potential for a wide range of visual output that it represents.  There are other options, for example xbee and zigbee. 


As the values change, new circles are drawn, as below. There are two circles inside each-other where the feed has varied. Click to view larger.



Arduino firmata was already uploaded to the board.
The finished code is below:
As before my API KEY is removed.


import processing.serial.*;
import cc.arduino.*;

import eeml.*;

Arduino arduino;
int myValue;

DataIn dIn;

void setup()
{
size(255,255);
println(Arduino.list());
arduino = new Arduino(this, Arduino.list()[0], 115200);
dIn = new DataIn(this, "http://pachube.com/api/1228.xml", "MY APIKEY", 5000);
}

void draw()
{
println(myValue);
arduino.analogWrite(9,myValue);
ellipse(125, 125, myValue/2, myValue/2);
}

void onReceiveEEML(DataIn d){
float remoteValue = d.getValue(0);
myValue = int(remoteValue) / 300;
}


Week 16 Log

Week 16 Log: Week beginning 23/01/2012

Experimentation with Pachube was conducted this week as it is one option for long-distance arduino communication. Two arduino boards could be installed into chairs, and connected to Pachube. The arduino boards could then respond to remote sensor data. A tutorial was followed for implementation which was available here: http://community.pachube.com/?q=node/12 The feed worked perfectly and is available here: https://pachube.com/feeds/46509

The tutorial this week involved a short informal presentation of work with a feedback session. The main responses were the breadth of possibilities and forms that the project could take: this could be a ‘toolkit’, or an architecture for other designers to design from, or it could be one or more polished outcomes. It was suggested that the idea should be taken to users for their feedback on ideas of what they would use it for. The ‘group brainstorming’ technique could very possibly be used here. There is the potential for this to be used in corporate contexts as well as home or school contexts. One idea that was pitched was the idea that the concept could be used to let someone know that someone else is ready to receive a long-distance phone call. The concern was also raised as to the level of ‘finish’ that the project would be made to: that it is important that if a physical outcome is made that it is of a very high quality.

There was also some initial investigation: a task analysis was carried out with the paper chairs and a lego character.

The goals for this week are very similar to those from last week: user testing, focus groups and further prototyping. As there is a thesis that needs to be tested, a framework for it needs to be developed. 

Pachube: creating my own feed.

A developer account has been set up titled ‘siobhan2010’ which was used, and the tutorial was followed to connect a simple LDR (light sensor) to the Pachube network).
The Arduino board was wired up with a LDR on sensor AO and a 10k ohm resistor.



The ‘StandardFirmata’ code was uploaded to the board. NOTE: The arduino code window HAS to be closed otherwise processing won’t run the code at all.
 Processing was then opened and the arduinoInput_Firmata sample code was run on it. Below is a screenshot of it working.

The readings at the bottom of the window are from the LDR.
Then the sensors readings needed to be uploaded to Pachube, The EEML library for processing was downloaded and added to the processing library via this link http://www.eeml.org/library/. The code was edited slightly at this stage according to the tutorial instructions. Comments were appended to the provided source code as a reminder of exactly what they do.
This was tested locally first by visiting http://localhost:5210/ 
Below is a screenshot of the resulting XML file. The sensor value changes, so it was working correctly.

The next step was to determine the operating computers IP address, which was done by running cmd.exe then entering the command ‘ipcongif/all’. It was double checked by visiting http://www.whatismyip.com/. Unfortunately the computer was behind a firewall and had to be plugged directly into the internet rather than WIFI.
The Firmata Test program from the websites wiki was used to test that the sensor was running.

Arduino_input sketch from the firmata library within processing was used to further test the sensor. The circles get larger and the corresponding square fills in when the sensor is hovered over. This is visual output, and there is potential for screen parts of outcomes could be created using this.

Some coding experimentation occurred here; the update has been commented in. The brighter the light, the smaller the circles.
import processing.serial.*;
import cc.arduino.*;
Arduino arduino;
color off = color(4, 79, 111);
color on = color(84, 0, 158); //outline colour changed to purple
void setup() {
  size(470, 280);
  arduino = new Arduino(this, Arduino.list()[0], 57600);
  for (int i = 0; i <= 13; i++)
    arduino.pinMode(i, Arduino.INPUT);
}

void draw() {
  background(off);
  stroke(on);
 
  for (int i = 0; i <= 13; i++) {
    if (arduino.digitalRead(i) == Arduino.HIGH)
      fill(on);
    else
      fill(off);
          rect(420 - i * 30, 30, 20, 20);
  }
  for (int i = 0; i <= 5; i++) {
    ellipse(280 + i * 30, 240, arduino.analogRead(i) / 16, arduino.analogRead(i) / 16);
  }
}

PROBLEM: Required to edit firewall settings

Changing the pachube connection technique had to happen here as it was safer than interfering with home firewall settings. To get around not having automatic updates, the code can just be set to update more regularly (say once or twice a second) to give the appearance of immediate effect.

After this, the rest of the Pachube tutorial was followed. Because the network being used was a local one, the firewall settings had to changed.
Instead of doing it this way and having automatic updates, which would mean having to change home firewall settings (http://www.filesaveas.com/bthomehub_portforwarding.html), manual updates are going to be used which is much easier to do on a shared connection. The code had to be edited and I had to find my API key and create a feed address to use.
The tutorial for this is available here: http://community.pachube.com/?q=node/97
I had to update the code with my EEML address which is http://www.pachube.com/api/46509.xml

The feed works and is live at: https://pachube.com/feeds/46509

The working code is below: 

NOte: The API KEY has been commented out for security reasons.

import processing.serial.*;
import cc.arduino.*;
import eeml.*;
Arduino arduino;
float myValue;
float lastUpdate;

DataOut dOut;

void setup()
{  println(Arduino.list());
  arduino = new Arduino(this, Arduino.list()[0], 115200);
  //dOut = new DataOut(this, 5210);
  dOut = new DataOut(this, "http://www.pachube.com/api/46509.xml", "—MyAPI-KEYWasHere");
  dOut.addData(0,"light sensor, LDR, light level, light dependent resistor");
}

void draw()
{              myValue = arduino.analogRead(0);
                println(myValue);
    if ((millis() - lastUpdate) > 5000){
        println("ready to PUT: ");
        dOut.update(0, myValue);
        int response = dOut.updatePachube();
        println(response);
        lastUpdate = millis();
    }  
}

void onReceiveRequest(DataOut d){
    d.update(0, myValue);
}
The next step will be to look into the new pachube ‘trigger’ feature http://community.pachube.com/triggers and also deal with data from remote feeds.

Below is a screenshot of the 1hr data feed.

Tuesday 24 January 2012

Week 15 Log

Week 15 Log:
Week beginning 16/01/2012

This week involved the definition of the final project space: ‘transient memory’. It was defined in the blog here

This more specific definition facilitated thorough exploration of the final project space. There was exploration of the concept of ‘mementos’ and how this concept of an ‘active memento’ could be valuable.

A ‘transient memory’ system architecture was defined. There are four main elements within the concept of transient memory: conveying presence, the idea of an active memento and a secret memory channel. There are two options for collecting and transmitting data and these are active and passive: where the users have to intend to transmit information or don’t.


A paired architecture was designed that illustrated the movement of memories between two people using their devices.


A system architecture was also designed which illustrates how the system would work.



The final project proposal was developed for the deadline on January 24th. The presentation of the proposal itself was designed. Materials used were black mounting card and paper.  Supplementary materials were provided on CD which included a presentation of the entire process week-by week as well as arduino media and academic resources. 




 
The project proposal housing had a concept overview section, a section for the report and for the CD.

Early prototyping was also done this week. An arduino model was made and also Google sketch up models. The concept was titled ‘the ‘we’ chair’, and it conveyed presence as well as allowing the transmission of a message. The sensors had to be soldered onto long wires into order to fit into the model.



 
The arduino model was made using paper and various sensors. It is built into one device, but in the future it the devices will be separate with wireless connectivity. The chairs light up when they are ‘sat’ on, and the user can press a button to send a ‘HEY’ message. In future prototypes, experimentation will be done with customisable messaging and different interaction and output types. However, this prototype allowed functionality testing and illustrated how presence would be conveyed.

TITLE: The ‘we’ chair.

CONCEPT: Paired devices (chairs) detect when a person is sitting on them, and transmits a notifiation of this presence and a message. A light dependant resistor built into the seat detects when it is dark (someone sitting on it), and sends a message wirelessly to it’s partner device which turns a light on where they’re sitting (see images below). A message is sent in this prototype using a push-button. It currently only says ‘HEY’, but different functionality will be added in later prototypes according to feedback from the user groups.

AIMS: To convey presence and transmit memories

MEMORY LIFETIME: Limited to how long the memory sender is sitting in the chair

HOW: Arduino Uno board (Currently), Xbee wireless modules (future). At the moment for testing purposes everything is built onto one board: there is no distance seperation but it is fully functional. Also the message is displayed on the computer, where it would be displayed on an LCD screen or another standalone device, as in the google sketchup model.

COMPONENTS: Light Dependant Resistor (LDR), LED, Push-button

CONTEXT OF USE: Home (as depicted in google sketchup model).

Below are a photo and video of the sensors picking up when a person sits down: simulated by a finger on this micro model. The light lights up on the partner device.






Below is a video of the screen output when the button is pushed: this is simulated on the desktop environment here, but would have a standalone output in future prototypes.




Below is a google sketchup model of how the chair could look, and how it could be built as a life-size model.



Below is a usage scenario.

Step 1: Person A is sitting at home drinking tea.
Step 2: Person B sits on their sofa, and the chair sends a message to person A’s chair which lights up red, notifying person A of their presence.
Step 3: Person B decides to send a message to person A, so presses their button to say ‘hey’. This message is displayed on person A’s chair. Note: ‘Hey’ message is larger for illustrative purposes.


HOW TO IMPROVE ON THIS DESIGN: Build two standalone wireles devices. The chair devices would be purpose-built and would completely conceal any wiring. There would be customisable memory sharing: not just predetermined messages i.e. ‘HEY’. Explore different kinds of memories that can be depicted.

This week has involved conceptual definition and early prototype development.

AIMS FOR NEXT WEEK: To experiment with wireless networks and build a more durable, usable device for early user testing. Define user groups, and do at least one focus group and one task analysis with users. Look into what materials would be used to design the chair, and develop early designs for it with Google SketchUp. Talk to the workshop technicians next week about the viability of early designs, and how long they are likely to take.

Tuesday 17 January 2012

Concept: Transient Memory Defined

Concept: Transient Memory

What is it?
The impermanent existence of memory within a physical manifestation. It is similar to ‘sensory memory’ in cognitive psychology where the memory only exists momentarily unless it is transferred into working memory.
A transient event is a short-lived burst of energy in a system caused by a sudden change of state.
Where does it exist?
It exists where an object is an instrument for memory transmission. It is slowly disappearing as technology improves due to the improvement in means to capture memories which are created. This increases the durability of memories and reduces their susceptibility to degradation. Examples of transient memory instruments are televisions and pianos.

Why should it exist?
Because it conveys a sense of presence and closeness between participators. Where a memory is stored for later retrieval, it can be accessed at a later time and the presence of the memory creator is missing. It reduces the value of these memories as the observer does not have to make an effort to engage fully with the memory as it is accessible at any time. This can be tested.


Where a memory only exists momentarily, it creates a sense of presence and connection between two people. A user can ‘spark’ a memory in an artefact and share their intent immediately with another user. It is like having a dynamic memento of a person, and it can be wearable or not. There is a sense of secrecy and intimacy between two individuals.


Transient memory architecture.

Transient memory secrecy: the secret transmission of these memories: person to person.


Transient memory and mementoes
Memory itself is a ‘memento’ of a person, place or experience. Transient memory transmission attempts to emulate the sending of a memento of a person. The transience creates value and emulates the transient nature of real life person to person interaction.

The Big Idea
Transient memory here is a means of transmitting a ‘piece’ of a person. Whether this be a presence ‘signifier’ or creative or emotional manifestation. It connects two people separated by distance and creates a sense of presence and intimacy. The transience ensures secrecy and the physicality of the transmission can convey the idea of ‘reaching out’ or ‘touching’ another person. It’s disappearance after a while cements the importance of this connection.

Active/passive transmission
The transmissions do not have to be intentional; they could even be passive. Reverting to the concept of objects having an ‘agenda’, the objects could collect memories without the user being constantly aware of it (unobtrusively).

Active transmission would require intent for every transmission whilst passive wouldn’t.

Sunday 15 January 2012

Project Proposal (Interim)

Final Project Proposal: Siobhan McKenzie

“Memory: Here today, gone… today”

1. Introduction
This project is about transient memory and objects. These are memories which are not stored permanently in objects, but are transmitted and observed for short periods of time. This concept of ‘transient memory’ can create engaging user experiences, and a sense of user presence and value within memory transmission.
This project began with an academic investigation into the history of and recent developments within memory theory. Published books and papers were referred to and I conducted a 60 minute interview with a leading psychologist who specialised in memory and objects. Following on from this, key themes and concepts were explored i.e. the concept of ‘schema theory’. After this was an investigation into what memories are currently being collected, how this can be changed or subverted and reinterpreted. The original brief was ‘noticing the unnoticed’, which manifested itself as an investigation into what types of data is currently being collected i.e. GPS location tracking in a smartphone as well as how it was being represented. Objects were then personified and given ‘agendas’ which were subverted by being forced to collecting different data in different ways or given different intentions altogether. This developed into an investigation of noticing the unnoticed memories that different people have of objects i.e. an object can hold significance for a person that it does not for another. The concept of ‘form’ came up quite early, and how it relates to the storage of memory.
The project was then lead by four guiding principles:

1. Objects storing memories
a. Memories actually stored physically in objects
b. Memories the observer projects onto objects (intangible and invisible)
2. Memories created by objects
3. Objects subverting memories
4. Objects reinterpreting memories

Positive and negative memories were explored, as was the degradation or destruction of memory and the links between form and memory itself. The ways that objects can store memories which are ‘hidden’ from others was developed. The concept of ‘transient memory’ emerged in this exploration and a video was created to explore it further. ‘Transient memory’ is the momentary creation and disappearance of memory in objects. The absence of an object connected to memory can be as powerful as its presence. With the massive capacity that modern technology affords, people have the ability to keep every photo they’ve ever taken or access any information they have ever made. With transient memory, memories shared are not ‘kept’. This can create a sense of presence and well as making the memory more valuable; if it is only momentary the observer may value it more. Presence is created by the transmissions immediacy: it is not available for viewing later.
Transient memory can bring together many of the key concepts identified earlier on in the project. A transient artefact can store memories as well as create new ones, and can reinterpret memories in an enriching way. This project will strive to remain consistent with my personal manifesto and create a valuable user experience with a fully investigated user group and context of use.

2. Literature Review
Schema theory, top-down processing, affordances and constraints, false memory, group psychology
3. What

Transient memories can be transferred between two or more multi-modal partner devices. The devices would have the ability to transmit multiple types of memories, for example mood and messages. The two devices will be standalone and will not need to be connected to a computer to function. Haptic and wearable interfaces are an option, depending on the needs of the user group. Multiple input methods will be available within various devices.
Devices may be able to connect to a larger ‘pool’ of experience: experience feeds can be tapped into from different people, which would be very relevant for example if the device was used to transmit artistic work for inspirational purposes. There could also be the option to view everything through a filter, which would be done on a desktop. However, the detachment of the devices from a desktop environment may be more appropriate.

4. How
Arduino and the python programming language will be used for the internal build. The devices will be connected wirelessly over an internet connection; built into the device. The design of the device will be executed via a user-centred approach throughout, with prototypes and ideas being tested by a representation of the user group. The system will involve multiple inputs and multiple outputs, which will be developed separately to a working stage, then integrated with the main project. The interface will be designed for simplicity and ease of use, so will be as user-friendly as possible.

Resources for implementation
http://mbed.org/cookbook/Homepage
http://arduino.cc/playground/Interfacing/GoBetwino
Igoe, Tom: Making things talk 629.895 IGO
101 spy gadgets for the evil genius / Brad Graham, Kathy McGowan. 621.38928 GRA

Arduino Cookbook

Week 14 Log

Week beginning 9/01/2012


This week involved exploration of the destruction and life cycle of memory. The final project domain was developed: transient memory.

First the survey about negative memories was completed which yielded a few results. Next was an exploration of the destruction of memory. How can memories be removed from objects? By destroying the objects form? However, the link to the memory would remain. Even if an object is destroyed or missing it is still remembered.

A time lapse video was created to explore the ideas of ‘transient memory projection’, ‘transient memory creation and destruction’ and ‘IS and WAS’. Transient memory projection is a memory projected onto a object which doesn’t last long. ‘IS and WAS’ is the recognition of memories that remain long after the object itself has been removed. This video is available below



This lead to the concept of objects temporarily storing memories and transmitting them to other objects. This could be valuable in creating a sense of presence. Not only this but the fragility of the memories can create value. Where a memory is available to view at any time (i.e. a photograph on flickr) it may not be as treasured as one that is only available for a short space of time. Immediately connecting people to memories, rather than storing them for later review can create a sense of presence. The users will be aware that they are experiencing the memories as they are being created.
What? Why? Between whom? Context of use? Usefulness? Is there a need this is meeting? These were all considerations that were made. There were different ideas about what to transmit i.e. messages, inspirational media and presence signifiers (location) as well various contexts of use i.e. between parents and children or between couples were developed.
Multiple ideas were generated from this i.e. the photograph projector and the music box. The next step was the potential for multi-modal interaction and the potential for remote interfaces. The ideas for far centre around paired devices which transmit memories to each-other. There has been some consideration for how long these memories should last; time related or should they stay until replaced? Would probably depend on the input.

The next step is to decide on a user base, and understand what their needs would be for a device such as this. I will be taking a user centred approach for this project, and now that the concept has been developed it has to be tailored to a specific user group’s needs. I may also consider a marketable context of use for this project.

A project proposal has been developed, but it is missing a literature review and mock up screens and sketches. There is a tutorial session tomorrow so after this the final prototype will be defined and designed for. This week may also involve exploring a few user bases to identify specific needs.

Sunday 8 January 2012

Week 13 Log

Week 13 Log.

Beginning 02/01/2012

This week focused on the exploration of type 1 memory and the definition of the general project structure.
The general project structure is defined as being in two parts; a) capturing memory and b) responses (physical and virtual). However, what to capture, who to capture it from and how to subvert/reinterpret these is still undefined. So, exploration of every principle had to be executed.

Type 1 object memory in the brief is ‘objects storing memories’. A visual brainstorm was developed to explore this, and themes such as ‘objects sparking emotions’ i.e. memory triggers, ‘catalogues’ and ‘objects being given memories by their creator’ were identified. Type 1 memory was split into two parts: Memories actually stored in objects, and memories that the observer projects onto an object. With the first variety, the memories stay with the object no matter who it perceiving them. With the second variety, the memories are transient and change depending on the perceiver. The same object can hold different significances for different people. Object scenarios were created.



Following on from this was the idea that if memories are triggered by objects, they are not necessarily positive ones. A few general types of negative memories were identified: truly negative -or traumatic, pet hates (long-term personalised irritations) and things that people dislike on a particular day. For preliminary investigation, pet hates was selected, due to the fact that it wasn’t particularly personal so people were likely to share, yet they are personal enough to learn about said person.  The survey was designed using the DECIDE framework which was learnt from Prof. Kate Devlins’ user interface design lectures. The survey was designed and distributed using the surveymonkey tool and is available here. At this moment responses have been low further responses need to be gained before analysis.

Persuasive technology and ambient intelligence was briefly explored in their ability to ‘tap into’ users emotional states and execute responses based on this. This followed on from comparing positive and negative experiences and if these could be designed for.

The next area of exploration was the destruction of memory, which naturally follows on from the storage and triggering of memories by objects. If a memory is actually physically stored in an object (the first variety), it can be destroyed by destroying its form. However if a memory is ‘projected’ onto an object, destroying that object does not destroy the memory as it is stored in the person that perceives it. By destroying its form we can destroy the connection to it and therefore not ‘spark’ said memory. However, if the object is important to a person they will notice that it is gone and it may even have the opposite effect. By destroying the physical ‘link’ that the object represents, they may have attention drawn to the memory and it may become more prevalent in their mind. Other people might not notice this ‘link’ unless they are told about it, and therefore these memories go unnoticed by them. Where memories are projected onto objects, these are harder to notice than those physically stored. These objects have ‘stories’.

Summary

This week has yielded interesting areas for design interventions and concepts. The next week will explore the remaining three areas and a final project proposal will be developed. The IDEO method of shadowing as well as personal journals will be useful in noticing the unnoticed. Investigation has so far been about noticing the unnoticed and noticed memories stored in particular objects and how objects can be involved by subverting memories and reinterpreting them differently. However this has not as yet been linked to particular people or groups of people and it needs to be. User investigation is crucial at this stage now that areas have been identified in theory.  Categories  have to be explored in the real world as well as in theory. Type one memory leads to type two – objects store memories and then they create new ones. There is the potential for ‘projected’ type one memories to be actually captured and then new memories created from them.

Goals:

·         Explore all four principles thoroughly
·         Notice the unnoticed
o   Investigate people
o   Look at what objects they come into contact with, and what is type 1, 2, 3 or 4
·         Explore concepts visually
·         Use type 1 & 2 to lead types 3 & 4.
o   Note: Do not use potential outcome techniques to lead what is collected. Lots of memory interpretation methods are available, but don’t lead investigation with this.
·         Develop final project proposal

Deadline: Monday 16th January