Pentru a detecta locatia in are ne aflam noi sau montajul dorit vom volosi un receptor GPS realizat cu ajutorul modulului Neo-6M.
Acest modul se alimenteaza cu +5V si foloseste pentru conexiune doar 2 pini.
Pretul acestui modul este de 40 lei si se poate cumpara de aici.
Schema de conexiuni a acestui modul cu Arduino este urmatoarea:
Arduino --- Neo-6M
VCC - VCC
D2 - Tx
D3 - Rx
GND - GND
De asemenea vom avea nevoie de libraria TinyGPSPlus.
Poza cu montajul este mai jos.


Sketchul folosit pentru testarea modulului este cel de mai jos:
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
int Rx = 2;
int Tx = 3;
int GPSBaud = 9600;
TinyGPSPlus gps;
SoftwareSerial gpsSerial(Rx, Tx);
void setup()
{
Serial.begin(9600);
gpsSerial.begin(GPSBaud);
}
void loop()
{
while (gpsSerial.available() > 0)
if (gps.encode(gpsSerial.read()))
afisare();
if (millis() > 5000 && gps.charsProcessed() < 10)
{
Serial.println("Modul GPS nedetectat");
while(true);
}
}
void afisare()
{
if (gps.location.isValid())
{
Serial.print("Latitudine: ");
Serial.println(gps.location.lat(), 6);
Serial.print("Longitudine: ");
Serial.println(gps.location.lng(), 6);
Serial.print("Altitudine: ");
Serial.println(gps.altitude.meters());
}
else
{
Serial.println("Locatie: Indisponibil");
}
Serial.print("Data: ");
if (gps.date.isValid())
{
Serial.print(gps.date.month());
Serial.print("/");
Serial.print(gps.date.day());
Serial.print("/");
Serial.println(gps.date.year());
}
else
{
Serial.println("Data nu este disponibila");
}
Serial.print("Ora: ");
if (gps.time.isValid())
{
if (gps.time.hour() < 10) Serial.print(F("0"));
Serial.print(gps.time.hour());
Serial.print(":");
if (gps.time.minute() < 10) Serial.print(F("0"));
Serial.print(gps.time.minute());
Serial.print(":");
if (gps.time.second() < 10) Serial.print(F("0"));
Serial.print(gps.time.second());
Serial.print(".");
if (gps.time.centisecond() < 10) Serial.print(F("0"));
Serial.println(gps.time.centisecond());
}
else
{
Serial.println("Ora nu este disponibila");
}
Serial.println();
Serial.println();
delay(1000);
}