Arduino projekt: Testa spänner LoRa modul RF1276 för GPS-spårning lösning (9 / 9 steg)
Steg 9: Kodning Detaljer
Lägg till följande rad i definitionen
//*************************************************************************
//** LIBRARY ** //*************************************************************************
#include < TinyGPS.h > / / ++ GPS bibliotek
#include < SPI.h > / / ++ SPI bibliotek #include
++ SD bibliotek / /
*************************************************************************
//** SD ** //*************************************************************************
* SD-kortet bifogas SPI buss enligt följande:
** UNO: MOSI - stift 11, MISO - pin 12, CLK - stift 13, CS - stift 4
(CS pin kan ändras) och pin #10 (SS) måste vara en utgång
** Mega: MOSI - pin 51, MISO - pin 50, CLK - pin 52, CS - pin 53
(CS pin kan ändras) och pin #52 (SS) måste vara en utgång
** Leonardo: Ansluta till maskinvaran SPI via ICSP huvudet
Stift 4 används här för överensstämmelse med andra Arduino exempel const int chipSelect = 53;
++ SD pin selector
//*************************************************************************
//** GPS ** //*************************************************************************
TinyGPS gps; ++ GPS på Serial2
void gpsdump (TinyGPS & gps); // ++
bool newdataGPS = false; // ++
Lägg till följande rad i setup()
//***********************************************************************
//** GPS serial setup ** //***********************************************************************
Serial2.BEGIN (9600); // ++
fördröjning (1000); // ++
//***********************************************************************
//** SD Initializing ** //***********************************************************************
se till att den standard chip välja stiftet är inställd / / ++
utgång, även om du don´t använda den: / / ++
pinMode (SS, OUTPUT); // ++
Serial.println (F ("initiera SD-kortet...")); // ++
se om kortet är närvarande och kan initieras: / / ++
IF (!. SD.begin(chipSelect)) {/ / ++
Serial.println F ("kort misslyckades, eller inte finns"). // ++
Don´t göra något mer: / / ++
hemkomst. // ++
} annat {/ / ++
Serial.println F ("SD-kort OK"). // ++
} // ++
Lägg till denna rader i loop() void
serialEvent2(); ++ samtal GPS seriell händelse
Lägg till SeriaEvent2 kod
//*************************************************************************
//** GPS serialEvent ** //*************************************************************************
void serialEvent2() {/ / ++
medan (Serial2.available()) {/ / ++
char c = Serial2.read(); // ++
Serial.Print(c); ta bort kommentar för att se GPS rådata / / ++
om (gps.encode(c)) {/ / ++
newdataGPS = sant; // ++
bryta; ta bort kommentar för att skriva ut nya data omedelbart! // ++
} // ++
} // ++
} // ++
Lägga till GPS dump voud
//*************************************************************************
//** gps dump ** //*************************************************************************
** Det giltiga intervallet av friheten i grader är -90 och 90. **
** Longitud är i intervallet-180 och +180 **
** anger position för öst-väst **
** "123456789 1234567890" **
//** "000.00000;0000.00000" ** //*************************************************************************
void gpsdump (TinyGPS & gps) / / ++
{ // ++
int år. // ++
byte månad, dag, timme, minut, sekund, hundradelar; // ++
osignerade långa ålder; // ++
GPS.f_get_position (& LATGP00, och LONGP00, och ålder); // ++
GPS.crack_datetime (& år, månad, dag, & & timme, / / ++
& minut, sekund, hundradelar, & & ålder); // ++
lång lat, lon; // ++
GPS.get_position (lat, lon, & ålder); // ++
// *********************************************************************
** gör en sträng för att samla data logga: **
// *********************************************************************
String dataString = ""; // ++
dataString += (lat / 100000); // ++
dataString += "."; // ++
dataString += lat - (lat / 100000) * 100000; // ++
dataString += ";"; // ++
dataString += (lon / 100000); // ++
dataString += "."; // ++
dataString += lon - (lon / 100000) * 100000; // ++
dataString += ";"; // ++
dataString += sträng (static_cast(day)); // ++
dataString += "/"; // ++
dataString += sträng (static_cast(month)); // ++
dataString += "/"; // ++
dataString += sträng (år). // ++
dataString += ";"; // ++
dataString += sträng (static_cast(hour)); // ++
dataString += ":"; // ++
dataString += sträng (static_cast(minute)); // ++
dataString += ":"; // ++
dataString += sträng (static_cast(second)); // ++ //*************************************************************************
//** SAVE TO SD ** //*************************************************************************
Öppna filen. Observera att endast en fil kan vara öppna samtidigt, **
så du måste stänga detta en innan du öppnar en annan. ** //*************************************************************************
Fil dataFile = SD.open ("gps00.txt", FILE_WRITE); // ++
// ***********************************************************************
** om filen är tillgänglig, skriva till den: **
// ***********************************************************************
om (dataFile) {/ / ++
dataFile.println (dataString); // ++
dataFile.close(); // ++
} annat {/ / ++
Serial.println F ("fel SD skriver"). // ++
} // ++
}
Om du vill hämta koden, vänligen besök denna sida.
http://IOT.dataino.it/beta/View/site/Lora-Arduino-GPS.html