Bonjour, je suis un débutant dans arduino et je suis en train de travailler sur un projet qui est un traceur GPS. le but du projet, c'est de pouvoir retrouver un objet en mouvement (voiture, vélo, moto, ...). Alors voilà comment j'ai décidé de faire : Grâce à une carte SIM qui sera insérée dans le shield gsm, je pourrais recevoir et envoyer des sms. Grâce à ce système, lorsque je recevrais un sms, je souhaite pouvoir renvoyer un sms avec les coordonnées géographiques. C'est ici que ça coince...
Avec les libraires TinyGPS++ et GSM j'ai essayer de faire pas mal de choses mais aucunes ne fonctionnent.
Voici une photo de mon montage :
branchement : -gps ---> gsm
-5V ---> 5V
-GND --> GND
-RX ---> 5
-TX ---> 4
Voici mon code et le résultat :
#include <GSM.h>
#include <TinyGPS++.h>
#include <AltSoftSerial.h>
int RXPin = 4;
int TXPin = 5;
int GPSBaud = 4800;
TinyGPSPlus gps;
AltSoftSerial gpsSerial(RXPin, TXPin);
#define PINNUMBER "0000"
GSM gsmAccess;
GSM_SMS sms;
char senderNumber[20];
void setup()
{
Serial.begin(9600);
while (!Serial)
{;}
gpsSerial.begin(GPSBaud);
Serial.println(F("Code final gps"));
Serial.println(F("Affichage coordonnees gps"));
Serial.print(F("Envoi sms a un telephone"));
Serial.println();
boolean notConnected = true;
while(notConnected)
{
if(gsmAccess.begin(PINNUMBER)==GSM_READY)
notConnected = false;
else
{
Serial.println("Non connecte au gsm");
delay(1000);
}
}
Serial.println("GSM initialise");
Serial.println("En attente de messages");
}
void loop()
{
char c;
if (sms.available())
{
Serial.println("SMS recu de :");
sms.remoteNumber(senderNumber, 20);
Serial.println(senderNumber);
if(sms.peek()=='#')
{
Serial.println("SMS invalide");
sms.flush();
}
while(c=sms.read())
Serial.print(c);
Serial.println("\nFIN DU MESSAGE");
sms.flush();
}
if (gpsSerial.available() > 0)
{
delay(500);
gpsInfo();
}
if (millis() > 5000 && gps.charsProcessed() < 10)
{
Serial.println(F("Aucun GPS detecte"));
while(true);
}
delay(500);
}
void gpsInfo()
{
Serial.print(F("Location: "));
if (gps.location.isValid())
{
Serial.print(gps.location.lat(), 20);
Serial.print(F(","));
Serial.print(gps.location.lng(), 20);
}
else
{
Serial.print(F("AUCUNE DONNEES"));
}
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("AUCUNE DONNEES"));
}
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());
}
else
{
Serial.print(F("AUCUNE DONNEES"));
}
Serial.println();
}
PS : il n'y a que la partie récéption du sms. Je n'ai pas encore fait la partie envoi.
Voilà le résultat :
Sans même recevoir de sms, on m'indique que le gps n'est pas détecté et je ne peux plus recevoir de sms.
Le problème ne vient pas du montage car le GSM et le GPS fonctionnent en individuel.
J’espère que vous pouvez m'aider, demandez moi si vous avez besoins de précisions.
Cordialement.