GPS Shield With SD Card Slot for Arduino V2.0 A

From LinkSprite Playgound
Revision as of 07:08, 18 February 2014 by Alvin (talk | contribs) (How to buy)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Introduction

This GPS shield is designed for Arduino Uno. This shield integrates SR-92 GPS module and a SD card slot. As the SR-92 module and SD works with 3.3V, a 3.3V power supply module is embedded to the shield. This shield can work independently from Arduino, and you can use the PC to receive the data from the board. User can use a serial terminal in PC to read the SR-92 data and read/write to the SD card.


Sd gps shield.jpg

Features

  • On-board SD card slot can be used to data log.
  • Easy adoption with best performance
  • Integrated antenna and EMC protection
  • Built-in backup battery allowing hot/warm starts and better performance
  • No external component demand, just connect and use.
  • Minimum RF and EMI efforts
  • Small size of 18 (W) x 21 (L) x 7 (H) (mm) with patch antenna of 18x18x4mm.
  • Fully implementation of ultra-high performance SiRFstarIII single chip architecture
  • High tracking sensitivity of -159dBm
  • Low power consumption of 40mA at full tracking
  • Hardware power saving control pin allowing power off GPS via GPIO

Application Ideas

Cautions

The warnings and wrong operations possible cause dangerous.

Schematic

GPS Shield with SD Card Slot for Arduino V2.0 Schematic in PDF

Specification

Pin definition and Rating

The following material are for SR92 and are for reference only:

This GPS receiver comes with embedded antenna and only needs 5 pins to talk to your Arduino or MCU.

  • Pin 1: GND Ground
  • Pin 2: VCC Power supply of 3.3 ~ 3.5 VDC
  • Pin 3: TX Port A serial data output (GPS out); N-8-1, NMEA v3.00 output
  • Pin 4: RX Port A serial data input (GPS in); N-8-1, accepts commands from external applications, e.g. SiRFDemo.
  • Pin 5: 5 PWR_CTRL Hardware controlled power saving pin.
If this function is used, it is usually connected to a GPIO pin of a micro-processor.
"Low": for normal run
"High" or floating: turn off VCC for power saving
Tie it to low if this pin is not used.

Mechanic Dimensions

Usage


Hardware Installation

  • Software Serial Port Configuration:
    • Short TX and D2 of J2.
    • Short RX and D3 of J1.
  • Hardware Serial Port Configuration:
    • Short TX and MRX of J2.
    • Short RX and MTX of J1.


Programming

Sample code for Hard Serial Port:

<syntaxhighlight lang="c">

  1. include <SD.h>
  2. include <SoftwareSerial.h>

File myFile; const int chipSelect = 10; SoftwareSerial mySerial = SoftwareSerial(4,3);

unsigned char inByte;

void setup() {

 pinMode(4, INPUT);
 pinMode(3, OUTPUT);
 
 pinMode(2, OUTPUT);
 pinMode(6, OUTPUT);
 digitalWrite(2, LOW); 
 digitalWrite(6, LOW); 

///////////////////UART////////////////////////

 mySerial.begin(9600);
 Serial.begin(9600);
 Serial.println("Initializing SD card...");

////////////////////SD_INITIAL///////////////////////////

 if (!SD.begin(chipSelect)) 
 {
   Serial.println("initialization failed, or not present");
   return;
 }
 else
 {
   Serial.println("initialization done.");
 }

//////////////////////create/////////////

 if (SD.exists("example.txt")) 
 {
   Serial.println("example.txt exists.");
 }
 else 
 {
   Serial.println("example.txt doesn't exist.");
   Serial.println("Creating example.txt...");
   myFile = SD.open("example.txt", FILE_WRITE);
   myFile.close();
   
   if (SD.exists("example.txt")) 
   {
     Serial.println("example.txt create success!");
   }
   else 
   {
     Serial.println("example.txt create failed!");  
     return;
   }
 }
  /////////////////////////write////////////////////////
 myFile = SD.open("example.txt", FILE_WRITE);
 if (myFile) 
 {
   Serial.println("Writing to example.txt...");

// myFile.println("testing 1, 2, 3.");

   myFile.close();
   Serial.println("done.");
 } 
 else 
 {
   Serial.println("error opening example.txt");
 }
   ////////////////////////read/////////////////////////
 myFile = SD.open("example.txt");
 if (myFile) 
 {
   Serial.println("read example.txt:");
   while (myFile.available()) 
   {
     Serial.write(myFile.read());
   }
   myFile.close();
 } 
 else 
 {
   Serial.println("error opening example.txt");
 }
///////////////////////Removing//////////////////////////

/*Serial.println("Removing example.txt...");

 if(SD.remove("example.txt"))
 {
   Serial.println("success!.");
 }
 else
 {
   Serial.println("failed");
 }
 if (SD.exists("example.txt")){ 
   Serial.println("Removing example.txt failed!.");
 }
 else {
   Serial.println("Removing example.txt success!");  
 }
*/
  
  ////////////////////////////////////////////////

// myFile = SD.open("example.txt", FILE_WRITE);

  // Serial.end();
   //digitalWrite(5, LOW); 

}

