Introduction: Scout

Project Motivation

This project is a collaboration between  izzylink and bhasudha(me), for the course 'Things That Think' (CSCI 7000) at The University of Colorado - Boulder, Fall 2012.  This project was completed in the limited timetable of 4 weeks, however if this project was recreated it would take about a week or two to complete.  

We wanted to create an interactive diorama that can be used to educate kids, through something they love - Games. We came up with the idea of an interactive map to make learning about places more fun. This interactive game is similar to a treasure hunt. The player collects voice clues to navigate from start to target. We named this project "Scout", in the spirit of the exploration of a treasure hunter. We believe that scout is fun to play and its rich ,interactive medium helps kids learn a lot more information.


About the Game

The map highlights the popular places, "landmarks", across the United States.  It is played by starting at one of these landmarks (Seattle in our game) and listening to voice instructions before traveling to the next landmark.  Cool facts are also played as the player is traveling, teaching them about the places they are going through or visiting.  Different vehicles (or player objects) are available for traveling to each of these landmarks.


Game Rules

1. Begin at the starting landmark.
2. Move over the pressure sensors, collect voice clues and interesting facts at each point.
3. Use appropriate tools to navigate the map.  These are the player objects, and are miniature versions of different vehicles.
4. Obtain a visa, at the last landmark, to go to the next country.

Step 1: Overview

High-Level Design 

Map
The map was printed on a large sheet of paper and mounted on a sheet of plywood for stability.

Objects
The game's landmark's and player objects were 3D printed and painted to look like miniature models.  We ended up using the Hollywood Sign, Space Center, Disneyworld, and the Statue of Liberty as landmarks and a boat, car, plane, and bus as player objects.

Sensors
We integrated pressure sensors near each landmark and sometimes on the road between landmarks to add interactivity with the map.  When a player moves over these sensors, a sound clip will play, giving information about the place and instructing them on what to do next.

Arduino
The map needs to be attached to an arduino to keep the sensors working, and in our project it also needs to be attached to a computer with speakers also.  We did not have enough time to research alternative methods of playing sound clips, so this was our solution for the time being.


Challenges We Faced

Scalability
We faced this problem continually throughout the project.  When we printed the map, landmark objects, or player objects, we had size issues nearly every time.  Scaling each of these objects relative to one another was extremely difficult, since some 3D objects required a minimum size just to be printed, but we did not want to make any object too large for the map.  We will talk more about this problem in future steps.

Content
Though this instructable focuses mainly on building the physical map, the instructions that are played to the player are still important, since that is when the project becomes a learning tool.  Choosing content that is age-appropriate, interesting, and brief enough to be played quickly is an important aspect that would need more work if this project is expanded further.

Sensors
Choosing the correct form of sensor based on that type of traveling the player will do is important for the interactivity aspect of the map.  We had initially thought of buttons, infrared, RFID, and pressure sensors.  Buttons could be used in a lower-fidelity project, where a player would only need to press a button when they reach a landmark.  IR sensors would have been a good choice, giving the map more interactivity with the landmarks on the map, however they would have been difficult to implement, since each of the traveling object would have needed an ir emitter in them.  RFID sensors would have been ideal in this project, since they could have detected the proximity of a player's object when they were traveling to a landmark and would have been able to play quick facts based on there the player was traveling on the map.  We went with pressure sensors, which enabled us to quickly prototype, and still allow for interactivity within the map at multiple points.


Rest of this instructable talks more about the following steps:

1.   Design of Scout
2.   Materials and tools needed
3.   Setting the wooden board
4.   Printing and processing the 3D objects
5.   Building navigation tools
6.   Designing the navigation paths
7.   Making your own pressure sensors
8.   Building the circuit
9.   The arduino code in action
10. Java code
11. Content for voice instructions
12. Further extensions
13.  Let's Play

Step 2: Arduino Code

To start the project, we wanted a proof of concept that the arduino could access and play music files by reading the value of a pressure sensor through a serial port.  We were able to accomplish these things with a combination of Arduino and Java code, one to read the values of the serial ports and the other to play the sound files.

This section presents the Arduino controller code, which interfaces with the pressure sensors and detects the progress of the user on the map. The code is designed to tell which sensor has been tripped and if the player is advancing in the correct direction.  If they are, the Java content player is notified (which will play the sound file).  The code is also well commented inline, to describe what it does. 


Code

