Bonjour ,
je fait un projet personnel qui nécessite des données gps et des vitesses ,
pour cela , j'ai utilisée un moduler neo 6m que j'ai tester avec u-center ( il fonctionnait tres bien)
et un module ecriteur/lecteur micro sd (qui fonctionne correctement) , mon problème est que lorsque je lance mon programme ci dessous , rien ne ce passe , les cordonnées ne sont pas ecrite , le fichier ne se crée pas et étant débutant je comprends pas pourquoi est ce que cela pourrait venir des branchments (qui me semble conforme ) ou à cause d'une erreur de code , merci d' avance si vous avez besoin d'autre precision n'hesiter pas .
On teste d'abord le GPS (déconnectez la carte SD) :
Il y a une inversion, il faut : SoftwareSerial ss(RXPin , TXPin );
Essayez avec RXPin = 2 et TXPin = 3.
Du coup la pin 2 de la UNO doit-être connectée sur TX du GPS et la 3 sur RX
Essayez ce code :
#include <TinyGPSPlus.h>
#include <SoftwareSerial.h>
/*
This sample sketch demonstrates the normal use of a TinyGPSPlus (TinyGPSPlus) object.
It requires the use of SoftwareSerial, and assumes that you have a
4800-baud serial GPS device hooked up on pins 4(rx) and 3(tx).
*/
static const int RXPin = 2, TXPin = 3;
static const uint32_t GPSBaud = 9600;
// The TinyGPSPlus object
TinyGPSPlus gps;
// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);
void setup()
{
Serial.begin(115200);
ss.begin(GPSBaud);
Serial.println(F("DeviceExample.ino"));
Serial.println(F("A simple demonstration of TinyGPSPlus with an attached GPS module"));
Serial.print(F("Testing TinyGPSPlus library v. ")); Serial.println(TinyGPSPlus::libraryVersion());
Serial.println(F("by Mikal Hart"));
Serial.println();
}
void loop()
{
// This sketch displays information every time a new sentence is correctly encoded.
while (ss.available() > 0)
if (gps.encode(ss.read()))
displayInfo();
if (millis() > 5000 && gps.charsProcessed() < 10)
{
Serial.println(F("No GPS detected: check wiring."));
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();
}
Dites moi ce que vous voyez dans le moniteur série qui doit-être sur 115200 ?
Après vérification , l erreur que vous soulignez était bien un des problèmes , le logiciel était incompatible avec ma version actuelle de windows , j ai donc alors choisis de modifier le logiciel et remedoler le code maintenant tout marche !
je vous remercie encore énormèment devotre temps , je vous souhaite une bonne fin de journée et si vous êtes interessée par le programme complet le voici
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#include <SPI.h>
#include <SD.h>
static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 9600;
// The TinyGPS++ object
TinyGPSPlus gps;
// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);
// The file on the SD card
File dataFile;
void setup() {
Serial.begin(9600);
ss.begin(GPSBaud);
SD.begin(5);
}
void loop() {
// This sketch displays information every time a new sentence is correctly encoded.
while (ss.available() > 0) {
gps.encode(ss.read());
if (gps.location.isUpdated()) {
// Open the file for writing (append mode)
dataFile = SD.open("data.txt", FILE_WRITE);
// Write the GPS data to the file
dataFile.print("Latitude= ");
dataFile.print(gps.location.lat(), 6);
dataFile.print(" Longitude= ");
dataFile.println(gps.location.lng(), 6);
dataFile.print("Raw latitude = ");
dataFile.print(gps.location.rawLat().negative ? "-" : "+");
dataFile.println(gps.location.rawLat().deg);
dataFile.println(gps.location.rawLat().billionths);
dataFile.print("Raw longitude = ");
dataFile.print(gps.location.rawLng().negative ? "-" : "+");
dataFile.println(gps.location.rawLng().deg);
dataFile.println(gps.location.rawLng().billionths);
dataFile.print("Raw date DDMMYY = ");
dataFile.println(gps.date.value());
dataFile.print("Year = ");
dataFile.println(gps.date.year());
dataFile.print("Month = ");
dataFile.println(gps.date.month());
dataFile.print("Day = ");
dataFile.println(gps.date.day());
dataFile.print("Raw time in HHMMSSCC = ");
dataFile.println(gps.time.value());
dataFile.print("Hour = ");
dataFile.println(gps.time.hour());
dataFile.print("Minute = ");
dataFile.println(gps.time.minute());
dataFile.print("Second = ");
dataFile.println(gps.time.second());
dataFile.print("Centisecond = ");
dataFile.println(gps.time.centisecond());
dataFile.print("Raw speed in 100ths/knot = ");
dataFile.println(gps.speed.value());
dataFile.print("Speed in knots/h = ");
dataFile.println(gps.speed.knots());
dataFile.print("Raw course in 100ths degree = ");
dataFile.println(gps.course.value());
dataFile.print("Course in degrees = ");
dataFile.println(gps.course.deg());
dataFile.print("Speed in m/s = ");
dataFile.println(gps.speed.mps());
dataFile.print("Raw course in degrees = ");
dataFile.println(gps.course.value());
dataFile.print("Raw altitude in centimeters = ");
dataFile.println(gps.altitude.value());
dataFile.print("Altitude in meters = ");
dataFile.println(gps.altitude.meters());
dataFile.print("Altitude in miles = ");
dataFile.println(gps.altitude.miles());
dataFile.print("Altitude in kilometers = ");
dataFile.println(gps.altitude.kilometers());
dataFile.print("Altitude in feet = ");
dataFile.println(gps.altitude.feet());
dataFile.print("Number os satellites in use = ");
dataFile.println(gps.satellites.value());
dataFile.print("HDOP = ");
dataFile.println(gps.hdop.value());
dataFile.print("------------------------------------------------------------------------------------------------------------------------");
// Close the file
Serial.write(dataFile.read());
dataFile.close();
}
}
}
@azenn,
Je ne sais pas quelle est la nature de votre projet mais j'ai oublié de vous dire qu'une alimentation avec une pile de 9V c'est pas le top.
Je vous donne un lien sur ce sujet : hbachetti.
Si l'encombrement a de l’importance, la carte NANO est bien plus petite que la UNO avec les mêmes caractéristiques.
On réalise une expérience qui durera 2min max , on souhaite juste retracer la trajectoire d'un objet ayant une lvitesse >100km/h et essayer de créer nous même un modèle qui nous permettrai de prédire la trajectoire en dépendant de différents facteurs . et pour le format , on a prévu un compartiments a la taille du module mais merci beaucoup !
Bonne fin de journée et merci beaucoup encore