/////////////////////////////////////////////////
/////////////////////////////////////////////////

void loop() {

 while(1)
 {
myFile = SD.open("example.txt", FILE_WRITE);
while(Serial.available()) 
 {
   inByte = Serial.read();
   myFile.print(inByte);
 }
 myFile.close();

} }

</syntaxhighlight>

Software Serial sample program:

<syntaxhighlight lang="c">

  1. include <SD.h>
  2. include <NewSoftSerial.h>

File myFile; const int chipSelect = 10; NewSoftSerial mySerial(2, 3);

unsigned char inByte;

void setup() {

 pinMode(6, OUTPUT);
 digitalWrite(6, LOW); 

///////////////////UART////////////////////////

 mySerial.begin(9600);
 Serial.begin(9600);
 Serial.println("Initializing SD card...");

////////////////////SD_INITIAL///////////////////////////

 if (!SD.begin(chipSelect)) 
 {
   Serial.println("initialization failed, or not present");
   return;
 }
 else
 {
   Serial.println("initialization done.");
 }

//////////////////////create/////////////

 if (SD.exists("example.txt")) 
 {
   Serial.println("example.txt exists.");
 }
 else 
 {
   Serial.println("example.txt doesn't exist.");
   Serial.println("Creating example.txt...");
   myFile = SD.open("example.txt", FILE_WRITE);
   myFile.close();
   
   if (SD.exists("example.txt")) 
   {
     Serial.println("example.txt create success!");
   }
   else 
   {
     Serial.println("example.txt create failed!");  
     return;
   }
 }
  /////////////////////////write////////////////////////
 myFile = SD.open("example.txt", FILE_WRITE);
 if (myFile) 
 {
   Serial.println("Writing to example.txt...");

// myFile.println("testing 1, 2, 3.");

   myFile.close();
   Serial.println("done.");
 } 
 else 
 {
   Serial.println("error opening example.txt");
 }
   ////////////////////////read/////////////////////////
 myFile = SD.open("example.txt");
 if (myFile) 
 {
   Serial.println("read example.txt:");
   while (myFile.available()) 
   {
     Serial.write(myFile.read());
   }
   myFile.close();
 } 
 else 
 {
   Serial.println("error opening example.txt");
 }
///////////////////////Removing//////////////////////////

/*Serial.println("Removing example.txt...");

 if(SD.remove("example.txt"))
 {
   Serial.println("success!.");
 }
 else
 {
   Serial.println("failed");
 }
 if (SD.exists("example.txt")){ 
   Serial.println("Removing example.txt failed!.");
 }
 else {
   Serial.println("Removing example.txt success!");  
 }
*/
  
  ////////////////////////////////////////////////

// myFile = SD.open("example.txt", FILE_WRITE);

  // Serial.end();
   //digitalWrite(5, LOW); 

}

/////////////////////////////////////////////////
/////////////////////////////////////////////////

void loop() {

 while(1)
 {
myFile = SD.open("example.txt", FILE_WRITE);
while(mySerial.available()) 
 {
   inByte = mySerial.read();
   myFile.print(inByte);
 }
 myFile.close();

} } </syntaxhighlight>

FAQ

Please list your question here:

Support

If you have questions or other better design ideas, you can go to our forum to discuss or creat a ticket for your issue at linksprite support.

Resources

How to buy

Here to buy Shield With SD Card Slot V2.0 A for Arduino on store

See Also

Other related products and resources.

Licensing

This documentation is licensed under the Creative Commons Attribution-ShareAlike License 3.0 Source code and libraries are licensed under GPL/LGPL, see source code files for details.