// total number of pressure sensors on the map
 #define NUMSENSORS 10
 // raw values read from the pressure sensors
 static int sensorVals[NUMSENSORS];
 // threshold values each sensor, to be deemed detected
 static int threshold[NUMSENSORS] = {930, 930, 900, 900, 920, 930, 930, 910,930, 910};
 // list of sensors detected in each loop
 static int results[NUMSENSORS];
 // duration of each audio clip, at each sensor
 static int durations[NUMSENSORS] = {24000,30000,17000,15000,32000,2000,25000,23000,25000,33000};
 // current position of the user in the map. i.e last waypoint
 static int pos = -1;
   
    void setup(void) {
      // We'll send debugging information via the Serial monitor
      delay(5000);
      Serial.begin(9600);
      //Notify Java to play a free instruction at the start
      Serial.println(98);
      //duration of the free instruction
      delay(34000);
    }
   
    void loop(void) {
      initSensors(); // reset everything
      // read in sensor values and mark detected sensors
      readPins();
      int i = 0;
      for(i = 0; i < NUMSENSORS; i++){
        // check if the user has advanced to the next position
        if(results[i] == pos + 1){
            pos = results[i];     
            // if so, notify the Java content player   
            Serial.println(pos);
            // and wait for it to finish
            delay(durations[i]);
          break;
        }
      }
        delay(2000);
    }
   
    // resets the sensor values and results in each processing loop.
    void initSensors(){
      int i;
      for( i = 0; i < NUMSENSORS; i++){
          sensorVals[i] = -1;
          results[i] = -1;
      } 
    }

    // read the raw sensors and mark them as detected
    // if they exceed a threshold
    void readPins() {
      int value = -1;
      int i = 0;
      for( i = 0; i < NUMSENSORS; i++){
        // read in the raw values for each sensor
        sensorVals[i] = analogRead(i);
        // Check if the sensors are neither 5 nor 6
        if((i < 5) || (i > 6)){
         if(sensorVals[i] > threshold[i]){
          results[i] = i;
          Serial.println(sensorVals[i]);
         }
        }
        // If the sensors are 5 and 6 
        else{
          // check if the difference between the previous sensor value and current is greater than 30
          if(abs(threshold[i] - sensorVals[i]) > 30){
            results[i] = i;
            Serial.println(sensorVals[i]);
          }
          // update the threshold values for the sensors 5,6
          threshold[i] = sensorVals[i];
        }
       
      }
        // In my arduino board the pins 1 and 3 dint work. So used alternate pins.
        sensorVals[1] = analogRead(10);
        if(sensorVals[1] > threshold[1]){
          results[1] = 1;
          Serial.println(sensorVals[i]);
        }
        sensorVals[3] = analogRead(11);
        if(sensorVals[3] > threshold[3]){
          results[3] = 3;
          Serial.println(sensorVals[i]);
        }
    }

Step 3: Playing Music Files

After we were able to 

We looked primary at this tutorial to show us how to use Java to interface directly with the arduino's serial port.  If you need more information, we recommend going through that page to get more detailed information.   We have very similar code in our project, with a few changes to play the mp3 files.


Code

SimpleRead.java
=============
package readSensor;
import java.io.InputStream;
import java.io.OutputStream;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import java.util.Enumeration;
import java.util.HashMap;

