Go Down

Topic: GPS et GSM problème coordonnées GPS (Read 461 times) previous topic - next topic

BradleyMarch

Bonjour à tous je suis en terminal STI2D, et je dois réaliser un ensemble GPS/GSM qui envoie des coordonnées à un téléphone portable . Le problème c'est qu'il ne m'envoie pas les coordonnées GPS mais 0.0000 et 0.0000
Code: [Select]
#include <TinyGPS++.h>
#include <GSM.h>

int RXPin = 18;
int TXPin = 19;

// The Skytaq EM-506 GPS module included in the GPS Shield Kit
// uses 4800 baud by default
int GPSBaud = 4800;

// Create a TinyGPS++ object called "gps"
TinyGPSPlus gps;

#define PINNUMBER "0000"

// initialize the library instance
GSM gsmAccess; // include a 'true' parameter for debug enabled
GSM_SMS sms;

char remoteNumber[20]= "0601753844";
//////////////////////////////////////////////////////////////////////////////////////
void setup()
{
  // initialize serial communications
  Serial.begin(9600);
{  
  Serial1 .begin(GPSBaud);


}
  Serial.println("SMS Messages Sender");

  // connection state
  boolean notConnected = true;

  // Start GSM shield
  // If your SIM has PIN, pass it as a parameter of begin() in quotes
  while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }
  Serial.println("GSM initialized");
  
  sendSMS();

}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void loop()
{
  // This sketch displays information every time a new sentence is correctly encoded.
  while (Serial1.available() > 0)
    if (gps.encode(Serial1.read()))
      displayInfo();

  // If 5000 milliseconds pass and there are no characters coming in
  // over the software serial port, show a "No GPS detected" error
  if (millis() > 5000 && gps.charsProcessed() < 10)
  {
    Serial.println(F("No GPS detected"));
    while(true);
  }
}
/////////////////////////////////////////////////////////////////////////////////////////////
void displayInfo()
{
  Serial.print(F("Location: "));
  if (gps.location.isValid())
  {
    Serial.print(gps.location.lat(), 6);
    Serial.print(F(","));
    Serial.print(gps.location.lng(), 6);
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.print(F("  Date/Time: "));
  if (gps.date.isValid())
  {
    Serial.print(gps.date.month());
    Serial.print(F("/"));
    Serial.print(gps.date.day());
    Serial.print(F("/"));
    Serial.print(gps.date.year());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.print(F(" "));
  if (gps.time.isValid())
  {
    if (gps.time.hour() < 10) Serial.print(F("0"));
    Serial.print(gps.time.hour());
    Serial.print(F(":"));
    if (gps.time.minute() < 10) Serial.print(F("0"));
    Serial.print(gps.time.minute());
    Serial.print(F(":"));
    if (gps.time.second() < 10) Serial.print(F("0"));
    Serial.print(gps.time.second());
    Serial.print(F("."));
    if (gps.time.centisecond() < 10) Serial.print(F("0"));
    Serial.print(gps.time.centisecond());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.println();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void sendSMS(){

  Serial.print("Message to mobile number: ");
  Serial.println(remoteNumber);

  // sms text
  Serial.println("SENDING");
  Serial.println();
  Serial.println("Message:");
  Serial.println(gps.location.lat(), 6);
  Serial.println(F(","));
  Serial.println(gps.location.lng(), 6);

  // send the message
  sms.beginSMS(remoteNumber);
  sms.print(gps.location.lat(), 6);
  sms.print(F(","));
  sms.print(gps.location.lng(), 6);
  sms.endSMS();
  Serial.println("\nCOMPLETE!\n");  
}

J-M-L

Regardez les 4 premières lignes de la loop(), il faut d'abord acquérir en lisant le port série assez longtemps une chaîne de caractère décrivant les coordonnées et l'instant de capture - une fois que la chaîne est entièrement capturée la fonction gps.encode() retourne true et vous pouvez alors appeler les fonctions d'extraction de l'heure ou de position (cf ce qui est fait dans displayInfo())

En mettant sendSMS à la fin du setup() vous n'avez acquis aucune donnée en provenance du gps et donc l'appel aux fonctions retourne 0

bref, faut lire une trame entiere avant d'avoir l'info
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Go Up