| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

View
 

GeoShield

Page history last edited by sarith.ong@liquidware.com 9 years, 2 months ago

 

A lot of folks I met at Maker Faires asked me about an integrated GPS shield – not just a GPS module, but something that could be readily mounted to provide a direct location-based read-out to a computer or a handheld screen.

 

As many of these projects involved autonomous vehicles (land, sea, or air), they typically included 3-axis accelerometers and digital compasses as well.

Thus the GeoShield was born. As the name suggests, it encompasses multiple “earth-related” functions: a high-performance, 66 channel GPS module with antenna included, a low-power digital compass, and a sensitive 3-axis accelerometer. Designed to get projects going quickly, the GeoShield also comes with its own library in the Antipasto Arduino IDE that makes data output to PC (over serial) or the TouchShield Slide a cinch.

 

The GeoShield efficiently brings out the 3 sensors to different Arduino pins. The Locosys MC-1513 GPS module communicates via a UART protocol over any two pins of your choice, while the Honeywell HMC6352 uses digital pins to transmit data on an I2C protocol. The STMicro LIS302SG 3-axis accelerometer is an analog sensor, and makes use of the analog pins on the Arduino.

 

The GeoShield itself has built-in 5V tolerant I/O (to prevent chip-frying), and is a perfect drop-in solution for any variety of projects involving location-based processes. While the MC-1513 GPS contains a built-in digital compass function, the HMC6352 is included for rapid directional updating, ideal for robotic aerial vehicles. For debugging, status output, and just plain fun, there are 4 user programmable LEDs as well.

 

It comes in two flavors. For higher-performance and direction-dependent applications, the GeoShield Enhanced edition has the GPS, accelerometer, as well as a discrete digital compass module on board. The GeoShield Lite carries just the GPS module and 3-axis accelerometer, without a separate compass.

 

 

Applications

  • Prototype for location-based services
  • Data logging for remote or autonomous vehicle navigation
  • Aerial navigation
  • Marine navigation

 

System Specifications

  • Arduino shield form factor
  • 3.3V – 5V operation
  • 5V tolerant I/O
  • Forward sensor data to any Arduino pins

 

Accelerometer

  • High-sensitivity accelerometer
  • Filtered output for fast, accurate readings
  • Tuned for up to 1.5G acceleration ranges

 

Digital Compass Sensor

  • 100ms update rate
  • Magnetic field calibration mode

 

GPS Sensor

  • Embedded high-sensitivity active antenna
  • Serial Rx/Tx LEDs

 

LEDs

  • Power LED
  • User programmable LEDs on Arduino pins 10, 11, 12, 13
  • Set threshold indicators for sensors

 

Resources 

 

Software library

  • Features
    • The library is compatible with Arduino Diecimila, Mega/2560, Duemilanove, and Uno hardware
    • Allows crafting custom NMEA GPS messages
    • Features non-blocking serial forwarding
    • Serial forwarding allows connections to stand alone embedded modules or Arduino displays eg. TouchShield
    • On-screen compass magnetic calibration wizard
  • Downloadable library for Arduino and Antipasto IDE is here   
  • Example usage:

 

/****************************
 * PrintGeoShield
 *  An example sketch for the Liquidware GeoShield
 *  that demonstrates how to forward GPS, Compass,
 *  and 3-axis accelerometer data to the PC via serial @ 57600 baud
 *
 *  Learn more at: http://www.liquidware.com/category/Sensors
 *****************************/
#include <Wire.h>
#include <LibCompass.h>
#include <SoftwareSerial_NB.h>
#include <LibGeoShield.h>

LibGeoShield geo = LibGeoShield(0);
char out[100];

void setup() {
   Serial.begin(57600);  //Open a serial connection to the PC @ 57600 baud
}

void loop() {

   /* Print the GPS data */
   Serial.print(geo.readGPS());

   /* Print the Compass heading, Accel X, Accel Y, Accel Z data */
   sprintf(out, "$GEO,H%d,X%d,Y%d,Z%d\n",
                geo.readCompass(),
                geo.readAccelX(),
                geo.readAccelY(),
                geo.readAccelZ());

   Serial.print(out);
}

 

 

 

 

 

Comments (0)

You don't have permission to comment on this page.