public class SimpleRead implements SerialPortEventListener {
MP3 mp3;
SerialPort serialPort;
private HashMap<String, String> filename;


public SimpleRead(){
  this.mp3 = new MP3();

  // Hash Map that maps the input string to fileName. The input string is got from the serial port
  this.filename = new HashMap<String, String>();
     this.filename.put("1", "Resources/1.mp3");
     this.filename.put("2", "Resources/2.mp3");
     this.filename.put("3", "Resources/3.mp3");
     this.filename.put("4", "Resources/4.mp3");
     this.filename.put("5", "Resources/5.mp3");
     this.filename.put("6", "Resources/6.mp3");
     this.filename.put("7", "Resources/7.mp3");
     this.filename.put("8", "Resources/8.mp3");
     this.filename.put("9", "Resources/9.mp3");
     this.filename.put("10", "Resources/10.mp3");
     this.filename.put("99", "Resources/99.mp3");
}
        /** The port we're normally going to use. */
private static final String PORT_NAMES[] = {
      "/dev/tty.usbserial-A9007QU0", // Mac OS X
   //"/dev/ttyUSB0", // Linux
   //"COM3", // Windows
   };



/** Buffered input stream from the port */
private InputStream input;
/** The output stream to the port */
private OutputStream output;
/** Milliseconds to block while waiting for port open */
private static final int TIME_OUT = 2000;
/** Default bits per second for COM port. */
private static final int DATA_RATE = 9600;

public void initialize() {
  CommPortIdentifier portId = null;
  Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();

  // iterate through, looking for the port
  while (portEnum.hasMoreElements()) {
   CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement();
   for (String portName : PORT_NAMES) {
    if (currPortId.getName().equals(portName)) {
     portId = currPortId;
     break;
    }
   }
  }

  if (portId == null) {
   System.out.println("Could not find COM port.");
   return;
  }

  try {
   // open serial port, and use class name for the appName.
   serialPort = (SerialPort) portId.open(this.getClass().getName(),
     TIME_OUT);

   // set port parameters
   serialPort.setSerialPortParams(DATA_RATE,
     SerialPort.DATABITS_8,
     SerialPort.STOPBITS_1,
     SerialPort.PARITY_NONE);

   // open the streams
   input = serialPort.getInputStream();
   output = serialPort.getOutputStream();

   // add event listeners
   serialPort.addEventListener(this);
   serialPort.notifyOnDataAvailable(true);
  } catch (Exception e) {
   System.err.println(e.toString());
  }
}

/**
  * This should be called when you stop using the port.
  * This will prevent port locking on platforms like Linux.
  */
public synchronized void close() {
  if (serialPort != null) {
   serialPort.removeEventListener();
   serialPort.close();
  }
}

/**
  * Handle an event on the serial port. Read the data and print it.
  */
public synchronized void serialEvent(SerialPortEvent oEvent) {
  if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
   try {
    int available = input.available();
    byte chunk[] = new byte[available];
    input.read(chunk, 0, available);

    /* Read the string from the serial port.
       Convert it to an integer and add 1 to it. Because we also send 0 from Arduino, we need to add 1 for next step to go through.
       Check  if it is a valid integer greater than 0.
       Convert the new integer back to string and check in HashMap to get the filename.
    */
    String key = new String(chunk);
    System.out.print(key);
    int i = Integer.parseInt(key.trim());
    if( i + 1 > 0){
     System.out.println("Hi there");
     mp3.fileToPlay(filename.get(String.valueOf(i+1)));
     new Thread(mp3).start();
    }
  
  
   } catch (Exception e) {
    System.err.println(e.toString());
   }
  }
  // Ignore all the other eventTypes, but you should consider the other ones.
}

public static void main(String[] args) throws Exception {
  SimpleRead main = new SimpleRead();
  main.initialize();
  System.out.println("Started");
}
}



http://introcs.cs.princeton.edu/java/faq/mp3/MP3.java.html  explains how to play a .mp3 file from Java. We modified this file a bit to serve our purpose. Attached is the modified code.  The SimpleRead.java code calls MP3.java.


MP3.java
=======

package readSensor;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.util.HashMap;

import javazoom.jl.player.Player;


public class MP3 implements Runnable{
    private String filename;
    private Player player;

    // empty constructor
    public MP3() {
    }
   
    // Set the fileName to play
    public void fileToPlay(String filename){
     this.filename = filename;
    }
  
    public void close() {
        if (player != null) player.close();
    }

@Override
public void run() {
  // Thread that plays any .mp3 file
  //this.filename = filename;
        try {
            FileInputStream fis     = new FileInputStream(filename);
            BufferedInputStream bis = new BufferedInputStream(fis);
            player = new Player(bis);
        }
        catch (Exception e) {
            System.out.println("Problem playing file " + filename);
            System.out.println(e);
        }

        // run in new thread to play in background
        new Thread() {
            public void run() {
                try { player.play(); }
                catch (Exception e) { System.out.println(e); }
            }
        }.start();
}


    // test client
    /*public static void main(String[] args) {
        //String filename = args[0];
        System.out.println(filename.get("10"));
        MP3 mp3 = new MP3();
        mp3.play(filename.get(args[0]));
    }*/

}

Step 4: Pressure Sensors

Materials Needed

Any kind of stickytape will work, but it can be nice to use a duct (gaffer) tape for its flexibility and robustness. You will find a wide selection of tapes at your local hardware, office supply, and stationary stores.

