Bonjour,
J'essaye de réaliser un tracker gps.
la lecture des coordonnées fonctionne en partie:
La première lecture du gps donne les bonnes coordonnées, mais les suivantes indiquent des coordonnées erronées. En fait elles contiennent les bonnes coordonnées mais avec en plus des caractères qui ne devraient plus être là. De mon point de vue, on dirait que les variables ne soient pas correctement réinitialisées après chaque lecture. C'est du moins ce que je pense. Quelqu'un pourrait m'en dire un peut plus??
merci
code
#include <SoftwareSerial.h>
#include <SPI.h> // Pour la communication SPI
#include <SD.h> // Pour la communication avec la carte SD
const byte SDCARD_CS_PIN = 10; //* Broche CS de la carte SD */
SoftwareSerial sim808(7, 8);
char phone_no[] = "+33111111111"; // replace with your phone no.
String data[5];
#define DEBUG true
String state, timegps, latitude, longitude, last_lat, last_long;
int nb_lecture = 0;
String heure, date;
File myFile;
char Fichier[32] = "Test_GPS.txt"; // par la suite nom à créer en incrémentant les fichiers existants
void setup() {
pinMode(10, OUTPUT); // Arduino UNO//pinMode(53, OUTPUT); // Arduino Mega
sim808.begin(9600);
Serial.begin(9600);
delay(50);
sim808.println("AT+CSMP=17,167,0,0"); // set this parameter if empty SMS received///////////////////////
delay(100);
sim808.print("AT+CMGF=1\r");
delay(400);
sendData("AT+CGNSPWR=1", 1000, DEBUG);
delay(50);
sendData("AT+CGNSSEQ=RMC", 1000, DEBUG);
delay(150);
last_lat = latitude;
last_long = longitude;
/* Initialisation de la carte SD */
Serial.println(F("Init SD card... "));
if (!SD.begin(SDCARD_CS_PIN)) {
Serial.println(F("FAIL"));
//for (;;); // appui sur bouton RESET
}
else {
Serial.println(F("OK"));
myFile = SD.open(Fichier, FILE_WRITE);
if (myFile)
{//si le fichier est ouvert
Serial.println("Fichier ouvert en écriture");
}
else
{//si le fichier ne peut pas être ouvert
Serial.println("Erreur ouverture fichier");
Serial.println();
}
}
}
void loop() {
sendTabData("AT+CGNSINF", 1000, DEBUG);
if (state != 0) {
Serial.print("State : "), Serial.println(state);
heure = timegps.substring(8, 12);
Serial.print("Time : "), Serial.println(heure);
Serial.print("Latitude : "), Serial.println(latitude);
Serial.print("Longitude : "), Serial.println(longitude);
nb_lecture++;
Serial.print("lecture: "), Serial.println(nb_lecture);
Serial.println();
ecriture();
// sim808.print("AT+CMGS=\"");
// sim808.print(phone_no);
// sim808.println("\"");
// delay(300);
// sim808.print("http://maps.google.com/maps?q=loc:");
// sim808.print(latitude);
// sim808.print(",");
// sim808.print(longitude);
// delay(200);
// sim808.println((char)26); // fin du message
// delay(200);
// sim808.println();
// delay(20000);
sim808.flush();
last_lat = latitude;
last_long = longitude;
latitude = "";
longitude = "";
timegps = "";
state = "";
}
else {
Serial.println("GPS Initialising...");
}
}
void sendTabData(String command, const int timeout, boolean debug) {
sim808.println(command);
long int time = millis();
int i = 0;
while ((time + timeout) > millis()) {
while (sim808.available()) {
char c = sim808.read();
if (c != ',') {
data[i] += c;
delay(100);
}
else {
i++;
}
if (i == 5) {
delay(100);
goto exitL;
}
}
}exitL:
if (debug) {
state = data[1];
timegps = data[2];
latitude = data[3];
longitude = data[4];
}
}
String sendData(String command, const int timeout, boolean debug) {
String response = "";
sim808.println(command);
long int time = millis();
int i = 0;
while ((time + timeout) > millis()) {
while (sim808.available()) {
char c = sim808.read();
response += c;
}
}
if (debug) {
Serial.print(response);
}
return response;
}
void ecriture() {
myFile.print("/*");
myFile.print(heure);
myFile.print("_");
myFile.print(latitude);
myFile.print("_");
myFile.print(longitude);
myFile.println("*/");
// myFile.close();
}
résultats du moniteur serie
State : 1
Time : 0652
Latitude : 50.709827
Longitude : 2.1795671
lecture: 1
State : 11
Time : 0652
Latitude : 50.70982750.709822
Longitude : 2.17956712.1795721
lecture: 2
State : 111
Time :
Latitude : 50.70982750.70982250.709808
Longitude : 2.17956712.17957212.1795651
lecture: 3
State : 1111
Time :
Latitude :
Longitude :
lecture: 4