Bonjour, je suis actuellement en train d'essayer de faire communiquer un arduino Beetle (Leonardo) avec un GPS (NEO 6 MV2).
En soit rien d'extraordinaire, sauf que la je ne comprends pas pourquoi la communication ne s'effectue pas.
Avant de présenter mon problème je souhaite indiquer que j'ai fait le test entre un arduino nano et ce même GPS et que le code et le résultat sont opérationnels (affichage des données GPS dans le moniteur corrects).
Du coup, je souhaite donc utiliser ce GPS sur une carte Beetle sauf que je n'arrive pas à lire les data envoyées par le GPS. Le croisement des fils RX/TX est OK, tout bien alimenté, le retour dans le moniteur affiche 0.0000 ... en gros je n'arrive pas à paramétrer la communication..
A noter : mon inclut le pilotage d'un servomoteur, qui lui fonctionne bien.
Voici le code :
#include <TinyGPS.h>
#include <Servo.h>
#include <SoftwareSerial.h>
Servo myservo; // create servo object to control a servo
TinyGPS gps;
SoftwareSerial serial1(0, 1);
void setup()
{
//Serial.begin(9600);
serial1.begin(9600);
pinMode(0, INPUT);
pinMode(1, OUTPUT);
pinMode(9, OUTPUT);
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop()
{
bool newData = false;
unsigned long chars;
unsigned short sentences, failed;
// For one second we parse GPS data and report some key values
for (unsigned long start = millis(); millis() - start < 1000;)
{
while (serial1.available())
Serial.println("serial1 available");
{
char c = serial1.read();
//Serial.println(analogRead(A0));
//char c = analogRead(A0);
//Serial.write(c); // uncomment this line if you want to see the GPS data
if (gps.encode(c)) // Did a new valid sentence come in?
newData = true;
}
}
if (newData)
{
float flat, flon;
unsigned long age;
gps.f_get_position(&flat, &flon, &age);
Serial.print("LAT=");
Serial.print(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat, 6);
Serial.print(" LON=");
Serial.print(flon == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flon, 6);
Serial.print(" SAT=");
Serial.print(gps.satellites() == TinyGPS::GPS_INVALID_SATELLITES ? 0 : gps.satellites());
Serial.print(" PREC=");
Serial.print(gps.hdop() == TinyGPS::GPS_INVALID_HDOP ? 0 : gps.hdop());
Serial.println("servo job");
}
float flat, flon;
unsigned long age;
gps.f_get_position(&flat, &flon, &age);
Serial.print("LAT=");
Serial.print(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat, 6);
Serial.print(" LON=");
Serial.print(flon == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flon, 6);
gps.stats(&chars, &sentences, &failed);
Serial.print(" CHARS=");
Serial.print(chars);
Serial.print(" SENTENCES=");
Serial.print(sentences);
Serial.print(" CSUM ERR=");
Serial.println(failed);
if (chars == 0)
Serial.println("** No characters received from GPS: check wiring **");
}
En vous remerciant.
Erwann.