Velostat by 3M from http://www.lessemf.com/plastic.html

Conductive thread and conductive fabric from http://www.lessemf.com/fabric.html


About

The pressure sensors act like switches when some kind of a pressure is exerted on their surface. This can be used to identify the user's interaction with the different waypoints and trigger the voice clues from the PC.


Instructions

https://www.instructables.com/id/Stickytape-Sensors/  is a great instructable illustrating how to make our own affordable pressure sensors. We followed this instructable heavily in building our pressure sensors, so if you would like more information, please refer back to this instructable.  We built the sensors to be 3 in x 1 in.

First, we cut strips of velostat (about 2.5 in long), conductive thread (about 3 in long), and conductive fabric (about 1 in long).  Next, cut the individual strips of stickytape, also 3 inches long.  We recommend cutting these one at a time, since they can become very sticky and stick to other things.  

Place the conductive thread on the stickytape, with one end sticking slightly off the edge of the stickytape.  Then cover the end with conductive fabric.   Make sure the conductive fabric is half off the stickytape, or at least off enough to be able to grab the end with an alligator clamp.  Cover the conductive thread with the velostat.

Make another one of these, exactly the same.  Then, stick the two pieces together, inner sides together and with the conductive thread sticking out on either end. We made 10, but depending on your project, you may want to make more or less.


Basic testing of the pressure sensors:

They can be connected and tested with a simple circuit and arduino code mentioned here.

Probably the most important thing to remember is that you may need to tune pressure thresholds in the arduino code, depending on how heavy the landmarks objects and the navigation tools are.  We will talk more on this as we finish building the map.

Step 5: Printing Landmark Objects

Materials

3D printed objects
Plastic primer and acrylic paints

Styrofoam blocks
White acrylic base for gluing the Hollywood letters

4 x Basswood sheet for space center compounds each of size 2.5 in x 0.8 in x 0.125 in

Golf ball
Aluminum foil

2 x Small rectangular foams for the base of liberty  - 0.9 in x 0.8 in x 0.7 in,   1.5 in x 1.4 in x 0.2 in


Overview

For all of these objects, we estimated what size we wanted them printed.  As stated before, one of our main problems was scability and printing the objects a good size relative to the map.  Unfortunately at this point we did not have the map printed, so we were estimating how big we wanted the objects, which caused some problems later in the project.  We would recommend printing the map BEFORE printing the objects, that way, there you will have a clearer idea of what size the object need to be.

After we printed each of the objects, we needed to paint them to look like the landmarks.  It was very important to prime them first, since the 3D material is very close to plastic and acrylic paint will have a hard time adhering to the objects without it.


Hollywood Sign

The model can be found at Google's Sketchup Warehouse.

Once the model was printed, we glued it on the acrylic base for stability.  We primed and painted it white to match the real sign.

The mountains the sign sits on was sculptured using a hot wire cutter. The dimensions are approximately 7.8 in x 3.1 in x 3.1 in.  We then primed and painted the styrofoam with a store-bought landscaping kit. We also cemented fine turf to give it a more realistic 3D look.

The Hollywood sign was then attached to the mountains with glue.


Space Center

The rocket model can be found at Turbosquid.

This rocket model is scaled to a dimension of  0.7 in x  0.7 in x 6 in and painted to imagination.  Since this was a very simple model rocket, we did not try to replicate any real-life object.

The compound was made by laser cutting, etching, and painting small pieces of bass wood to look like a brick wall.  These walls were then mounted in a square space on one side of a rectangular acrylic board.  The bottom was painted black and the rocket was glued in the center.  Greenery was added from a landscaping kit to make the other side of the acrylic board look like grass. 

A small sign was also cut and etched from bass wood with a laser cutter and attached outside of the compound.


Disneyworld

The castle model can be found on Google's Sketchup warehouse.

This model is scaled to a dimension of 3.4 in x 3 in x 3.3 in painted to similar to the Disney castle there.  We also tried to replicate the Epcot Center by wrapping a golf ball in crushed aluminum foil.


Statue of Liberty

The model can be found on Thingiverse.

This model is scaled to a dimension of   0.8 in x 0.8 in x  3.4 in and painted a light green color. It is attached to small rectangles of foam (to resemble the citadel of the statue).

Step 6: Building Player Objects

Materials

