September 25, 2005

Improving Union Square Station

For a description of the assignment, see here.

Our group chose to observe the actions of individuals at the Union Square Station subway stop in Manhattan. Metro stops in general are chaotic, busy places with a lot of mental stimulus. In the Union Square station, which has takes up nearly a full block of space underground, the situation is exacerbated by its immense size. There are overhead signs every 30 feet pointing the way to various tracks, there are hordes of people going in every possible direction, there are huge steel girders to avoid, there are subway maps on the walls, as well as other signs that sometimes are useful (e.g., posters informing about limited service on certain lines) and sometimes not very useful (e.g., advertisements, announcements of city events).

There are two major groups of subway riders: those who ride on a daily or near-daily basis (frequent riders) and those who are new to the station and unfamiliar with the navigation of it (tourists). For frequent riders, speed and efficiency are the priorities: They want to get to their ultimate destination with as few distractions as possible, and they want to avoid waiting (in lines, for trains, etc.). They want to know the answers to questions like the following:

  • When is the next train?

  • Is this the fastest route to my track?

  • Do I need to speed up?

  • Will the next train be express or local? If it's the local, is it faster to take it or to wait for the express?

The tourists tend to be more concerned with information: They want to know where they are and how to get where they want to go. They want to know the answers to the questions:
  • Is this the right track?

  • Is this the way to my track?

  • Which track should I take?

  • Which exit do I take to get to the Tower Records (or Filene's Basement, etc.) aboveground?

Our group has devised a system of technological enhancements to the subway stop that we believe will improve the experience of frequent visitors and tourists alike.

Context-aware Trains
Several of the questions above are really directed at the trains themselves. If there were a way for the train to answer the question, "When will you arrive?" both tourist and frequent visitor would be helped. By using radio-frequency ID tags on the trains, coupled with receivers on the platforms, the trains will be able to know where they are, and the subway station will be able to know where trains are further up and down the tracks. This information could be presented in a variety of ways, including displaying a countdown timer in various places around the station (and also outside the station), making it available via SMS text messaging and also via the web.

Information Kiosks
A touchscreen kiosk (similar to the metrocard dispenser machines already installed) could be used to help the tourist and frequent visitor alike. The tourist could touch an area on a subway map of the city and have the machine tell it the best route to take to get to the destination. A frequent visitor could use the kiosk to find out how long it would take to get to an arbitrary location several train-switches away. The kiosk could also have information about the map of the subway station and it could be supported in part by advertising revenue from local stores, which would display (along with the weather information) on the display screen when it's not in use. The kiosk could also show aboveground images for each of the subway's exits, so that people exiting the subway won't arrive aboveground to find themselves across a busy street from their intended destination.

Aboveground Information
In addition to displaying train arrival times aboveground (so that a subway rider can know whether to hurry up or enjoy time outdoors a little longer), a status indicator could be used to inform the public when that entrance is closed or when a line's service has been discontinued.

Turnstiles
At busy times of the day, there is a mass exodus at certain exits of the station. These occur right after a train has arrived. If the trains were outfitted with the RFID tags described earlier, the station will know when a train has arrived. If the turnstiles could then be momentarily turned into one-way turnstiles (by keeping the bar from being able to move in a certain direction) and indicated as such using green or red lights, then the subway riders just entering the station would be able to get through the onrush of exiting people. The turnstiles could also be outfitted to pay attention to how many times they have been used in the past 10 seconds or so, and if they are unused for a specified period of time, they could be turned back into two-way turnstiles.

We also noticed that occasionally the metrocard needs to be swiped again, and the sound that accompanies the "swipe again" message on the display is the same sound that accompanies a successful swipe, leading to riders occasionally slamming into an immobile turnstile. The solution to this is simple: change the sounds so there is a negative feedback and a positive feedback sound.

Posted September 25, 2005 11:38 PM. Categories: Group Projects , Week 2 | Permalink

September 13, 2005

Programming the PIC: Memory Game

The goal of the lab for this week was to program the PIC (Programmable Interface Controller). I created a simple game: There are 7 yellow LEDs, one red LED, and two buttons. One of the buttons is for gameplay, and the other is a sort of meta-button, used for starting/resetting the game and for advancing from level to level while playing the game.

Memory Game

The switch labeled "built switch" above is simply two bare wires that can be tapped together to "press" the switch. The gameplay starts as soon as the player pressed the built switch. The yellow LEDs all blink twice and then they blink in succession, from the first to last. Each LED blinks a random number of times between 1 and 3 inclusive. As soon as the last yellow LED has blinked, the game goes into a ready state while it waits for the player.

The player plays the game by pressing the momentary switch. Each time she presses it, the first yellow LED lights up. When she believes she has blinked the first LED the correct number of times, she presses the built switch to advance to the next level (the next LED). The red LED lights once to indicate that it has moved to the next LED. If the player blinks an LED too few times before advancing, or too many, the red LED lights continuously to indicate that the player has lost. The game then goes back into a ready state until the user presses the built switch to start the game again.

If the player succesfully makes it to the end of the game, all the LEDs blink up and down like a ripple and the game goes back into a ready state to wait until the player hits the built switch to start again.
Movie of Game in Action

You can see that I used the same soldered-resistor-and-LED combination I did during Lab 1. This made it easier to fit all the LEDs next to each other, and removed some of the logistical headaches in making everything fit well.

The coding of the PIC was by far the hardest thing. My code is pretty clean, but not nearly as efficient as I'd like. I had trouble getting for loops and dynamic variables working well, so I created separate loops for a lot of functions that probably could have been handled using a single function (for instance, I created a separate loop for each "level" rather than one loop that just iterated for each new level). Also, by far the biggest problem with the game is the random number generation. Every time the power is turned off and on, the game starts up with the same "random" configuration (hint: all but the last two lights blink 3 times). I never figured out a good way to be more random.

Code

The code.

Posted September 13, 2005 03:21 PM. Categories: Labs , Week 2 | Permalink