Wednesday 24 December 2008

UAF Development Progress

UAF's servo motors are still operating from a single potentiometer, and unfortunately the PIR sensors purchased seem unable to offer a readable output for the Arduino. Although the sensors could successfully be powered from a 12V source (by indication of the LED on the sensor flashing), there is no clear way to get a safe reading the Arduino could use.


Image of Parallax PIR Sensor from: www.parallax.com

It does seem, that it is only the brand chosen that seems to be the problem, as there are pieces using the Arduino and a particular PIR sensor manufactured by Parallax in the US. Unfortunately, importing these sensors is not financially feasible so a compromise must be sought in order to still offer user interaction, I am thinking that using a second potentiometer so users can control the two axis of movement separately would be a successful compromise, as it will still offer interaction and user satisfaction, but, unfortunately, the 'uncontrollable' aspect will be removed.

Friday 19 December 2008

Alternative and Innovative Public Products

Because the UAF is designed for ease of use, so it could be used by the general public, I decided to look at interesting interfaces that are being made available to the public...


Image of OCZ's NIA from:
techreport.com

Pictured above is the "Neural Impulse Actuator Controller" (or NIA) by OCZ. This device is essentially a motionless "joystick" aimed at PC gamers, that through the device's drivers, outputs various facial movements and brain waves as regular keyboard keystrokes. This makes it usable in any application that can have keystrokes bound.

Unlike UAF, it is mentioned in reviews that the NIA takes a lot of getting used to, and users have to 'train' themselves to use the device. With UAF, the device will be plug and play, where only a power supply would be needed.

Here is a video review of the NIA, which notes that it is a fresh, innovative and forward thinking device that will make gaming never be the same again...

Friday 12 December 2008

Abstract Data Visualisation

I have come across an interesting electronic piece titled: Dept. of Rhythmanalysis: Dupage, by Kevin Hamilton. This piece shows viewers True/False answers to unusual questions in a very basic electronic Green/Red LED display...



Images of Dept. of Rhythmanalysis: Dupage from: www.kevinhamilton.org

... some of the conditions displayed include:

  • WAR IN IRAN / WAR IN IRAQ
  • BORDER SECURE / NO BORDER
  • DEMOCRATIC WHITE HOUSE / REPUBLICAN WHITE HOUSE
  • IT WILL GET BETTER / ITS PRETTY BAD
This piece and other versions of it are mentioned in an article on Rhizome that mention Hamilton as an artist that is "clearly invested in questioning the nature of interface and display".So Hamilton seems to have followed similar principles that UAF follows, in that he is exploring alternative ways of display for interfaces. Which is the same thought process of UAF, where alternative thinking will provide users with an unusual and innovative interface.

Tuesday 25 November 2008

User Auto Fan Prototype

After some work on creating the structure, the UAF has reached a usable prototype stage. In this stage, the fan rotates and moves a substantial amount of air and for demonstration purposes the servo motors can be controlled by the use of a potentiometer.




There are still obviously more development stages that UAF will have to go through before it becomes like the proposed design (not requiring direct user interaction, being a self-contained unit, etc.), however this prototype shows the potential for the project.

Thursday 20 November 2008

Servo Motors with Arduino

Servo Motors are a kind of motor that can read its position, and turn to a position, rather than just 'run' until stopped. These are a good choice to include in my UAF project as the tools to move the fan.

The Arduino code that will control the motors is freely available on the internet...
/*
Two-servo control from an analog input

Moves two servos based on the value of one analog sensor,
in opposite directions.

The minimum (minPulse) and maxiumum (maxPuluse) values
will be different depending on your specific servo motor.
Ideally, it should be between 1 and 2 milliseconds, but in practice,
0.5 - 2.5 milliseconds works well for me.
Try different values to see what numbers are best for you.

by Tom Igoe
Created 28 Jan. 2006
Repurposed for Dual Servos by Carlyn Maw
24 Mar. 2006
*/

int servoPinL = 2; // Control pin for servo motor - L
int servoPinR = 3; // Control pin for servo motor - R
int minPulse = 500; // Minimum servo position
int maxPulse = 2000; // Maximum servo position
long adjustedAV = 0; // Analog value adjusted for determining pulse values
int pulseL = 0; // Amount to pulse the servoL
int pulseR = 0; // Amount to pulse the servoR
int delayValueMax = 200; // the 20 microsecond maxiumum pulse range for the servo
int delayValue = 200; // the actual value the code should wait, determined later

int analogValue = 0; // the value returned from the analog sensor
int analogPin = 0; // the analog pin that the sensor's on

void setup() {
pinMode(servoPinL, OUTPUT); // Set servo pins as an output pins
pinMode(servoPinR, OUTPUT);
pulseL = minPulse; // Set the motor position values to the minimum
pulseR = maxPulse;
}