Glue
Plastic primer and acrylic paint
Wooden sticks - 0.125 in diameter and  1.5 in length
Wooden beads - 0.2 in diameter hole and the bead is 0.45 inch tall
Wooden rectangle pieces - 0.125 in in thickness. The length and width match base of the transport tools


Overview 

These are the player objects, or the transport objects.  They are the pieces that a player will move from landmark to landmark.  We also 3D printed them so we could have freedom in what objects we used, however, they can also be taken from other board games.  Again, we ran into problems sizing the objects and determining how large or small we wanted the objects.  

We painted the objects to look similar to real world objects.  If you choose to do this step, remember, prime the objects first, as acrylic paint wil have a had time sticking the the plactic-like material.

The ground objects were then set on a wooden frame, so they could roll on the map easier. 

3D models for vehicles can be found at these websites:
http://animium.com
http://www.turbosquid.com
http://sketchup.google.com/3dwarehouse/


Car

The model is scaled to a dimension of 2 in x 1 in x 0.9 in and painted to imagination.


Boat/Ferry

The model is scaled to a dimension of 2 in x 0.8 in x 0.5 in and painted to imagination. 

Bus

The model is scaled to a dimension of 2.2 in x 0.8 in x 1.2 in and painted to imagination. 


Plane

The model is scaled to a dimension of 4.9 in x 3.8 in x 0.9 in and painted to imagination. 


Wooden frames

A small rectangular piece of basswood was cut to match the bottom of each object. The four corners of the wood were cut to allow space for the wooden beads as shown in the pictures. Two wooden sticks are glued to the two edges of the rectangle along the length. These act like fixed shafts for the four wheels. The wooden stick needs to be smaller than the diameter of the wooden bead's hole to allow for rolling. Make small wooden disks of diameter slightly larger than the diameter of the wooden bead's hole. This acts like a stopper, preventing the wooden beads to come off from the stick. After the glue dries the beads are attached to the shaft and  the wooden disks are glued to the end of stick as shown in the pictures.

Step 7: Print Map and Place Objects

This was the step we completed half-way through the project, when in hind-signt, should have been completed at the BEGINNING.  


Print the Map

Our first map was about 30' x 15' and much too small for the objects we had completed by this point.  We had to reprint the map to be about 40' x 20'.  Another problem we had with our first map was how grainy it came out.  It was originally a scanned image, but did not scale to a larger size well.  We recommend finding a map or image that is very high-resolution, or something that can be re-scaled easily.  To test our next map image to make sure it would print, we printed it on normal 8.5 x 11 printer paper to make sure it was going to scale to the size we needed.


Place the Objects

This is when we found out that our objects were much too big for the small space we had.  Initially we had five landmarks on the map, but had to remove on of them because of space.  We had to be extremely flexible with our locations at this point because we kept running into sizing problems.    

In the beginning we had the Golden Gate Bridge, the Holloywood Sign, and Disneyland all in California.  Before we started anything, we knew three objects was going to be too much, so we changed Disneyland to Disneyworld.  When we came to this step, we discovered that even two objects were too much for California, so we had to remove the Golden Gate Bridge.  Again, we would like to reiterate that completing this step in the beginning is absolutely necessary and will alleviate many problems later in your project.

Since we ran into this major sizing problem, we offer a solution to it in the next step, though, if you do not have objects too large for your map, then you can skip it.


Place the Sensors

After the objects have been placed, the next step is to place the sensors.  This is as important as, if not more important, than placing the objects on the map since this is where the interactivity comes from.  Again, we ran into problems placing the sensors since they were made to boo too big for the map.  Instead of remaking them, which would have cost too raw materials, we kept them and tried to place them strategically.  

A good thing we found out through this step, however, was that some areas of the map were more empty and could allow more sensors to be placed along the travel path.  This would increase the learning potential for this game and something we definitely wanted to implement.  

We ended up with sensors before and after each landmark and extra sensors along the paths between Seattle and LA, LA and Houston, and two extra sensors between Orlando and New York.

Step 8: Platforms for Objects

Materials

Glue
Black acrylic sheets of various sizes, ours were about 0.125 in thick
Landscaping kit
Wooden dowels of 0.75 in diameter and 4.5 in height


Overview

When we were placing the objects on the map, we noticed that some of the objects were too big and covered the state/city it was located in (namely the Hollywood sign and California).  To compensate for this, we moved the objects on top of acrylic platforms and attached wooden dowels to the bottom.  Holes were drilled in the map (and wood base) where the landmark objects were supposed to be.  This way, only the dowels were sticking out of the map, the state could be seen by the player again, and the platforms acted like a zoomed out version of that location.

