• 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

    Aucun commentaire pour le moment

    Suivre le flux RSS des commentaires


    Ajouter un commentaire

    Nom / Pseudo :

    E-mail (facultatif) :

    Site Web (facultatif) :

    Commentaire :