|
UserDocument
breadcrumbs is an Arduino GPS tracking project. It's goal is to log GPS position information to the Arduino's on-board EEPROM. With only 512 bytes of storage breadcrumbs stores only heading information. Even more space is saved by scaling the heading value and only making a measurement after a pre-set distance has been traversed. Using this method breadcrumbs can store several kilometres of a journey. breadcrumbs has the ability to read back stored GPS data translating it to KML sentences via the Arduino serial port. This output can be captured to file from where it can be read directly by Google Earth. breadcrumbs mounted to a bicycle
breadcrumbs is an Arduino microcontroller project. Much more information about Arduino is available at the excellent Arduino website The only other piece of hardware required to build breadcrumbs is a GPS receiver. The GPS receiver is connected to the Arduino with just one wire! Like most GPS projects breadcrumbs reads NMEA data via a serial connection. GPS modules of this kind such as the EM-401 are easily available from stores such as Sparkfun. Refer to the block diagram and also to the Arduino GPS tutorial here for connection details. Here's my board, the GPS receiver mounted on a small piece of veroboard
breadcrumbs works by extracting latitude and longitude information from the NMEA stream and calculating the angle of heading relative to north of travel. Whilst it's true that storing the NMEA data directly would be preferable with only 512 bytes of on-board storage, the Arduino would quickly run out of space on it's on board EEPROM. This example of NMEA data demontrates: $GPGGA,184943.000,3409.0533,N,11817.0188,W,1,07,1.4,144.1,M,-33.5,M,,0000*63 $GPRMC,184943.000,A,3409.0533,N,11817.0188,W,0.00,,200306,,,A*62 $GPVTG,,T,,M,0.00,N,0.0,K,A*13 $GPGGA,184944.000,3409.0533,N,11817.0188,W,1,07,1.4,144.1,M,-33.5,M,,0000*64 $GPRMC,184944.000,A,3409.0533,N,11817.0188,W,0.00,,200306,,,A*65 $GPVTG,,T,,M,0.00,N,0.0,K,A*13 $GPGGA,184945.000,3409.0533,N,11817.0188,W,1,07,1.4,144.2,M,-33.5,M,,0000*66 $GPRMC,184945.000,A,3409.0533,N,11817.0188,W,0.00,,200306,,,A*64 $GPVTG,,T,,M,0.00,N,0.0,K,A*13 The above NMEA stream would require 526 bytes to store (more space than the Arduino EEPROM has available) and might represent only a very small movement over a couple of seconds of GPS activity. To overcome this restriction breadcrumbs stores only the direction of travel and makes a record only after a set distance has been traversed. In fact by lowering the resolution of the heading recorded we can achieve an impressive compression ratio of 1600:1 over NMEA. We do of course lose the temporal and elevation information of raw NMEA as well as accuracy but we can now store several kilometers of GPS tracking data in just 512 bytes. Once a GPS track is stored in EEPROM by changing the pull down configuration of pin 5 of the Arduino breadcrumbs will transform into an GPS track playback device. The previously stored GPS track will be played back from EEPROM to the Arduino's serial port as KML. Once saved to file the KML information can be views directly by Google Earth. The KML would usually be captured directly from the Arduino IDE using its serial console via USB. Here's an example KML file generated by breadcrumbs: breadcrumbs.kml
|
Sign in to add a comment