The 2009 Maker Faire has come and gone, but the videos remain: see the Marauders and Map.
Any sufficiently advanced technology is indistinguishable from magic.
-- Arthur C Clarke
This project aims to give an introductory push towards RF technology for the Maker who is interested in wireless communications, and wants to get a deeper understanding of how it actually works, instead of simply using pre-packaged end-to-end links such as Bluetooth, WiFi, or Zigbee.
The Marauders Map project is a mash-up of the ham radio APRS system and the Marauders Map of Harry Potter fame, in which footsteps of characters in the novel are seen on a magical paper map. Instead of magic, we use GPS and low-powered transmitters for the Marauders, and a companion receiver and laptop for a Map. The map shows the location of the Marauders on the fairground in realtime.
The Marauders Map project has two major components, each of which is made of other parts:
A Marauder is an APRS-style tracker device, made of the following components:
The Marauder microcontroller runs a Picaxe 08M program which is customized with the individual transmiter ID and which is tuned to the exact output format of the attached GPS. (Marauder Software)
The transmitter output power is < 10mW, with a low duty-cycle, operating as a Part 15 device.
The cheapest option for a GPS is to buy an OEM module, such as one made by Trimble, Rockwell, or Motorola. Often these can be had for $10, or even less. However, their low cost comes at a price. While the output data voltage levels (TTL) are ideally suited for microcontroller interfacing, modules without battery backup can take a very long time to acquire satellites. Furthermore, sensitivity and accuracy on units a decade or more old pales in comparison to a modern Sirf-III or Trimble Copernicus chip. Finally, the older GPS modules pull 200mA to 250mA, which can quickly drain a battery.
I built interfaces for the Trimble CM3A module, the Rockwell TU-205 module, and the Garmin eTrex Legend hand-held hiking GPS. The eTrex won in precision, startup time, ease of interface, and battery usage. The CM3A units won on cost, and came in second in precision, but I never did get the battery backup working properly, so they took hours to sync up each time. The Rockwell modules seemed to sync up more quickly, but had poor precision; perhaps the active antennas I used for them weren't suited to the purpose.
For my next Marauder, I picked an Argent Data ADS-GM1 GPS Receiver module. It's the same size as the Active GPS Antenna I have, and has tremendous precision and excellent startup time. It has RS232 out at the connector, or TTL out in the cable. It synchronizes quickly and works well, and is an excellent choice for full ham radio APRS as well.
Each GPS variety required a different interface board because of its unique power and data connectors, and data output levels (TTL or RS232). Each of the modules also required a 7805 voltage regulator, with a heat sink. The Garmin eTrex required a two-resistor level shifting circuit copied from the Picaxe manual, but fortunately carried its own power supply. The pinouts are documented, but the connector is specialized, though the Garmin data cable will work.
An antenna picks up the 433.92 Mhz signal, which receiver converts into off-on pulses, which are sent to the Picaxe 08m microcontroller serial input. The antenna is simply a vertical piece of wire tuned to be 1/4 wavelength for 433.92 Mhz, approximately 17cm. This configuration is known as a Marconi Antenna, or Monopole (as oppoosed to the Dipole or Hertz configuration), and it requires a ground plane for most efficient transmission. Luckly, at these frequencies, capacitive coupling and stray wires provide enough ground return for the signal that an explicit wire is not necessary.
Decoder software converts the incoming off-on pulses from the receier into the strings for latitude, longitude, and Marauder ID, and outputs this data to an RS232 connection to a laptop.
The laptop runs a Python program which receives the position and ID data from the Receiver and stores it. The program also functions as a web server, and provides the most recent position for each ID in Google Maps KML (XML) format.
The Google Maps search box lets you type in the URL of a KML file, and once you do, it retrieves it and displays the IDs at their positions.
The following people provided materials, advice, or published information that helped. I want to thank them all here.