If, in the previous step, you did not have this scalability problem, you can skip this step and place the landmark objects directly on the map.


Statue of Liberty

This printed object is glued to a rectangular black acrylic base and a wooden dowel is stuck approximately at the center of mass of the entire object as shown in the pictures.


Space Center

For this object, the wooden dowel was attached directly to the compound base.


Disneyworld

The Epcot Center is also glued to the rectangular acrylic base along with the castle.


Hollywood Sign

The sign is glued to a white acrylic base which is then glued to the top of the mountain as shown.

Step 9: Build the Wood Base

Materials

1/2 in Plywood (or any other wood board) cut to 44.5 in x 29.5
Primer and acrylic/Latex paints
Acrylic sheets about 0.12 in thick
Tenax 7R


Prepare the Board

For our project, we wanted a sturdy board to support all the objects, and so it could be kept in the lab we were working in without worrying about it getting beat up.  We chose 1/2 inch plywood because it would not get bent or broken and would not warp.  If another base material works for you, use it, we also thought about using particle board, cardboard, and MDF for the project, any of these would have worked.

We then routered the edges, so they looked nicer and would not cause as many splinters.  We sanded the edges and the faces to give it a smooth surface to work off of.  

Using the printed map, we estimated where we wanted it to be placed and marked the placement of the landmarks and country borders.  We then free-handed the remaining country borders in pencil.

We primed the wood and painted it.  The center was left un-painted since that was where the map would be placed.


Cut Holes

Based on where the board was marked for the landmarks, we drilled holes for the wooden dowels to fit through.  The pressure sensors were placed on the board and holes were drilled for the conductive material to fit through the poke out the other side.


Make Support Structures

Support structures are essentially laser cut out of wood. http://boxmaker.rahulbotics.com/ is an excellent site where a pdf file for laser cutting can be generated in few seconds, without the pain of manually designing. The pdf file can be directly used in Adobe Illustrator and the sides of the box are laser cut from acrylic. Tenax 7R is a strong bonding material and can be used to glue the pieces. Tenax 7R solution is applied on the edges of two pieces using a paint brush and held together for 20 seconds.

Step 10: Navigation Paths

Materials

Bass wood for road
Acrylic paint
Wood glue


Approximate Road Placement

We looked at a map of interstate highways to get an idea of where we wanted the roads to be.  The road from LA to Houston was a representation of I-10, and the road from Orlando to New York was going to be I-95.  These didn't have to be exact representations of the highways, since this was going to be a game, but we wanted to make sure the roads would still hit the same major cities as the real-life highway.


Build the Roads

The shape of the roads were roughly traced on a thin piece of bass wood.  Make sure to measure the width of the road, so your player objects can fit on it comfortably.  The wood was then cut using a scroll saw, to get the curvy shape.  

The roads are painted black with border white lines and a central yellow line to look more like a road.

We then glued the roads on the map to keep them in place.

Also, after you have added the roads over the map, we would recommend re-testing the pressure sensors to make sure the weight of the map and road wood is not too much for the sensors.


Step 11: Sound Content

Creating the Instructions and Content

Choosing the right content is important to make the game more interesting and also educative. The main objective of this project is to make the kids learn some places in a fun way.  Listed below are some websites that are resourceful, to find information about famous places in the US.

http://www.50states.com/facts/#.UMmspHdUGSo
http://www.factmonster.com/ipka/A0770175.html
http://thegatheringplacehome.myfastforum.org/archive/interesting-facts-about-each-state-in-the-u.s.__o_t__t_3978.html

Collect interesting facts and record them in .mp3 file format. Our code has the files named like "1.mp3", "2.mp3", "3.mp3",... representing the sensor numbers in right order of navigation, so remember this if you chose to rename the files.


Seattle

You are in Seattle, Washington on the west coast. Seattle is well known for its rainy weather. The forests of the Olympic Peninsula are the only rainforests in the continental United States. Starbucks, Nordstrom and Amazon.com were all founded and headquartered in Seattle. Did you know that the World’s first gas station opened in 1907 on East Marginal Way?  After grabbing a hot drink at a starbucks to go with the light rain drizzle, let’s head to Seattle Pier 52, the busiest ferry terminal in the U.S, to catch a ferry on the Pacific coast to LA.


Pacific Coast

As you sail along the Pacific coast, take a moment to appreciate the beauty of the biggest and the deepest ocean in the World. Did you know that the size of the Pacific Ocean is bigger than the total landmass on Earth? As you pass the coast near San Francisco bay, be on the lookout for whale sightings. The bay area is home to one of the largest collection of endangered whales in the world.


Los Angeles (Hollywood Sign)

You have arrived in the port of Los Angeles, one of the busiest in the World. If Los Angeles county were to be a country, it will have the 18th largest economy in the world. Los Angeles is world famous for its proximity to Hollywood, one of its districts.  Visit the Hollywood sign and take pictures. In 1939, four thousand twenty-watt bulbs were put to illuminate the signboard. Now, take a bus on I 10 East to Houston, Texas.”


Phoenix

You are passing through Phoenix, Arizonia, the 5th largest city in the US.  Arizona is also the 48th state.The Grand Canyon is considered to be one of the 7 natural wonders of the world and is in Arizonia.  It is the second largest canyon in the world.


New Mexico

You are passing through New Mexico, the land of enchantment.  Each October Albuquerque hosts the world's largest international hot air balloon festia.  The Navajo Nation, the US's largest Native American group is also in New Mexico.


Houston (Space Center)

You have arrived in Houston, home to the NASA Johnson Space Center, focal point for U.S space program. Numerous space expeditions have been launched from this center, including the first moon mission Apollo 11. Houston was the first word spoken from the moon, when Neil Armstrong said, ‘Houston, Tranquility Base here. The Eagle has landed’. Take a tour of the space center and interact with the scientists and astronauts to learn interesting things about the space exploration.  Then head to the houston airport to catch the flight to Orlando


Orlando (Disneyworld)

Disneyworld at Orlando attracts more visitors than any other amusement park in the U.S. Florida is famous for alligators and interestingly, the sports drink ‘Gatorade’ originated at the University of Florida, named after the school’s mascot, the Gators. Enjoy Disneyworld and all the thrills it has to offer.  From here, rent a car, and take I-95 North, driving along the east coast of the U.S


North Carolina/Georgia

You are passing through North Carolina and Georgia. North Carolina leads the nation in furniture, brick, and textile production. High Point, North Carolina is known as the furniture capital of the World. Georgia is the nations number one producer of the three Ps--peanuts, pecans, and peaches. The first steamship to cross the Atlantic Ocean set sailed from Georgia.”


Virginia/DC

Virginia was the birth place of two important founding fathers, George Washington and Thomas Jefferson. You are passing by Washington DC, the capital of the US, where the president lives with his family in the White House. The city as named after George Washington and the District of Columbia after Christopher Columbus.  In Arlington you can see the Pentagon, headquarters of the US Department of Defense.


New York (Statue of Liberty)

You have reached New york city, first capital of the US, before Washington DC was built. Head to Ellis Island and admire the Statue of Liberty on the backdrop of the New York skyline. The seven spikes on the Statue of Liberty's crown represent either the seven oceans or the seven continents. Did you know why the statue is green?  It is because it was made out of copper, which interacts with the oxygen in the air to form copper nitrate which is green in color.  Finally, obtain your visa and head out of the country to continue your adventures.

Step 12: Building the Circuit

Materials

Two breadboards (details)
Jumper wires
10 x 10 K resistors
20 x Alligator clips
Arduino Mega
USB cable for Arduino to connect to PC/MAC


Setting Up

The pressure sensors are placed on the wooden board as shown in the pictures. The conductive  fabric on both ends of each sensor goes through the holes to the bottom of the board.   One end of an alligator clip was attached to each piece of fabric.  The other end of the alligator clip was attached long wire.  One side of the pressure sensor was grounded while the other end was put in the circuit board, which went into the analog input.

Here is a view from the sawhorses we had it on, so you can see how everything was constructed.  However, the final project will be setting on the support blocks we made in Step 9, so everything is nicely hidden from view.

To keep track of the sensors and all the wires going in and out of the Arduino, we recommend labeling the wires by wrapping a small piece of tape with their numbers written on them.


Step 13: Landmark Banners, Road Signs, and Extra Objects

Materials

Transparent acrylic bases for the banners/signs -  0.2 in thickness
Sucker sticks
Basswood for banners


Landmark Banners

Making banners is really simple. Refer to the pictures in this step to make one. The text or logo is color printed on a paper to exact dimensions needed. The logo is stuck to a rectangular wooden piece of same size. A small rectangular acrylic base with two holes near each end is laser cut. The holes are 4mm in diameter to allow sucker sticks to pass through. A pair of sucker sticks are cut to desired lengths and one end of them is stuck to the wooden banner and the other end is dropped into the hole in transparent acrylic base.


Road Signs

Making banners is really simple. Refer to the pictures in this step to make one. The text or logo is color printed on a paper to exact dimensions needed. The logo is stuck to a rectangular wooden piece of same size. A small rectangular acrylic base with two holes near each end is laser cut. The holes are 4mm in diameter to allow sucker sticks to pass through. A pair of sucker sticks are cut to desired lengths and one end of them is stuck to the wooden banner and the other end is dropped into the hole in transparent acrylic base.

Step 14: Complete List of Materials and Tools Needed

Map & Board:
    A large wooden board of size      44.5 in x 29.5 in x 0.5 in  . Available in all hardware shops
    Primer to prepare the board for painting
    Clamps to hold the map to the board
    Acrylic/Latex paints
    Paint brushes
    Acrylic sheets ~ 0.12 in thick
    Tenax 7R

Landmark 3d objects:
    Primer to paint the 3d printed objects
    Acrylic paints
    2 x Small rectangular foams for the base of liberty  - 0.9 in x 0.8 in x 0.7 in,   1.5 in x 1.4 in x 0.2 in
    Glue - Devcon
    4 x Basswood sheet for space center compounds each of size 2.5 in x 0.8 in x 0.125 in
    Landscaping kit
    Golf ball
    Aluminum foil
    Black acrylic sheets for base for all the 3d objects of thickness 0.125 in. The length and width can be matched to the individaul 3d objects
    Wooden dowels of 0.75 in diameter and 4.5 in height
    Styrofoam blocks
    Sucker sticks
    White acrylic base for gluing the letters "HOLLYWOOD"
    Transparent acrylic bases for the banners -  0.2 in thickness 
   
Navigation Tools:
    Glue - Devcon
    Primer to paint 3d objects
    Acrylic paints
    Wooden sticks - 0.125 in diameter and  1.5 in length
    Wooden beads - 0.2 in diameter hole and the bead is 0.45 inch tall
    Wooden rectangle pieces - 0.125 in in thickness. The length and width match base of the transport tools
   
Roads & Banners:
    Basswood for raod (dimensions)
    Acrylic paints - Black, yellow, white
    Basswood for banners
    Transparent acrylic bases for the banners - 0.2 in thickness
    Glue - Wood glue

Pressure Sensors:
    Any kind of stickytape will work, but it can be nice to use a duct (gaffer) tape for its flexibility and robustness. You will find a wide selection of tapes at your local hardware, office supply store and stationary stores.
    Velostat by 3M from http://www.lessemf.com/plastic.html
    Conductive thread from http://www.lessemf.com/fabric.html
    Conductive fabric from http://www.lessemf.com/fabric.html

Building circuit:
    Two breadboards (details)
    Jumper wires
    10 x 10 K resistors
    20 x Alligator clips
    Arduino Mega
    USB cable for Arduino to connect to PC/MAC
   

Tools:
    Sanding machine
    Dremmel
    Scissors
    Laser cutter
    3D Printer
    Hot wire Styrofoam cutter
    Color Printer
    Band saw
    Scroll saw
    Knives to cut the sucker sticks


Software used:
    Adobe Illustrator
    Adobe reader
    Netfabb studio/ Google sketchup/ Autodesk123d for 3d modelling

Step 15: Further Extensions

This is a highly extendable project. We can add more elements to make the map more rich, interactive and educative. Following are some ideas that we had in mind for version 1.x. Due to limited time we had to stop ourselves with just a prototype.

Ideas:
1) Add multiple maps.
2) Reaching the exit point should trigger change in scene (to a different map). This is very much dependent on the size of the map.
3) Plug and play different 3D object in the same map to make it more interesting every time.
4) Give hints by blinking leds.
5) Add more terrains to the map illustrating the geography of the country.
6) Add major rivers.
7) Have extra objects that decorate the map. For example skyscrapers to denote downtown of a city.
8) Ensure that player uses the right tool.
9) Give points or incentives to motivate player.

Step 16: Let's Play