Our goal in this step-by-step instructable is to build a device you can clip to your belt and wear throughout the day. This device will log data that, when downloaded to a back-end server system, will provide a report showing the location history of your day along with the breakdown of how much time you spent indoors and outdoors.
A quick rundown of how the system will operate is as follows:
The accelerometer constantly looks to see if the user is in motion. While the user is at rest, the unit takes a GPS and temperature reading every 15 minutes. When motion is detected the GPS unit is turned on. After 2-minutes passes the GPS unit and thermometer again take samples. If motion was detected during that two minute period the 2-minute wait and sample period repeats until the user is at rest again. This is done in order to conserve energy.
All the GPS and temperature data is stored on the SD card. Upon pushing the button on the front of the unit, all data is off-loaded (requires a USB connection to a laptop) and sent to a back end server system for analysis. The backend algorithm (coded in Java) extracts the useful features from the data (such as GPS error, # satellites and temperature) to build a decision tree that classifies the location as indoor or outdoor. The algorithm also utilizes the assistance of online public weather API's as well a GIS web service which tells if lat/long points are within a building or not, to produce a report for the user. The report shows the amount of time (discrete periods of the day) ,and location history along with whether the user was inside or outside.
The arduino code, backend algorithm code as well as the GIS server can be found at https://github.com/pretsb/838fproject
This requires the following equipment:
Arduino WiFi Shield
GPS Unit (LS20031)
2.2K Ohm resister
9V Battery pack
Adafruit Arduino Case
This instructable was made as part of the final project requirement in the
CS graduate course "Tangible Interactive Computing" at the University of
Maryland, College Park taught by Professor Jon Froehlich. The course
focused on exploring the materiality of interactive computing and, in the
words of Hiroshii Ishii, sought to "seamlessly couple the dual worlds of
bits and atoms." Please see http://cmsc838f-f12.wikispaces.com/ for more
A video tour of the project as well as a quick overview can be seen here:
We will use the following shell from Adafruit to encase the project http://www.adafruit.com/products/337 This shell can be used for many other projects and is designed to hold an Arduino and an Ethernet shield within the case. The WiFi shield must be a touch wider than the Ethernet shield as the shell barely screws together tight when you put it together with both devices in there. Once you place wiring into the female pins there is a small amount of pressure being applied to the Arduino itself, but I do not think this pressure will cause any damage to the shell or the Arduino.
The shell has a nice few screw hole designed to hold the Arduino. We'll screw the Uno itself to the shell using the enclosed screws and move on....