-
ARDUINO programme GPS
//#include <DHT.h>
#include <TinyGPS.h> // http://arduiniana.org/libraries/tinygpsplus/
#include <SD.h>
//SoftwareSerial SerialGPS(9,10); // RX, TX
TinyGPS gps; // create a TinyGPS object
//#define DHTPIN 3
//#define DHTTYPE DHT22
int chipSelect=4;
int LED=7;
unsigned long t1, fix_age;
float lat, lon, alti, vitesse;
int annee,fix,i;
byte c,mois, jour, seconde, minute, heure, centiemes;
String date ="";
void setup()
{
Serial.begin(9600);
Serial1.begin(9600); // GPS devices frequently operate at 4800 baud
Serial.println("Initialisation...");
pinMode(chipSelect, OUTPUT);
pinMode(5,OUTPUT);
pinMode(10,OUTPUT); // Carte Ethernet
digitalWrite(chipSelect,LOW);
digitalWrite(5,HIGH);
digitalWrite(10,HIGH); // désactiver Carte SD
pinMode(LED,OUTPUT);
if (!SD.begin(chipSelect)) Serial.println("Erreur carte SD"); else Serial.println("Carte presente");
t1=millis();
}
void loop()
{
while (Serial1.available()&&millis()-t1>4000)
{
c = Serial1.read();
Serial.write(c);
if (gps.encode(c)&&millis()-t1>5000) lireGPS(); // tempo pour lire une trame RMC
if (millis()-t1>6000) { // Attente du Fix
fix++;
Serial.println();
Serial.println("Attente du FIX... ");
Serial.print(6*fix); Serial.println(" s");
t1=millis();}
}
}
void lireGPS()
{
gps.f_get_position(&lat, &lon); // Fonction de la bibliothèque TinyGPS
gps.crack_datetime(&annee, &mois, &jour, &heure, &minute, &seconde, ¢iemes, &fix_age);
date =String(jour) + "/" + String(mois) + "/" + String(annee) + " "+ String (heure+1) + ":" + String (minute) + ":" + String (seconde);
Serial.println();
Serial.println(date);
Serial.print("Mesure ");Serial.println(i);
Serial.print("Latitude = ");Serial.println(lat,5);
Serial.print("Longitude = ");Serial.println(lon,5);
alti = gps.f_altitude(); // +/- altitude in meters
Serial.print("Altitude = ");Serial.print(alti,1);Serial.println(" m");
vitesse = gps.f_speed_mps();
Serial.print("Vitesse = ");Serial.print(vitesse,1);Serial.println(" m/s");
Serial.print(lat,5);Serial.print(",");Serial.println(lon,5);
Serial.println();
digitalWrite(LED,1);
if (i==0) entete();
ecritureSD();
digitalWrite(LED,0);
t1=millis();
i++;
fix=0;
}
void entete(){ // Pour utiliser Google table de fusion séparateur
File GPStab = SD.open("GPS_Tab.csv", FILE_WRITE);
if (GPStab) {
GPStab.print("date");
GPStab.print(";");
GPStab.print("latitude");
GPStab.print(";");
GPStab.print("longitude");
GPStab.print(";");
GPStab.print("Altitude");
GPStab.print(";");
GPStab.println("Mesure");
GPStab.close();
}
}
void ecritureSD() {
File GPStab = SD.open("GPS_Tab.csv", FILE_WRITE);
if (GPStab) {
GPStab.print(date);
GPStab.print(";");
GPStab.print(lat,5);
GPStab.print(";");
GPStab.print(lon,5);
GPStab.print(";");
GPStab.print(alti,1);
GPStab.print(";");
GPStab.println(i);
GPStab.close();
}
else {
Serial.print("Erreur GPS_Tab.csv");}
}---------------------------------------------------------------------------
Cette fois, c'est au tour du GPS, ce programme devrait permettre de le tester. Je ne l'ai pas encore programmé, mais
je vous le soumet pour le tester. Si vous voulez le fichier .ino pour ce programme ou pour les autres,
ainsi que les librairies, je peux vous les faire parvenir par mail, mais sans garantie si non testé.
J'aurai l'occasion de commenter dans un article, ce que vous pouvez récupérer avec votre GPS. En gros, vous pouvez
obtenir dans l'ordre :
la date, l'heure, la latitude, la longitude, et l'altitude.
Si votre GPS ne convient pas pour les vols sur un ballon haute altitude, l'indication d'altitude sera bloquée en vol, en
général vers 18 km.
Merci pour votre participation et vos commentaires.
Alain F6AGV - BHAF - f6agv (@) free.fr Ballons Haute Altitude France
-
Commentaires