void loop() {
analogValue = analogRead(analogPin); // read the analog input (0-1024)
adjustedAV = (analogValue / 10) * 19; // convert the analog value to a number
// between 0-2000 (difference between min and max)

pulseL = adjustedAV + minPulse; // set value for left motor
pulseR = maxPulse - adjustedAV; // and the inverse for the right

digitalWrite(servoPinL, HIGH); // Turn the L motor on
delayMicroseconds(pulseL); // Length of the pulse sets the motor position
digitalWrite(servoPinL, LOW); // Turn the L motor off

digitalWrite(servoPinR, HIGH); // Turn the R motor on
delayMicroseconds(pulseR); // Length of the pulse sets the motor position
digitalWrite(servoPinR, LOW); // Turn the R motor off

delayValue = (delayValueMax - pulseL) - pulseR; // determine how much time you have before the 20 ms is over...
delayMicroseconds(delayValue); // 20 millisecond delay is needed between pulses
// to keep the servos in sync
}


Code from: www.tigoe.net
I edited the code to represent the timing for my specific motors, so the electrical pulse that the servo motors use to move and read position never goes too high or too fast. Here is the result using a potentiometer as the user input (as a method for easy testing)...

Thursday 13 November 2008

Fritzing and "Virtual Prototyping"


Image of Fritzing from: www.pixelsumo.com
"Fritzing is an open-source initiative to support designers and artists to take the step from physical prototyping to actual product." - www.fritzing.org
Specifically, Fritzing is being designed (is still in alpha stages) to prototype for Arduino-based PCBs (Printed Circuit Boards), and they compare it as a software metaphor to the electronic breadboard, which is designed to be a speedy prototyping base to 'mess' about with.

This kind of Electronic Design Automation software is designed for the Arduino, and is also Open Source much like Processing or the Arduino software. However, this kind of prototyping software is not a new thing...


Image of Eagle from: cadsoft.de

The immediate picture above shows screen-shots of Cadsoft's PCB prototyping software: "Eagle". This software is not primarily targeted at artists in the same way Fritzing is, and is also not focused on the Arduino (but any custom PCB), but still has a freeware version available.

Hidden Systems


Image and information from: www.pixelsumo.com

Above is a picture of the Tuttuki Bako, a Japanese toy that is a handheld system that involves a rather unusual method of interaction...



... as is obvious from the video and picture above, the user has to interact with just one finger placed inside the "virtual world", and interacts by the output on the screen.

In the context of how the system is just one part to the user, and the user only has one way to interact with the toy, it is a great example of how the reduction of parts to one whole object can 'make' the experience to a user or player.

Tuesday 4 November 2008

Languages

I thought it would be a good idea to look at languages that have been noted as a good choice to work with the Arduino on computers.

Max/MSP

A Max/MSP "Patch"
dhardy.co.uk

Max/MSP is a visial object orientated programming interface that is highly extensible and well documented. Max/MSP uses pre-programmed patches and parameters to form "patches". These patches can scale to any size and can include other patches.

"Max/MSP/Jitter is three things:
  • Max, a graphical programming environment that provides user interface, timing, communications, and MIDI support
  • MSP, for real-time audio synthesis and DSP
  • Jitter, for video and matrix data processing"
I have had some experience with using the Arduino technology with Max/MSP coding and serial input, and the impression I got was that the possibilities are vast and the time-span of achieving ideas can be quite short given the extensive documentation on the function of Max/MSP.

Processing

Cover of a book on Processing
soup-du-jour.net


Processing is an open source programming language that is built on the successful language of Java. It is a language designed by visual artists to encourage visuals in computer programming.

"It is used by students, artists, designers, researchers, and hobbyists for learning, prototyping, and production. It is created to teach fundamentals of computer programming within a visual context and to serve as a software sketchbook and professional production tool. Processing is an alternative to proprietary software tools in the same domain.

Processing is free to download and available for GNU/Linux, Mac OS X, and Windows."

The website describes Processing as a language that is meant to be available to everyone, on any platform, for free, which are hard aspects to find among expensive licensed software usually associated with artists.

Monday 27 October 2008

Idea - User Auto Fan

The User Auto Fan (UAF) stems from the previous idea, in that it will interact with the user without the need for their awareness or participation. This artefact could be a fun exhibition piece or even be a consumer product in homes.


Sketches and description of UAF.

The simplest way the UAF would track heat and position would be with using PIR sensors (http://en.wikipedia.org/wiki/Passive_infrared_sensor, http://www.gadgetshack.com/motionsensor.html). PIR sensors are commonly used in security systems that detect movement or human presence, and by using the inputs of the two sensors, an Arduino would be able to calculate position.

The most aparrent problems that would be encountered in this idea is how to detect the hottest objects amongst hot objects, and cool down only humans and no other hot objects (such as radiators). These problems may not be able to be overcome by using the Arduino and PIR sensors alone, however the idea would likeley be able to be prototyped to a very advanced stage.

PIR sensors and servo motors can be found on high-street shops such as Maplin:

http://www.maplin.co.uk/module.aspx?TabID=1&criteria=usb&ModuleNo=26922&doy=search&C=SO&U=Strat15

http://www.maplin.co.uk/module.aspx?TabID=1&criteria=usb&ModuleNo=9944&doy=search&C=SO&U=Strat15


I think that the UAF would be an exciting and user-rewarding idea to persue, and so that, coupled with the fact that it will run using the flexible Arduino technology, make it a strong possibility for development.

Idea - Sleep Seeker

The Sleep Seeker (SS) would be an exhibition piece that would 'force' interaction with the user, even if they do not wish it. This idea would be a fun and unusual piece, that 'users' would get interacted by, rather than interact with.


Sketches of the proposed idea.

The SS would 'seek' out people that showed signs of tiredness (by using face recognition from the cameras) and try to force them to sleep on the bed.

This idea would be able to be prototyped on a small scale, however actual implementation and development would exceed the scope and time-scale of this assignment. Tracking 'tiredness' would be a very hard characteristic to trace, and perhaps would not be a viable option for this implementation. Instead, the SS could track heat and try to 'warm up' people in the room that were coldest. This would be a much easier method and the final artefact would be just as effective.

If heat were to be tracked then the object that interacted with the user could possibly be changed to something more relevant, such as a coat on a coat-stand that would try and get cold users to put it on (to warm them up). This would involve a lot of thermal imaging analysis, and positioning data, so it would seem this idea is still too ambitious for the assignment.

This idea, however, could be scaled down, into a less modularised, stationary object.

Friday 24 October 2008

Alternate Thinking

For this project I think it would be useful to see how standard function of an artefact can be used for different purposes.



As you can see the creator (Johnny Chung Lee) has thought "outside the box" by taking technology that performs one function, and putting it in the context of another. As he mentions in the video, he was inspired by something from the real world (looking through a window), and so I think real household objects are an area of great development potential in my project.

Monday 13 October 2008

RFID

A technology that has been widely encouraged amongst developers, is Radio-Frequency Identification (RFID). RFID is a technology that allows an 'individual identification' system to be incorporated into practically anything.


www.tfl.gov.uk
London's Oyster Cards use RFID


As aforementioned RFID is encouraged by developers, and has been the 'hot topic' for many developer discussions and workshops. Here is a video of some RFID implementations being shown at 2008's Takeaway festival...



This technology is cheap, and could easily be implemented into household objects. RFID technology is also available on the Arduino, so implementation would be a familiar practice and be extremely flexible.

Friday 10 October 2008

Arduino

An area of hardware development I am interested in is the Arduino. The Arduino is a piece of programmable hardware that interacts seamlessly with electronic sensors and outputs, and so is the perfect platform to develop experimental implementations.


Diagram of an Arduino board.

The small size of the Arduino also makes it a great option for inclusion in actual projects, to make a complete package that doesn't need assembly.

Here are some examples of basic Arduino implementation in different hardware...

Interacting with a Nintendo DS...


Interacting with Flash on a PC...


A self contained "robot" that loops simple movement...


A "wearable" example of human gesture imitation...



These examples show that Arduino is likely to be adaptable enough to be able to be implemented into any possible artefact that I develop.

Monday 6 October 2008

Mobile Media

In the past few years mobile phones have become an alternative for almost every electronic communication and entertainment device, with modern models incorporating everything from e-mail to video and music playback.



Above is a demonstration of one of the latest developments for the popular Apple iPhone... RJDJ. RJDJ is just one of many new programs that have come out of a huge developer movement, that has come about due to manufacturers releasing Software Development Kits (SDKs) for their phones, allowing developers to write applications to utilise the phone's hardware.

Mobile phones are an interesting medium for developers to explore. It is an area that is most notable for including more and more features and technology, while at the same time getting smaller and smaller. Mobiles have also become a huge accessory of everyday life. However, although they play a large role in our life, they are not yet a 'part' of everyone's life, as much as a bed or a car may be.

Thursday 2 October 2008

Initial Thoughts

This module requires a huge amount of inspiration and aspiration. These are concepts that I am personally not used to, and am quite nervous about. The module has such a huge spectrum of possibilities that it is somewhat overwhelming thinking about any sort of definite outcome or product.

However, I am thinking a good way to start coming up with ideas is to apply what is shown in lectures to everyday life. Places for consideration include:
  • Household objects
  • Everyday activities such as commuting to work
  • Non-active activities, such as sleeping
I think focusing initial plans on these areas would provide plans for a successful and possibly a 'shocking' outcome.