[Programmation] programme gps data loger arduino
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

programme gps data loger arduino



  1. #1
    kaky951357

    programme gps data loger arduino


    ------

    Bonsoir tout le monde
    j'ai essayé de realiser un gps data loger avec une condition : ne rien enregistrer sur le carte mémoire si il ne reçoit pas un HIGH sur une pin déterminé dans le code
    mon montage se compose d'un module carte SD pour arduino d'un module gps ublox neo 6m v2 le tout controllé par un atmega328p cadencé a 8MHz en horloge interne le tout soudé sur une plaque dessai à points de soudure j'ai testé tout le hardware le signal HIGH sera donné par un bouton poussoir que j'ai testé avec le programme button breff tout marche a merveille
    avec ce programme le système enregistre des information de localisation gps sur la carte mémoire a une fréquence de 1Hz tout ce passe bien
    Code:
    #include <SD.h> 
    #include<SPI.h> 
    #include <Adafruit_GPS.h>    
    #include <SoftwareSerial.h> 
    SoftwareSerial mySerial(3,2); 
    Adafruit_GPS GPS(&mySerial); 
    
    String NMEA1; 
    String NMEA2; 
    char c; 
    int chipSelect = 4;
    File mySensorData; 
    
    void readGPS() {
      
      clearGPS();
      while(!GPS.newNMEAreceived()) { //Loop until you have a good NMEA sentence
        c=GPS.read();
      }
      GPS.parse(GPS.lastNMEA()); //Parse that last good NMEA sentence
      NMEA1=GPS.lastNMEA();
      
       while(!GPS.newNMEAreceived()) { 
        c=GPS.read();
      }
      GPS.parse(GPS.lastNMEA()); 
      NMEA2=GPS.lastNMEA();
      
      Serial.println(NMEA1);
      Serial.println(NMEA2);
      Serial.println("");
      
    }
    
    
    void clearGPS() {  
      while(!GPS.newNMEAreceived()) { 
        c=GPS.read();
      }
      GPS.parse(GPS.lastNMEA()); 
      
      while(!GPS.newNMEAreceived()) { 
        c=GPS.read();
      }
      GPS.parse(GPS.lastNMEA()); 
       while(!GPS.newNMEAreceived()) { 
        c=GPS.read();
      }
      GPS.parse(GPS.lastNMEA()); 
      
    }
    
    void setup() {
      Serial.begin(115200); 
      GPS.begin(9600); 
      GPS.sendCommand("$PGCMD,33,0*6D");  
      GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
      GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); 
      delay(1000); 
      
      pinMode(10, OUTPUT); 
      SD.begin(chipSelect); 
      
      if (SD.exists("NMEA.txt")) { 
        SD.remove("NMEA.txt");
      }
      if (SD.exists("GPSData.txt")) { 
        SD.remove("GPSData.txt");
      }
    
    }
    
    
    void loop() {
        readGPS();
        if(GPS.fix==1)
        {
      mySensorData = SD.open("NMEA.txt", FILE_WRITE); //Open file on SD card for writing
      mySensorData.println(NMEA1); //Write first NMEA to SD card
      mySensorData.println(NMEA2); //Write Second NMEA to SD card
      mySensorData.close();  //Close the file
      mySensorData = SD.open("GPSData.txt", FILE_WRITE);
      mySensorData.print(GPS.latitude,4); //Write measured latitude to file
      mySensorData.print(GPS.lat); //Which hemisphere N or S
      mySensorData.print(",");
      mySensorData.print(GPS.longitude,4); //Write measured longitude to file
      mySensorData.print(GPS.lon); //Which Hemisphere E or W
      mySensorData.print(",");
      mySensorData.println(GPS.altitude);
      mySensorData.close();
      
    }
    }
    et quand je modifie le code pour que sa enregistre sous une condition :
    Code:
    #include <SD.h> 
    #include<SPI.h> 
    #include <Adafruit_GPS.h>    
    #include <SoftwareSerial.h> 
    SoftwareSerial mySerial(3,2); 
    Adafruit_GPS GPS(&mySerial); 
    const int a1=10;
    const int a2=9;
    int b=0;
    String NMEA1; 
    String NMEA2; 
    char c; 
    
    int chipSelect = 4;
    File mySensorData; 
    
    
    void setup() {
      pinMode(a1 ,INPUT);
      pinMode(a2 ,OUTPUT);
      Serial.begin(115200); 
      GPS.begin(9600); 
      GPS.sendCommand("$PGCMD,33,0*6D");  
      GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA); 
      GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); 
      delay(1000); 
      
      pinMode(10, OUTPUT); 
      SD.begin(chipSelect);
      
      if (SD.exists("NMEA.txt")) { 
        SD.remove("NMEA.txt");
      }
      if (SD.exists("GPSData.txt")) { 
        SD.remove("GPSData.txt");
      }
    
    }
    
    void readGPS() {
      
      clearGPS();
      while(!GPS.newNMEAreceived()) { 
        c=GPS.read();
      }
      GPS.parse(GPS.lastNMEA()); 
      NMEA1=GPS.lastNMEA();
      
       while(!GPS.newNMEAreceived()) { 
        c=GPS.read();
      }
      GPS.parse(GPS.lastNMEA()); 
      NMEA2=GPS.lastNMEA();
      
      Serial.println(NMEA1);
      Serial.println(NMEA2);
      Serial.println("");
      
    }
    
    void clearGPS() {  
      while(!GPS.newNMEAreceived()) { 
        c=GPS.read();
      }
      GPS.parse(GPS.lastNMEA());
      
      while(!GPS.newNMEAreceived()) { 
        c=GPS.read();
      }
      GPS.parse(GPS.lastNMEA()); 
       while(!GPS.newNMEAreceived()) { 
        c=GPS.read();
      }
      GPS.parse(GPS.lastNMEA());
    }
    
    void loop() {
      b=digitalRead(a1);
      readGPS();
      if(GPS.fix==1)
      {digitalWrite(a2, HIGH);}
      else
      {digitalWrite(a2, LOW);}
      if(GPS.fix==1 && b==HIGH) {
      digitalWrite(a2, HIGH);
      delay(100);
      digitalWrite(a2, LOW);
      delay(100);
      digitalWrite(a2, HIGH);
      mySensorData = SD.open("NMEA.txt", FILE_WRITE); 
      mySensorData.println(NMEA1);
      mySensorData.println(NMEA2); 
      mySensorData.close(); 
      mySensorData = SD.open("GPSData.txt", FILE_WRITE);
      mySensorData.print(GPS.latitude,4);
      mySensorData.print(GPS.lat); 
      mySensorData.print(",");
      mySensorData.print(GPS.longitude,4); 
      mySensorData.print(GPS.lon); 
      mySensorData.print(",");
      mySensorData.println(GPS.altitude);
      mySensorData.close();
      }
    }
    après avoir apuillé sur le bouton il crée les fiché pour enregistrer dessus mais je trouve pas d'information dans ces dernier je ne comprend pas pourquoi
    j'ai ajouté 2 variable au deuxième programme une pour le bouton a1 et l'autre pour une led a2 qui s'allumera quand il y'aura GPS.fix==1 et clignotera quand on appui sur le bouton pour témoigner que l'atmega enregistre les informations sur la carte
    j’espère que j'ai été assez explicite svp j'ai vraiment besoins de votre aide
    merci beaucoup pour vos réponses

    -----

  2. #2
    Pauldair

    Re : programme gps data loger arduino

    Bonjour,

    Tu devrais indenter ton programme, surtout les parties IF et ELSE.

    Je me demande si tu n'as pas un problème d'ouverture et de fermeture des { }. Voir aussi GPS.fix==1 si ce n'est pas plutôt GPS.fix=="1"

  3. #3
    kaky951357

    Re : programme gps data loger arduino

    bonsoir et merci beaucoup pour votre réponse
    j'ai indenté mon programme
    quand je change le GPS.fix==1 a GPS.fix=="1" le programme ne se compile pas et affiche une erreur de syntaxe es-que le problème pourrai venir d'autre part ?

  4. #4
    Yoruk

    Re : programme gps data loger arduino

    Donne le code indenté svp.

    Ton GPS.fix c'est quoi ?

    Quelle est la condition que tu demandes pour l'enregistrement des données ?
    La robotique, c'est fantastique !

  5. A voir en vidéo sur Futura

Discussions similaires

  1. VTT Electrique - Programme Arduino
    Par David_DRS dans le forum Technologies
    Réponses: 4
    Dernier message: 10/05/2015, 15h13
  2. Programme affichage Arduino
    Par Guiguila dans le forum Électronique
    Réponses: 5
    Dernier message: 09/04/2015, 08h14
  3. programme arduino
    Par julienslr dans le forum Électronique
    Réponses: 26
    Dernier message: 24/07/2014, 11h33
  4. programme de language arduino
    Par avions6 dans le forum Électronique
    Réponses: 4
    Dernier message: 25/02/2014, 07h29
  5. Programme sur Arduino
    Par invite364f7719 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 22/02/2013, 22h36
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...