Partage
  • Partager sur Facebook
  • Partager sur Twitter

Arduino uno communication UART avec GPS

    5 janvier 2015 à 19:45:08

    Bonjour,

    Je me suis lancé dans le monde du gps et après avoir feuilleté la doc de mon module GPS U-blox, j'ai vu que l'on pouvais acquérir les données du gps via une liaison UART. 

    Or je n'ai jamais fais une liaison UART donc si quelqu'un aurai une piste SVP

    merciiiii

    • Partager sur Facebook
    • Partager sur Twitter
      6 janvier 2015 à 8:10:04

      Pourtant, je certains que tu l'as déjà fait sans le savoir ;)

      C'est le périphérique UART de l'arduino gère la communication série.

      Pour envoyer des données sur cette liaison, c'est donc Serial.print(...);

      Pour recevoir des données, c'est Serial.read(); couplé à Serial.available();

      • Partager sur Facebook
      • Partager sur Twitter
        7 janvier 2015 à 13:19:08

        ok

         donc je connecte le Rx & Tx de mon arduino au Tx & Rx de mon gps et je peu visualiser ce que me revoie le gps sur mon ordi avec le moniteur de l'arduino?

        je suis aussi super novice dans le monde arduino XD

        • Partager sur Facebook
        • Partager sur Twitter
          7 janvier 2015 à 13:38:24

          Alors là, il va falloir faire attention aux conflit !

          Le lien qu'il y a entre l'arduino et le PC est aussi un lien Serial qui utilise les pins Tx/Rx.

          En faite, sur ton arduino, tu as autre petit processeur qui gère la connexion USB avec le PC et renvoie les données à l'arduino sur les pins Tx/Rx du Serial.

          Tu ne peux pas brancher 3 éléments sur un bus Serial puisque ce bus est prévu pour faire un lien entre 2 périphériques :

          - Le Tx (Transmiter) du premier périphérique est à brancher sur Rx (Receiver) du second et vice versa.

          Si tu veux te servir de l'arduino comme passerelle vers le PC, il va donc falloir brancher le GPS sur d'autres pin que Tx/Rx.

          Je peux te conseiller la lib http://arduino.cc/en/Reference/softwareSerial qui permet d'émuler des pins Tx/Rx sur d'autres pins I/O.

          Il te faudra ensuite faire un petit programme qui se charge de transférer les données entre les 2 liens :

          - Tout ce qu'un lien reçoit est renvoyé sur l'autre et vice versa

          Le programme ressemble alors à ça :

          // GPS SoftwareSerial
          // Rx: pin 10 (à connecter au Tx du GPS)
          // Tx: pin 11 (à connecter au Rx du GPS)
          SoftwareSerial gpsSerial(10, 11);
          
          void setup() {
              Serial.begin(9600);
              gpsSerial.begin(9600);
          }
          
          void loop() {
          
              // Si le GPS a envoyé quelque chose
              if (gpsSerial.available()) {
                  // On renvoie ce quelque chose sur le PC
                  Serial.write(gpsSerial.read());
              }
          
              // Si le PC a envoyé quelque chose
              if (Serial.available()) {
                  // On renvoie ce quelque chose sur le GPS
                  gpsSerial.write(Serial.read());
              }
          
          }



          -
          Edité par lorrio 7 janvier 2015 à 13:44:37

          • Partager sur Facebook
          • Partager sur Twitter
            8 janvier 2015 à 11:04:29

            AAAAAAA trop coll merci bien, t'es un chef.

            maintenant il me reste juste a extraire la trame qu'il me faut, c'est possible d'envoyer les trames sur un fichier texte ? apres avec un petit programme en c c'est pas trop dur de choisir ce que l'on veut =) ou depuis arduino.

            • Partager sur Facebook
            • Partager sur Twitter
              8 janvier 2015 à 11:39:01

              Pour le moment, l'arduino propage tes trames vers le PC.

              Coté PC, c'est ton IDE qui a ouvert un port COM et affiche ce qu'il reçoit dans la fenêtre du moniteur.

              Je dois avouer que le moniteur de l'IDE arduino n'est pas ce qu'il y a de plus pratique.

              Tu devrais plutôt utiliser de vrais terminaux comme Realterm ou Terminal v1.9b

              Ces logiciels sont capable d'afficher les données reçus, de les enregistrer dans un fichier, de convertir le tout en hexa, d'envoyer des trames...

              Bref, ils sont bien plus puissant que le pauvre petit moniteur arduino qui ne fait qu'afficher.

              • Partager sur Facebook
              • Partager sur Twitter
                13 janvier 2015 à 11:06:02

                ouai mais j'aimerai enregistrer les données du gps sur carte sd pour pouvoir me faire une apli sur ordi et faire un tracé google map etc

                • Partager sur Facebook
                • Partager sur Twitter
                  13 janvier 2015 à 11:38:22

                  Si la carte SD est branchée à ton PC, il suffit que l'arduino envoie les données sur le Serial et configurer RealTerm pour qu'il enregistre ce qu'il reçoit sur un fichier de la carte SD.

                  -----

                  En revanche, si la carte SD est connectée à l'arduino, cela ne sert strictement à rien d'envoyer les infos au PC.

                  Tu peux utiliser la lib SD pour enregistrer directement les données de l'arduino sur la carte SD.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 janvier 2015 à 9:21:45

                    ok merci bien

                    mais les données qui s'enregistrent sur la carte SD c'est le texte brut de la console??

                    désolé je te répond sans avoir regarder lib SD lol

                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 janvier 2015 à 9:52:11

                      C'est ton code ! C'est toi qui choisi ce que tu y enregistre.


                      Si tu choisis de mettre la carte SD sur l'arduino, c'est à toi d'utiliser la lib SD correctement pour enregistrer ce que tu veux sachant que la lib SD te donne les fonctions de base : open, read, write, close ...

                      Si tu as envie de créer un fichier hello.txt qui contient Salut les Zeros, il te suffit de mettre un code qui ressemble à ça :

                      #include <SD.h>
                      
                      File myFile;
                      
                      void setup()
                      {
                      
                        Serial.begin(9600);
                      
                        Serial.print("Initializing SD card...");
                        // On the Ethernet Shield, CS is pin 4. It's set as an output by default.
                        // Note that even if it's not used as the CS pin, the hardware SS pin
                        // (10 on most Arduino boards, 53 on the Mega) must be left as an output
                        // or the SD library functions will not work.
                        pinMode(10, OUTPUT);
                        if (!SD.begin(4)) {
                          Serial.println("Initialization failed!");
                          return;
                        }
                        Serial.println("Initialization done.");
                      
                        Serial.print("Opening file hello.txt...");
                        myFile = SD.open("hello.txt", FILE_WRITE);
                       
                        if (myFile) {
                      
                          Serial.print("Writing to hello.txt...");
                          myFile.println("Salut les Zeros");
                      
                          Serial.print("Closing file hello.txt...");
                          myFile.close();
                      
                          Serial.println("Done.");
                      
                        } else {
                      
                          Serial.println("Opening  failed!");
                      
                        }
                      
                      }
                      
                      void loop() {
                      
                      }
                      

                      Si tu choisis de mettre la carte SD sur le PC avec un terminal en mode enregistrement sur fichier, tout ce que l'arduino envoie avec Serial.print se retrouvera sur un fichier de la carte SD.

                      -
                      Edité par lorrio 14 janvier 2015 à 9:56:24

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Arduino uno communication UART avec GPS

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown