
After observing many tourists and NYC newcomers waving in confusion at cabs in various states, we decided this is something worth improving with physical computing. We also interviewed several cab drivers to understand the system from their point of view. We found these were the initial problems:
- Unclear meaning to customers (especially tourists)
- Visually unclear when far away or moving fast
- Drivers often break rules and solicit passengers while “Off Duty”
Attached to the light box was a chair meant to simulate the seats of a cab. The chair had a force resistor attached, and when a user sat down the Busy mode would trigger, and when a user got up the Vacant mode would trigger. A few seconds of delay were added before both state changes to allow for users shifting in their seats. This system meant the cab driver would no longer need to manually keep track of (or manipulate) what was going on. The system would be easier for both drivers and passengers to understand. Our first solution worked in the following ways:
- Easy to see at any distance or speed
- Uses green “Go” and orange “Warning” conventions
- Customers see what they care about - Yes or No
- Taxi company sees details, not customer
- Drivers will not lure customers while “Off Duty”
- Not language agnostic
- Not visible from all sides
- Not as visible in day time



The photos show the prototype with a portable florescent bulb inside, because this iteration had several problems with lighting. We first tried wiring into small florescent bulb enclosures to put into the light box. These blew after a few rapid on and off switches. We thought it was the bulbs, so we bought more and tested. Then it turned out the enclosure units were burning out. So we bought more enclosure units and they burned out again. The units couldn't handle the rapid on and off from the wire-to-wire vibration of testing.
We decided to switch to incandescent bulbs and use relays in a circuit to allow AC current from the wall power outlet to flow to the bulbs.
The schematic for this approach:

The code for this approach:
#define RELAY_PIN_ONE 3 //double relay action
#define RELAY_PIN_TWO 4
int relayVal = 0;
int fsrVal = 0; //force-sensitive resistor
int fsrPin = 0;
void setup()
{
pinMode(RELAY_PIN_ONE, OUTPUT);
pinMode(RELAY_PIN_TWO, OUTPUT);
Serial.begin(9600); // open serial
}
void loop(){
fsrVal = analogRead(fsrPin); // read the input pin
// if force resistor is pressed
if(fsrVal > 10){ //sitting
delay(4000);
relayVal = 1;
Serial.println("1");
}
else{ // empty
delay(4000);
relayVal = 0;
Serial.println("2");
}
// switch the relays
if(relayVal == 0){
digitalWrite(RELAY_PIN_TWO, LOW);
digitalWrite(RELAY_PIN_ONE, HIGH);
}
else{
digitalWrite(RELAY_PIN_ONE, LOW);
digitalWrite(RELAY_PIN_TWO, HIGH);
}
}
The 120V AC from the wall overloaded our relays so the current stayed on. Our prototype video shows the timing is working but the relays are overloaded:
http://vimeo.com/7446264
Unfortunately, we did not have time to build a new iteration this semester.
No comments:
Post a Comment