Différences entre versions de « Adafruit GPS ULTIMATE »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
 
(66 versions intermédiaires par le même utilisateur non affichées)
Ligne 3 : Ligne 3 :
 
== Introduction ==
 
== Introduction ==
  
[[Fichier:GPS-Ultimate.jpg|350px]]
+
{{ADFImage|GPS-Ultimate.jpg|350px}}
  
http://ladyada.net/products/ultimategps/
+
== Raccorder au PC ==
 +
Les modules GPS sont vraiment merveilleux, dès qu'ils sont allumés ils essayent de se synchroniser (FIX) et produisent des données. Comme presques tous les GPS existants, Le GPS Ultimate d'Adafruit utilise une logique  TTL sur sa sortie série pour envoyer ses données.
 +
 
 +
La meilleure façon de commencer à tester un GPS est de le brancher directement sur un ordinateur par l'intermédiaire du convertisseur Série TTL vers USB d'un Arduino.
 +
 
 +
Vous pouvez aussi utiliser un adaptateur FTDI ou tout autre adaptateur TTL mais dans cette démonstration nous allons utiliser un simple Arduino.
  
== Raccorder au PC ==
+
{{ambox-stop|text=Utilisateurs de Leonardo: Cette partie du tuto ne fonctionne pas avec un Leonardo. Voyez la section "Raccordement Arduino" mais revenez sur cette page en ce qui concerne les données GPS! }}
GPS modules are great in that the moment you turn them on, they'll start spitting out data, and trying to get a 'fix' (location verification). Like pretty much every GPS in existance, the Adafruit Ultimate GPS uses TTL serial output to send data so the best way to first test the GPS is to wire it directly to the computer via the TTL serial to USB converter on an Arduino. You can also use an FTDI Friend or other TTL adapter but for this demonstation we'll use a classic Arduino.
 
  
 
=== Le code ===
 
=== Le code ===
First, load a 'blank' sketch into the Arduino:  
+
Pour commencer, charger un sketch "blanc" dans votre Arduino:  
  
  <nowiki>// this sketch will allow you to bypass the Atmega chip
+
  <nowiki>// Ce sketch vous permet de by-passer l'Atmega
// and connect the fingerprint sensor directly to the USB/Serial
+
// et de connecter des senseurs (comme un GPS ou lecteur d'empreinte)
// chip converter.
+
// directement sur le convertisseur USB/Série de votre carte
 +
// Arduino.
 
   
 
   
// Connect VIN to +5V
+
// Connecter VIN au +5V
// Connect GND to Ground
+
// Connecter GND à la masse/ground
// Connect GPS RX (data into GPS) to Digital 0
+
// Connecter GPS RX (réception donnée dans le GPS) vers Arduino Pin 0 (digitiale)
// Connect GPS TX (data out from GPS) to Digital 1
+
// Connecter GPS TX (sortie de donnée du GPS) vers Arduino Pin 1 (digitiale)
 
   
 
   
 
void setup() {}
 
void setup() {}
 
void loop() {}
 
void loop() {}
 
</nowiki>
 
</nowiki>
This is will free up the converter so you can directly wire and bypass the Arduino chip. Once you've uploaded this sketch, wire the GPS as follows:  
+
Voici comment contourner la puce ATMega, vous vous raccordez directement sur le convertisseur USB/Serial.  
 +
 
 +
Une fois que vous avez chargé le scketch, raccordez le GPS comme suit:
  
 
=== Le montage ===
 
=== Le montage ===
  
[[Fichier:GpsUltimatedirectwire.jpg|500px]]
+
{{ADFImage|GpsUltimatedirectwire.jpg|500px}}
  
 
=== Messages GPS ===
 
=== Messages GPS ===
Now plug in the USB cable, and open up the serial monitor from the Arduino IDE and be sure to select 9600 baud in the drop down. You should see text like the following
+
Branchez ensuite le cable USB et ouvrez le moniteur Serie d'Arduino IDE. Veillez à sélectionner 9600 baud dans la liste déroulante.
 +
 
 +
Vous verrez alors apparaître un texte fort semblable à ce qui suit:
 +
 
 +
{{ADFImage|GpsUltimateFetch.jpg}}
 +
 
 +
Ce que vous voyez sont les "messages NMEA" brutes que le module produit.
 +
 
 +
Il y a différents types de messages NMEA, les messages les plus couramment utilisés sont:
 +
# $GPRMC - Global Positioning Recommended Minimum Coordinates
 +
# $GPGGA
 +
 
 +
Ces deux messages produisent les informations suivantes:
 +
* temps,
 +
* date,
 +
* latitude,
 +
* longitude,
 +
* altitude,
 +
* Vitesse estimé (au sol),
 +
* Type de FIX (synchronisation).  
  
[[Fichier:GpsUltimateFetch.jpg]]
+
Le type de Fix indique si le GPS est synchronisé sur des satellites et s'il reçoit assez de données pour déterminer la position (2D fix) ou la position+altitude (3D fix).
  
This is the raw GPS "NMEA sentence" output from the module. There are a few different kinds of NMEA sentences, the most common ones people use are the $GPRMC (Global Positioning Recommended Minimum Coordinates or something like that) and the $GPGGA sentences. These two provide the time, date, latitude, longitude, altitude, estimated land speed, and fix type. Fix type indicates whether the GPS has locked onto the satellite data and received enough data to determine the location (2D fix) or location+altitude (3D fix).
+
Pour plus d'information sur les messages NMEA et ce qu'ils contiennent, vous pouvez vous documenter sur le site suivant [http://www.gpsinformation.org/dale/nmea.htm www.gpsinformation.org/dale/nmea.htm]
  
For more details about NMEA sentences and what data they contain, check out this site
+
Si vous prenez attention au contenu de la capture présentée ci-dessus, vous pouvez constater qu'il y a beaucoup de virgules (sans données en elles). <br />
http://www.gpsinformation.org/dale/nmea.htm
+
C'est parce que le module est sur un bureau, à l'intérieur, et qu'il n'est pas synchronisé (pas de FIX).<br />
 +
Pour que le module se synchronise, il faut qu'il soit à l'extérieur.  
  
If you look at the data in the above window, you can see that there are a lot of commas, with no data in between them. That's because this module is on my desk, indoors, and does not have a 'fix'. To get a fix, we need to put the module outside.  
+
{{Ambox
 +
| type      = delete
 +
| image      = [[File:StopHand.png|40px|alt=Stop]]
 +
| textstyle  = color: red; font-style: italic;
 +
| text      = Les modules GPS vont toujours envoyer des données MEME S'ILS N'ONT PAS DE SYNCHRONISATION!
 +
Afin d'obtenir des donnée 'valides' (remplies) vous devez placer le module GPS directement à l'extérieur avec l'antenne carrée en céramique pointant vers le ciel.<br />
 +
Dans des conditions idéales, le module se synchronise (FIX) en moins de 45 secondes. Cependant, en fonction de votre position, de la configuration satellite, des radiations solaires, des hauts immeubles à proximité, des interférences radio (RF noise), etc, la synchronisation peut prendre jusqu'a une demi-heure (ou plus)!<br />
 +
Cela ne signifie pas que le module GPS est défaillant, il fera toujours tout pour obtenir la synchronisation le plus rapidement possible.
 +
}}
  
<font color="red"><nowiki>GPS modules will always send data EVEN IF THEY DO NOT HAVE A FIX!
+
=== Interprétation des résultats - Coordonnées ===
In order to get 'valid' (not-blank) data you must have the GPS module directly outside, with the square ceramic antenna
+
Regardez la ligne mentionnant '''$GPRMC,194509.000,A,4042.6142,N,07400.4168,W,2.03,221.11,160412,,,A*77'''
pointing up with a clear sky view.
 
In ideal conditions, the module can get a fix in under 45 seconds. however depending on your location, satellite configuration,  
 
solar flares, tall buildings nearby, RF noise, etc it may take up to half an hour (or more) to get a fix!
 
This does not mean your GPS module is broken, the GPS module will always work as fast as it can to get a fix.</nowiki> </font>
 
  
=== Interprétation des résultats - Coordonnées - Google Maps ===
+
Cette ligne est appelée une phrase RMC (Recommended Minimum) contenant les information minimale et contient déjà plein d'information utiles. Chaque donnée est séparée des autre par une virgule (comma en anglais).
Look for the line that says '''$GPRMC,194509.000,A,4042.6142,N,07400.4168,W,2.03,221.11,160412,,,A*77'''
 
  
This line is called the RMC (Recommended Minimum) sentence and has pretty much all of the most useful data. Each chunk of data is seperated by a comma.
+
La première partie '''194509.000''' est une indication de temps GMT. Les deux premiers chiffres '''19'''  indique l'heure (19:00h, aussi connu comme 7pm ou 7 heures du soir) et les deux suivants indique les minutes, ensuite deux autres chiffres pour les secondes et finallement les millisecondes. Donc, cette capture a eu lieu à 7:45 pm (après midi) et 9 secondes (ou encore à 19:45:09 en notation 24h au format européen).
  
The first part '''194509.000''' is the current time GMT. The first two numbers '''19''' indicate the hour (1900h, otherwise known as 7pm) the next two are the minute, the next two are the seconds and finally the millseconds. So the time when this screenshot was taken is 7:45 pm and 9 seconds
+
La seconde partie est un 'code statut' (status code), à savoir:
 +
* '''V''' pour "Void" indique que les données sont invalides.  
 +
* '''A''' pour "Active" indique que le GPS peut obtenir un e synchronisation (lock/fix)
  
The second part is the 'status code', a savoir:
+
Les 4 données suivantes contiennent des données de géolocalisation.
* '''V''' that means the data is Void (invalid).
+
* La Latitude (première série d'information) correspond à l'axe Sud -> Nord (Truc pour Google Map: le Sud vers le bas est négatif, le nord vers le Haut est positif)  
* '''A''' that means its Active (the GPS could get a lock/fix)
+
* La Longitude (deuxième série d'information) correspond à l'axe Ouest -> Est (Truc pour Google Map: De gauche  droite vers l'écriture... on ajoute des lettres sur la lignes. Ouest est négatif, Est est positif)
  
The next 4 pieces of data are the geolocation data. According to the GPS, my location is '''4042.6142,N''' (Latitude 40 degrees, 42.3932 minutes North) & '''07400.4168,W'''. (Longitude 74 degrees, 0.4680 minutes West)  
+
Dans cet exemple, la position est  '''4042.6142,N''' (Latitude 40 degrés, 42.3932 minutes North [''Nord'']) et '''07400.4168,W''' (Longitude 74 degrés, 0.4680 minutes West [''ouest'']).
 +
{{Ambox
 +
| type      = delete
 +
| image      = [[File:StopHand.png|40px|alt=Stop]]
 +
| textstyle  = color: red; font-style: italic;
 +
| text      = Malgré les apparences, les données de géolocalisations ne contiennent pas de données en décimale (pour les degrés). Elles sont présentées en degrés et minutes au format DDMM.MMMM pour la Latitude (les deux premier caractères sont les degrés) et DDDMM.MMMM pour la longitude (les trois premiers caractères sont les degrés)
 +
}}
  
To look at this location in Google maps, type '''+40° 42.6142', -74° 00.4168'''' into the [http://maps.google.com/ google maps search box].<br />
+
=== Localisation sur Google Maps ===
Unfortunately gmaps requires you to use +/- instead of NSWE notaion. N and E are postive, S and W are negative.  
+
Pour identifier cette localisation sur Google Maps, tapez '''+40° 42.6142', -74° 00.4168'''' dans la [http://maps.google.com/ zone de recherche de Google Maps].<br />
 +
Malheureusement, Google Maps n'accepte pas directement la notation ENMA, vous devez donc utiliser  +/- à la place de la notation NSWE. N (Nord) et E (Est) sont positifs, S (Sud) et W (Ouest=West) sont négatif.  
  
The next data is the ground speed in knots. We're going '''2.03''' knots
+
=== Interprétation des résultats - Vitesse ===
 +
En reprenant notre exemple '''$GPRMC,194509.000,A,4042.6142,N,07400.4168,W,2.03,221.11,160412,,,A*77''' déjà mentionné ci-dessus:
  
After that is the tracking angle, this is meant to approximate what 'compass' direction we're heading at based on our past travel
+
Après les données de localisation viennent la vitesse exprimée en [http://en.wikipedia.org/wiki/Knot_%28unit%29 knots]. Un knot correspond à la vitesse du Mile Nautique, soit 1.852 km/h.
  
The one after that is '''160412''' which is the current date (16th of April, 2012).
+
Suivant l'exemple, nous nous déplaçons donc de '''2.03''' knots (3.76 km/h)
  
Finally there is the '''*XX''' data which is used as a data transfer checksum
+
Vient ensuite l'''angle de tracking'', cela correspond approximativement à la direction indiquée par une boussole. Cette direction est calculée sur base de la direction de notre déplacement déjà effectué (donnée nécessaire pour pouvoir indiquer le Nord avec cette boussole virtuelle).
  
Once you get a fix using your GPS module, verify your location with google maps (or some other mapping software). Remember that GPS is often only accurate to 5-10 meters and worse if you're indoors or surrounded by tall buildings.
+
L'information suivante '''160412''' est la date courante soit le 16 Avril 2012 (jour mois année_en_2_positions).
 +
 
 +
Finalement, les données la ligne est terminée avec un '''*XX''' qui est checksum des données transférée.
 +
 
 +
Une fois que vous avez obtenu une synchronisation avec votre module GPS, vérifiez votre position à l'aide de Google Maps (ou autre logiciel de géolocalisation).
 +
Souvenez-vous qu'un GPS dispose d'une précision de seulement 5 à 10 mètres (la plus grande précision étant réservée aux militaires). Cette précision peut se dégrade si vous êtes à l'intérieur ou entouré de haut building/bâtiments.
  
 
== Raccordement Arduino ==
 
== Raccordement Arduino ==
Once you've gotten the GPS module tested with direct wiring, we can go forward and wire it up to a microcontroller. We'll be using an Arduino but you can adapt our code to any other microcontroller that can receive TTL serial at 9600 baud
+
Une fois que vous avez testé le module GPS en lien direct, vous pouvez alors raccorder le module sur votre microcontrôleur. Nous utilisons un Arduino mais vous pouvez adapter le code sur tout autre microcontroleur supportant une communication série TTL à 9600 bauds.
 +
 
 +
Connectez:
 +
* '''VIN''' sur +5V,
 +
* GND vers la masse (GND),
 +
* '''RX''' sur la broche digitale 2
 +
* '''TX''' sur la broche digitale 3
 +
 
 +
{{ADFImage|GpsUltimateArduinowire.jpg}}
 +
 
 +
Le prochaine étape est de télécharger la librairie GPS d'Adafruit. Cette librairie effectue de nombreuses tâches permettant de recevoir des données depuis un module GPS.
 +
Parmis ces tâches, la librairie réceptionne le flux d'information en tâche de fond (traitement via interruption) et décode automatiquement les informations qu'elle contient (parsing).
 +
 
 +
[https://github.com/adafruit/Adafruit-GPS-Library Visitez le repository GitHub pour télécharger la librairie] (cliquez sur le bouton DOWNLOADS dans le coin en haut à droite), Une fois le répertoire décompressé, renommez le '''Adafruit_GPS'''. Vérifiez que le répertoire '''Adafruit_GPS''' contient bien les fichiers '''Adafruit_GPS.cpp''' et '''Adafruit_GPS.h'''.
 +
 
 +
{{ambox-stop|text=Utilisateurs de Leonardo: Il y a un exemple spécial prévu pour Léonardo dans les sketch/croquis d'exemple de la bibliothèque Adafruit_GPS! }}
 +
 
 +
Placez le répertoire Adafruit_GPS (la librarie) dans votre répertoire <votre_répertoire_pour_les_sketch_arduino>/libraries/ . Vous pourriez avoir besoin de créer le répertoire "libraries" si c'est la première librairie que vous installez.
 +
 
 +
Redémarrez votre IDE Arduino.
 +
 
 +
Ouvrez le sketch d'exemple '''File→Examples→Adafruit_GPS→echo''' et chargez le sur votre Arduino. Ouvrez ensuite votre moniteur série.
 +
 
 +
Ce sketch lit les données depuis le port série logiciel (software serial port) constitué des broches 2 & 3 pour ensuite les renvoyer vers le port série matériel (hardware serial port) raccordé au connecteur USB.
 +
 
 +
Vous pouvez configurer la production de données GPS en plaçant/retirant les marques de commentaires sur les lignes de la procédure '''setup()'''. Par exemple, nous pouvons demander au GPS d'envoyer des syntaxes (format de données) différentes, et changer la fréquence d'envoi de ces données.
 +
 
 +
10 Hz (10 fois par secondes) est la vitesse maximale, et cela représente beaucoup de données.
 +
Vous ne devriez pas être capable de sortir "toutes les données" à cette vitesse parce que le débit de 9600 bauds n'est pas assez rapide.
 +
 
 +
<nowiki>
 +
// Ci-dessous, vous pouvez sélectionner la syntaxe que le module émet.
 +
 +
  // dé-commentez cette ligne pour activer RMC (recommended minimum) et GGA (fix data) incluant l'altitude
 +
  GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
 +
  // dé-commentez cette ligne pour activer seulement le "minimum recommended" (données minimale recommandée) pour les mises-à-jour haut débit!
 +
  //GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCONLY);
 +
  // dé-commentez cette ligne pour activer  toutes les données disponibles - à 9600 bauds vous devez adapter la fréquence de mise-à-jour à 1 Hz
 +
  //GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_ALLDATA);
 +
 +
  // Initialise la fréquence de mise-à-jour des données
 +
  // 1 Hz
 +
  //GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ);
 +
  // 5 Hz - à 9600 bauds vous pouvez seulement sélectionner une syntaxe de sortie RMC ou RMCGGA
 +
  GPS.sendCommand(PMTK_SET_NMEA_UPDATE_5HZ);
 +
  // 10 Hz - pour 9600 bauds vous pouvez seulement sélectionner la syntaxe de sortie RMC  //GPS.sendCommand(PMTK_SET_NMEA_UPDATE_10HZ);
 +
</nowiki>
 +
 
 +
D'une façon général, nous avons constaté que la plupart des projets ont seulement besoin d'un syntaxe NMEA de type RMC et GGA. D'une façon générale, vous n'auriez pas besoin de réceptionner toutes les données ALLDATA à moins que vous ne vouliez aussi connaître la position des satellites.
 +
 
 +
== Analyse (parsing) ==
 +
 
 +
Puisque tous les GPS produisent des séquences (syntaxes) NMEA et que les projets ont souvent besoin d'extraire les données qu'elles contiennent (position,vitesse,etc), AdaFruit à développé la libraire ''Adafruit GPS'' pour grandement simplifier la tâche d'extraction des informations.
 +
 
 +
En ayant une librairie qui lit, stocke et analyse (parse) les données reçue en tâche de fond (via interruption), il devient trivial d'interroger la librairie pour connaître la dernière position GPS sans devoir s'atteler à un long travail d'analyse de séquences NMEA à l'état brut.
 +
 
 +
Ouvrez le sketch '''File→Examples→Adafruit_GPS→parsing''' et chargez le sur votre Arduino. Ouvrez ensuite votre moniteur Série dans Arduino IDE.
 +
 
 +
{{ADFImage|GpsUltimateParse.jpg}}
 +
 
 +
Dans ce sketch nous appelons '''GPS.read()''' dans le timer once-a-millisecond (c'est le timer qui exécute la commande '''millis()'''). Ensuite, nous pouvons utiliser la fonctio '''GPS.newNMEAreceived()''' afin de vérifier si un nouveau paquet d'information est disponible. Si la fonction GPS.newNMEAreceived() retourne '''true''' (vrai) alors nous pouvons demander à la librairie d'analyser le paquet de donnée à l'aide de '''GPS.parse(GPS.lastNMEA())'''.
 +
 
 +
Il est nécessaire de maintenir les processus d'interrogation et d'analyse dans la boucle principale (loop) du programme. En effet, si ces opérations étaient prisent en charge par une intérruption, nous perdrions (effacerions) des données GPS par accident.
 +
 
 +
Une fois que les données sont analysées (parsed), nous pouvons obtenir les informations depuis la librairie en appelant des fonctions telles que '''GPS.day''' (''le jour''), '''GPS.month''' (''le mois'') et '''GPS.year''' (''l'année'') fournissant les détails de la date courante. '''GPS.fix''' sera à 1 s'il y a une synchronisation (fix), 0 s'il n'y a pas de synchronisation. Si nous avons une synchronisation, nous pouvons obtenir la latitude via '''GPS.latitude''', la longitude via '''GPS.longitude''', la vitesse via '''GPS.speed''' (en knots, pas en mph ou km/h!), l'angle via '''GPS.angle''', l'altitude via '''GPS.altitude''' (en centimetres) et le nombres de satellites avec '''GPS.satellites'''.
 +
 
 +
Note: 1 knot = 1.852 Km/H (précisément)
 +
 
 +
Cela devrait permettre de créer beaucoup plus facilement des projets nécessitant un outil de localisation. Nous suggérons de laisser la fréquence de mise-à-jour fixée sur 1Hz et de configurer le GPS afin d'obtenir les syntaxes RMC et GGA (puisque le parseur ignore et ne mémorise pas les autres données).
 +
 
 +
== Batterie de secours ==
 +
 
 +
Le GPS intègre Horloge Temps réelle (RTC) qui permet de maintenir la date et l'heure même quand le module n'est pas alimenté et qu'il ne dispose pas encore d'une synchronisation (FIX). Cela permet aussi de réduire le temps de synchronisation, par conséquent, maintenir cette horloge sous tension peut être utile.
 +
Cette information est importante si votre projet peut être privé de sa source d'alimentation (par exemple un montage alimenté par un panneau solaire ou équivalent).
 +
Pour utiliser la RTC, il faut connecter une pile. Il y a un pastille à l'arrière du Breakout board pour y placer une pile CR1220 (et son support). Le support est fournit mais la pile n'est pas incluse. Vous pouvez utiliser n'importe quelle pile de 12mm - elles sont assez répandues.
 +
 
 +
{{ADFImage|GpsUltimatePile1.jpg}}
 +
 
 +
=== GPS Ultime V1 & V2 ===
 +
Avant d'insérer la pile, vous devez d'abord couper/rompre la piste entre les pastilles de soudure à l'arrière du breakout board (voir "RTC" sur la sérigraphie).
 +
Cela déconnecte la broche VIN de l'alimentation de la pile. Utilisez un multimètre pour vérifier la discontinuité du circuit (les deux pastilles ne doivent plus être connectées ensembles).
 +
 
 +
{{ADFImage|GpsUltimatePile2.jpg}}
 +
 
 +
=== GPS Ultime V3 ===
 +
 
 +
Dans la version V3 du module, il n'y a plus de piste à couper :-)
 +
 
 +
Le module utilise une diode!
 +
 
 +
== Fuseau Horaire ==
 +
Souvenez vous que le GPS ne sais pas dans quel fuseau horaire vous vous trouvez (même s'il connait votre position, il n'est pas possible de déterminer le fuseau horaire sans utiliser une tableau croisée... très massif par ailleurs).
 +
 
 +
Par conséquent, toutes les date/heures sont exprimés en UTC (temps universel, soit l'heure de Greenwich) - vous aurez besoin d'écrire du code pour convertir cette heure UTC en heure de votre fuseau horaire tout en tenant compte des règles heures été/hiver!
 +
 
 +
Comme cela est relativement compliqué (et source d'erreur), la plupart des utilisateurs utilisent (et stocke) le temps UTC.
 +
 
 +
== Câblage avancé ==
 +
 
 +
Jusque maintenant nous avons utilisé les broches '''VIN GND TX''' et '''RX''' de notre GPS - mais il nous reste d'autres broches.
 +
 
 +
Mais que font ces autres broches et en aurez vous jamais besoin? Dans plus de 90% des cas, vous n'aurez probablement pas besoin de ces autres broches dans vos projets GPS. AdaFruit les a cependant rendues disponibles en cas de besoin spécifiques.
 +
 
 +
* '''FIX''' est une broche en sortie - c'est la même que celle qui commande la LED rouge. Il s'agit de la même broche que celle qui pilôte la LED rouge. Quand il n'y a pas de synchronisation (FIX), la LED clignote une fois toutes les secondes. Quand il y a un FIX, la broche est sur LOW (bas, 0V) la plupart du temps et clignote 200ms toutes les 15 secondes.
 +
* '''VBAT''' est une broche en entrée - elle est raccordée sur la broche "real time clock battery backup" (batterie de secours de l'horloge temps réel) du GPS. Nous vous suggérons d'utiliser l'emplacement de pile à l'arrière du Breakout si vous disposez d'une pile adéquate. Sinon vous pouvez utiliser tout les autres piles que vous voulez pour autant qu'elle soit sous 3.3v, vous pouvez LA connecter sur la pin VBAT.<br />Version V1 & V2: Si vous faite cela, '''assurez-vous de couper le pontage entre les deux pastilles de soudures (marquées RTC) à l'arrière du breakout'''.
 +
* '''EN''' broche d'activation (Enable). Cette dernière est à HIGH (via une résistance de 10 KOhm). Le GPS est désactivé lorsque la broche est raccordée sur la masse (GND).  Cela peut être pratique pour les projets "très basse consommation" où vous voudriez désactivé le module pour de longues périodes. Attention, '''lorsque vous désactivez le module, vous perdez aussi la synchronisation'''.
 +
* '''3.3V''' est aussi la sortie du régulateur de tension 3.3V du breakout board. Si vous avez besoin d'une tension 3.3V bien régulée, vous pouvez utiliser celle là, est peut fournir au moins 100 mA.
 +
* '''PPS''' est une nouvelle broche en sortie sur le module en version v3. C'est une sortie de "pulsation par seconde" (''pulse per second''). Cette pulsation fait 50ms, il devrait donc être assez facile pour un microcontrôleur que se synchroniser avec ce signal.
 +
 
 +
== Data-Logger intégré ==
 +
 
 +
Une fonctionnalité intéressante du MTK3339 est sa capacité de faire un enregistrement de données directement dans la mémoire flash du module (data-logger). Elle permet de stocker la date, l'heure, la latitude, la longitude et l'altitude dans la mémoire flash de 64 Kb disponible dans le module. Il ne s'agit pas d'un enregistreur haute résolution - un enregistrement toutes les 15 secondes lorsqu'il y a une synchro (fix) - mais cela devrait convenir pour 99% des projets voulant traquer des déplacements et positions. Cela peut devenir un moyen vraiment puissant (et très peu gourmand en énergie) pour enregistrer des données, pas besoin de carte SD ou d'EEPROM! La mémoire flash peut stocker jusqu'à 16 heures de données.
 +
 
 +
Le module GSP nécessite un microcontrolleur pour démarrer le data-logger (en introduisant une requête de démarrage "kick start"). S'il y a une perte d'alimentation il faudra une autre "impulsion" pour redémarrer. Si vous avez déjà des données stockées dans la mémoire FLASH, une nouvelle trace sera créé (sans perte des anciennes données). L'enregistrement s'arrêtera lorsqu'il n'y a plus de mémoire disponible sans écrasement des anciennes données.
 +
Hormis cet inconvénient, il s'agit d'un joli plus et AdaFruit propose une librairie vous permettant de supporter et d'utiliser cette fonctionnalité.
 +
 
 +
=== Démarrer ===
 +
Dans un premier temps, nous allons mettre le data-logger en marche.
 +
 
 +
Ouvrez le sketch '''File→Examples→Adafruit_GPS→locus_start''', ce dernier montre comment démarrer le logger (appelé LOCUS)
 +
 
 +
La partie principale du code est reprise ci-dessous:
 +
<nowiki>  Serial.print("STARTING LOGGING....");
 +
  if (GPS.LOCUS_StartLogger())
 +
    Serial.println(" STARTED!");
 +
  else
 +
    Serial.println(" no response :(");
 +
  delay(1000);
 +
</nowiki>
 +
 
 +
Vous devriez démarrer le Logger et vérifier la réponse par la suite.
 +
 
 +
{{ADFImage|GpsUltimateLocus1.jpg}}
 +
 
 +
=== Statut du LOCUS ===
 +
 
 +
Une fois que vous avez constaté que le GPS effectue l'enregistrement des donnée, vous pouvez charger le sketch "Statut du LOCUS" qui vous fournira plus d'information.
 +
 
 +
Chargez le sketch '''File→Examples→Adafruit_GPS→locus_status''' sur votre Arduino.
 +
 
 +
[[Fichier:GpsUltimateLocus2.jpg]]
 +
 
 +
Il produit plus d'information
 +
 
 +
La première donnée est le nombre de collecte (Log #), cela indique combien de traces sont stockées en mémoire. Chaque fois que vous commencez et sauvez des données, un nouvelle collecte est faite. "Full Stop" (arrêt total) indique que le logger ne dispose plus de mémoire pour stocker les informations... il s'arrête.
 +
 
 +
Le statut indique ensuite que nous faisons de la collecte d'information uniquement durant une synchronisation (fix data) et à interval définit (set intervals) de 15 secondes.
 +
 
 +
Nous ne faisons pas de collecte de distance et vitesse.
 +
 
 +
Le statut actuel est LOGGING (collecte active), il y a également le nombre d'enregistrement mémorisés. Chaque enregistrement dispose d'une information de localisation et de temps. Nous faisons un enregistrement toutes les 15 secondes, vous pouvez constater (ci-dessus) que l'enregistrement s'incrémente de 344 à 345.
 +
 
 +
Finalement, nous pouvons voir quel est le pourcentage d'occupation de la mémoire flash (seulement 4% pour le moment).
 +
 
 +
'''Dans un cas d'utilisation réel''', vous auriez certainement besoin de démarrer le data-logger pour ensuite mettre le micro-contrôleur en mode veille (pour économiser l'énergie) et finalement vérifier le statut du logging de temps à autre avant de replonger dans un autre cycle de veille.
 +
 
 +
=== Extraction des données ===
 +
 
 +
Pour finir, après l'enregistrement des données de localistion, vient le temps d'extraire ces données.
 +
 
 +
Pour y arriver, nous devons d'abord extraire l'information brute (raw data) depuis la mémoire flash pour ensuite les décoder.
 +
 
 +
Chargez le sketch '''File→Examples→Adafruit_GPS→locus_dump''' sur votre Arduino et ouvrez ensuite votre le moniteur Série d'Arduino.
 +
 
 +
{{ambox-stop|text=Attention: demander à Arduino de manipuler 64Kb de donnée flash (à extraire du GPS) avec 2K de SRAM peut parfois surcharger le processeur. Voyez les instruction du ''GPS Tool'' ci-dessous si vous rencontrez des problèmes (soubresaut,arrêt intempestif, etc). }}
 +
 
 +
{{ADFImage|GpsUltimateLocus3.jpg}}
 +
 
 +
Faite un copier/coller du texte disponible après les "--—-" (commençant avec $PMTKLOX,0,86*67 et finissant avec $PMTK001,622,3*36) dans la zone de saisir disponible disponible '''en bas de l'article''' [http://ladyada.net/products/ultimategps/ GPS Ultimate] de LadyAda.
 +
 
 +
=== Utiliser GPS Tool ===
 +
Si vous éprouvez des difficultés à utiliser la combinaison d'outil Arduino/javascript, vous pouvez également essayer d'utiliser le "GPS tool". Cet outil fonctionne uniquement sous Windows mais il est vraiment puissant.
 +
 
 +
Connecter le module GPS sur Arduino (en utilisant [[Adafruit GPS ULTIMATE#Raccordement_Arduino|le méthode de raccordement directe) , un Adaptateur FTDI ou un convertisseur TTL puis téléchargez [http://learn.adafruit.com/adafruit-ultimate-gps/downloads-and-resources GPS Tool] connectez le programme sur le GPS via le port COM correspondant à l'Arduino/FTDI/câble TTL. Vous pouvez ensuite interroger, prendre une copie (dump) ou effacer (delete) la mémoire de logging.
 +
 
 +
== Antenne ==
 +
La nouvelle version 3 du GPS Ultime permet d'y brancher une antenne externe (optionnel)!
 +
 
 +
Si le connecteurs µFL n'est pas disponible sur la carte alors vous avez un module v1 et v2 (qui ne supporte pas d'antenne).
 +
 
 +
{{ADFImage|GpsUltimateAntenne00.jpg|640px}}
 +
 
 +
Tous les modules GPS Ultime dispose d'une antenne intégrée (patch antenna) qui dispose d'une sensibilité de -165 dBm parfaite pour de nombreux projets. Cependant, si vous voulez placer votre projet dans une boite, il n'est pas forcement possible de pointer l'antenne vers le haut. Vous pourriez également avoir besoin de placer votre projet dans une boite métallique ou simplement avoir besoin d'une sensibilité accrue. Pour tous ces cas, {{pl|244|vous pourriez avoir besoin d'utiliser une antenne externe active}}.
 +
 
 +
{{ambox|text=Les antennes {{underline|actives}} utilisent plus de courant, elle peuvent donc offrir plus de gain mais au prix d'une consommation énergétique plus importante. Voyez la fiche technique de votre antenne pour connaître exactement la consommation de votre antenne - valeur qui varie entre 10 et 20mA.}}
 +
 
 +
 
 +
La plupart des antennes GPS utilisent des connecteurs SMA (très populaire et simple d'emploi). Un connecteur SMA serait un peu "gros" sur le GPS Ultime, AdaFruit à donc opté pour un connecteur µFL beaucoup plus léger, petit et facile à assembler. Ce connecteur ne vous impose pas un poids et encombrement inutile si vous n'aviez pas besoin d'antenne externe. Il est facile de brancher un connecteur µFL mais vous aurez certainement besoin {{pl|243|d'un câble adaptateur µFL->SMA}} pour y connecter votre {{pl|244|antenne GPS active}}.
  
Connect '''VIN''' to +5V, GND to Ground, '''RX''' to digital 2 and '''TX''' to digital 3
+
Le GPS Ultime détecte automatiquement la présence d'une antenne active... et l'utilise automatiquement [ ''c'est magique :-)'' ] - vous n'avez pas besoin d'utiliser une quelconque commande pour activer l'antenne
  
[[Fichier:GpsUltimateArduinowire.jpg]]
 
  
A POURSUIVRE!!!
+
Le protocole NEMA utilise une séquence (phrasée) permettant de connaître le statut de l'antenne. '''$PGTOP,11,x''' où '''x''' est ne numéro de statut.
http://ladyada.net/products/ultimategps/
+
* '''3''': signifie que le GPS utilise l'antenne externe.
 +
* '''2''': signifie que le GPS utilise l'antenne interne.
 +
* '''1''': signifie que l'antenne est en court-circuit ou qu'il y a un problème.
  
== Outils ==
+
Sur les nouveaux shields et modules GPS, vous devrez informer le firmware du GPS que vous voulez être informé du statut de l'antenne. Vous pouvez donc ajouter '''gps.sendCommand(PGCMD_ANTENNA)''' à l'endroit où le code mentionne le débit de rafraichissement et le format des données à produire.
* [http://mchobby.be/data-files/datasheet/PMTK_A08.pdf Ensemble des commandes MTK3329/MTK3339] permettant de changer la fréquence de mise-à-jour, le débit (bauds), la syntaxe de sortie, etc!
 
* [http://www.adafruit.com/datasheets/PA6B-Datasheet-A07.pdf Fiche technique du PA6B (MTK3329), module GPS]
 
* [http://www.adafruit.com/datasheets/GlobalTop-FGPMMOPA6C-Datasheet-V0A-Preliminary.pdf Fiche technique du PA6C (MTK3339), module GPS]
 
* [http://www.adafruit.com/datasheets/GlobalTop%20MT3339%20PC%20Tool%20v1.3%20without%20F2.0&I3.1.rar MT3339 GPS PC Tool] (windows uniquement) et [http://www.adafruit.com/datasheets/GlobalTop%20MT3339%20PC%20Tool%20Operation%20Manual%20v1.1.pdf son manuel]
 
* [http://www.adafruit.com/datasheets/MiniGPS_Tool_1.7.1.zip Mini GPS tool] (windows uniquement)
 
  
== Où Acheter ==
+
{{ADFImage|GpsUltimateAntenne01.jpg}}
[http://mchobby.be/PrestaShop/product.php?id_product=62 Le module GPS Ultimate d'AdaFruit est disponible chez MC Hobby].
 
  
{{ADF-Accord}}
 
  
{{MCH-Accord}}
+
{{GpsUltimate-TRAILER}}

Version actuelle datée du 11 juin 2014 à 11:13


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Introduction

GPS-Ultimate.jpg
Crédit: AdaFruit Industries www.adafruit.com

Raccorder au PC

Les modules GPS sont vraiment merveilleux, dès qu'ils sont allumés ils essayent de se synchroniser (FIX) et produisent des données. Comme presques tous les GPS existants, Le GPS Ultimate d'Adafruit utilise une logique TTL sur sa sortie série pour envoyer ses données.

La meilleure façon de commencer à tester un GPS est de le brancher directement sur un ordinateur par l'intermédiaire du convertisseur Série TTL vers USB d'un Arduino.

Vous pouvez aussi utiliser un adaptateur FTDI ou tout autre adaptateur TTL mais dans cette démonstration nous allons utiliser un simple Arduino.

Le code

Pour commencer, charger un sketch "blanc" dans votre Arduino:

// Ce sketch vous permet de by-passer l'Atmega
// et de connecter des senseurs (comme un GPS ou lecteur d'empreinte) 
// directement sur le convertisseur USB/Série de votre carte
// Arduino.
 
// Connecter VIN au +5V
// Connecter GND à la masse/ground
// Connecter GPS RX (réception donnée dans le GPS) vers Arduino Pin 0 (digitiale)
// Connecter GPS TX (sortie de donnée du GPS) vers Arduino Pin 1 (digitiale)
 
void setup() {}
void loop() {}

Voici comment contourner la puce ATMega, vous vous raccordez directement sur le convertisseur USB/Serial.

Une fois que vous avez chargé le scketch, raccordez le GPS comme suit:

Le montage

GpsUltimatedirectwire.jpg
Crédit: AdaFruit Industries www.adafruit.com

Messages GPS

Branchez ensuite le cable USB et ouvrez le moniteur Serie d'Arduino IDE. Veillez à sélectionner 9600 baud dans la liste déroulante.

Vous verrez alors apparaître un texte fort semblable à ce qui suit:

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com

Ce que vous voyez sont les "messages NMEA" brutes que le module produit.

Il y a différents types de messages NMEA, les messages les plus couramment utilisés sont:

  1. $GPRMC - Global Positioning Recommended Minimum Coordinates
  2. $GPGGA

Ces deux messages produisent les informations suivantes:

  • temps,
  • date,
  • latitude,
  • longitude,
  • altitude,
  • Vitesse estimé (au sol),
  • Type de FIX (synchronisation).

Le type de Fix indique si le GPS est synchronisé sur des satellites et s'il reçoit assez de données pour déterminer la position (2D fix) ou la position+altitude (3D fix).

Pour plus d'information sur les messages NMEA et ce qu'ils contiennent, vous pouvez vous documenter sur le site suivant www.gpsinformation.org/dale/nmea.htm

Si vous prenez attention au contenu de la capture présentée ci-dessus, vous pouvez constater qu'il y a beaucoup de virgules (sans données en elles).
C'est parce que le module est sur un bureau, à l'intérieur, et qu'il n'est pas synchronisé (pas de FIX).
Pour que le module se synchronise, il faut qu'il soit à l'extérieur.

Interprétation des résultats - Coordonnées

Regardez la ligne mentionnant $GPRMC,194509.000,A,4042.6142,N,07400.4168,W,2.03,221.11,160412,,,A*77

Cette ligne est appelée une phrase RMC (Recommended Minimum) contenant les information minimale et contient déjà plein d'information utiles. Chaque donnée est séparée des autre par une virgule (comma en anglais).

La première partie 194509.000 est une indication de temps GMT. Les deux premiers chiffres 19 indique l'heure (19:00h, aussi connu comme 7pm ou 7 heures du soir) et les deux suivants indique les minutes, ensuite deux autres chiffres pour les secondes et finallement les millisecondes. Donc, cette capture a eu lieu à 7:45 pm (après midi) et 9 secondes (ou encore à 19:45:09 en notation 24h au format européen).

La seconde partie est un 'code statut' (status code), à savoir:

  • V pour "Void" indique que les données sont invalides.
  • A pour "Active" indique que le GPS peut obtenir un e synchronisation (lock/fix)

Les 4 données suivantes contiennent des données de géolocalisation.

  • La Latitude (première série d'information) correspond à l'axe Sud -> Nord (Truc pour Google Map: le Sud vers le bas est négatif, le nord vers le Haut est positif)
  • La Longitude (deuxième série d'information) correspond à l'axe Ouest -> Est (Truc pour Google Map: De gauche droite vers l'écriture... on ajoute des lettres sur la lignes. Ouest est négatif, Est est positif)

Dans cet exemple, la position est 4042.6142,N (Latitude 40 degrés, 42.3932 minutes North [Nord]) et 07400.4168,W (Longitude 74 degrés, 0.4680 minutes West [ouest]).

Localisation sur Google Maps

Pour identifier cette localisation sur Google Maps, tapez +40° 42.6142', -74° 00.4168' dans la zone de recherche de Google Maps.
Malheureusement, Google Maps n'accepte pas directement la notation ENMA, vous devez donc utiliser +/- à la place de la notation NSWE. N (Nord) et E (Est) sont positifs, S (Sud) et W (Ouest=West) sont négatif.

Interprétation des résultats - Vitesse

En reprenant notre exemple $GPRMC,194509.000,A,4042.6142,N,07400.4168,W,2.03,221.11,160412,,,A*77 déjà mentionné ci-dessus:

Après les données de localisation viennent la vitesse exprimée en knots. Un knot correspond à la vitesse du Mile Nautique, soit 1.852 km/h.

Suivant l'exemple, nous nous déplaçons donc de 2.03 knots (3.76 km/h)

Vient ensuite l'angle de tracking, cela correspond approximativement à la direction indiquée par une boussole. Cette direction est calculée sur base de la direction de notre déplacement déjà effectué (donnée nécessaire pour pouvoir indiquer le Nord avec cette boussole virtuelle).

L'information suivante 160412 est la date courante soit le 16 Avril 2012 (jour mois année_en_2_positions).

Finalement, les données la ligne est terminée avec un *XX qui est checksum des données transférée.

Une fois que vous avez obtenu une synchronisation avec votre module GPS, vérifiez votre position à l'aide de Google Maps (ou autre logiciel de géolocalisation). Souvenez-vous qu'un GPS dispose d'une précision de seulement 5 à 10 mètres (la plus grande précision étant réservée aux militaires). Cette précision peut se dégrade si vous êtes à l'intérieur ou entouré de haut building/bâtiments.

Raccordement Arduino

Une fois que vous avez testé le module GPS en lien direct, vous pouvez alors raccorder le module sur votre microcontrôleur. Nous utilisons un Arduino mais vous pouvez adapter le code sur tout autre microcontroleur supportant une communication série TTL à 9600 bauds.

Connectez:

  • VIN sur +5V,
  • GND vers la masse (GND),
  • RX sur la broche digitale 2
  • TX sur la broche digitale 3

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com

Le prochaine étape est de télécharger la librairie GPS d'Adafruit. Cette librairie effectue de nombreuses tâches permettant de recevoir des données depuis un module GPS. Parmis ces tâches, la librairie réceptionne le flux d'information en tâche de fond (traitement via interruption) et décode automatiquement les informations qu'elle contient (parsing).

Visitez le repository GitHub pour télécharger la librairie (cliquez sur le bouton DOWNLOADS dans le coin en haut à droite), Une fois le répertoire décompressé, renommez le Adafruit_GPS. Vérifiez que le répertoire Adafruit_GPS contient bien les fichiers Adafruit_GPS.cpp et Adafruit_GPS.h.

Placez le répertoire Adafruit_GPS (la librarie) dans votre répertoire <votre_répertoire_pour_les_sketch_arduino>/libraries/ . Vous pourriez avoir besoin de créer le répertoire "libraries" si c'est la première librairie que vous installez.

Redémarrez votre IDE Arduino.

Ouvrez le sketch d'exemple File→Examples→Adafruit_GPS→echo et chargez le sur votre Arduino. Ouvrez ensuite votre moniteur série.

Ce sketch lit les données depuis le port série logiciel (software serial port) constitué des broches 2 & 3 pour ensuite les renvoyer vers le port série matériel (hardware serial port) raccordé au connecteur USB.

Vous pouvez configurer la production de données GPS en plaçant/retirant les marques de commentaires sur les lignes de la procédure setup(). Par exemple, nous pouvons demander au GPS d'envoyer des syntaxes (format de données) différentes, et changer la fréquence d'envoi de ces données.

10 Hz (10 fois par secondes) est la vitesse maximale, et cela représente beaucoup de données. Vous ne devriez pas être capable de sortir "toutes les données" à cette vitesse parce que le débit de 9600 bauds n'est pas assez rapide.

 // Ci-dessous, vous pouvez sélectionner la syntaxe que le module émet.
 
  // dé-commentez cette ligne pour activer RMC (recommended minimum) et GGA (fix data) incluant l'altitude
  GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
  // dé-commentez cette ligne pour activer seulement le "minimum recommended" (données minimale recommandée) pour les mises-à-jour haut débit!
  //GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCONLY);
  // dé-commentez cette ligne pour activer  toutes les données disponibles - à 9600 bauds vous devez adapter la fréquence de mise-à-jour à 1 Hz
  //GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_ALLDATA);
 
  // Initialise la fréquence de mise-à-jour des données
  // 1 Hz 
  //GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ);
  // 5 Hz - à 9600 bauds vous pouvez seulement sélectionner une syntaxe de sortie RMC ou RMCGGA 
  GPS.sendCommand(PMTK_SET_NMEA_UPDATE_5HZ);
  // 10 Hz - pour 9600 bauds vous pouvez seulement sélectionner la syntaxe de sortie RMC  //GPS.sendCommand(PMTK_SET_NMEA_UPDATE_10HZ);

D'une façon général, nous avons constaté que la plupart des projets ont seulement besoin d'un syntaxe NMEA de type RMC et GGA. D'une façon générale, vous n'auriez pas besoin de réceptionner toutes les données ALLDATA à moins que vous ne vouliez aussi connaître la position des satellites.

Analyse (parsing)

Puisque tous les GPS produisent des séquences (syntaxes) NMEA et que les projets ont souvent besoin d'extraire les données qu'elles contiennent (position,vitesse,etc), AdaFruit à développé la libraire Adafruit GPS pour grandement simplifier la tâche d'extraction des informations.

En ayant une librairie qui lit, stocke et analyse (parse) les données reçue en tâche de fond (via interruption), il devient trivial d'interroger la librairie pour connaître la dernière position GPS sans devoir s'atteler à un long travail d'analyse de séquences NMEA à l'état brut.

Ouvrez le sketch File→Examples→Adafruit_GPS→parsing et chargez le sur votre Arduino. Ouvrez ensuite votre moniteur Série dans Arduino IDE.

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com

Dans ce sketch nous appelons GPS.read() dans le timer once-a-millisecond (c'est le timer qui exécute la commande millis()). Ensuite, nous pouvons utiliser la fonctio GPS.newNMEAreceived() afin de vérifier si un nouveau paquet d'information est disponible. Si la fonction GPS.newNMEAreceived() retourne true (vrai) alors nous pouvons demander à la librairie d'analyser le paquet de donnée à l'aide de GPS.parse(GPS.lastNMEA()).

Il est nécessaire de maintenir les processus d'interrogation et d'analyse dans la boucle principale (loop) du programme. En effet, si ces opérations étaient prisent en charge par une intérruption, nous perdrions (effacerions) des données GPS par accident.

Une fois que les données sont analysées (parsed), nous pouvons obtenir les informations depuis la librairie en appelant des fonctions telles que GPS.day (le jour), GPS.month (le mois) et GPS.year (l'année) fournissant les détails de la date courante. GPS.fix sera à 1 s'il y a une synchronisation (fix), 0 s'il n'y a pas de synchronisation. Si nous avons une synchronisation, nous pouvons obtenir la latitude via GPS.latitude, la longitude via GPS.longitude, la vitesse via GPS.speed (en knots, pas en mph ou km/h!), l'angle via GPS.angle, l'altitude via GPS.altitude (en centimetres) et le nombres de satellites avec GPS.satellites.

Note: 1 knot = 1.852 Km/H (précisément)

Cela devrait permettre de créer beaucoup plus facilement des projets nécessitant un outil de localisation. Nous suggérons de laisser la fréquence de mise-à-jour fixée sur 1Hz et de configurer le GPS afin d'obtenir les syntaxes RMC et GGA (puisque le parseur ignore et ne mémorise pas les autres données).

Batterie de secours

Le GPS intègre Horloge Temps réelle (RTC) qui permet de maintenir la date et l'heure même quand le module n'est pas alimenté et qu'il ne dispose pas encore d'une synchronisation (FIX). Cela permet aussi de réduire le temps de synchronisation, par conséquent, maintenir cette horloge sous tension peut être utile. Cette information est importante si votre projet peut être privé de sa source d'alimentation (par exemple un montage alimenté par un panneau solaire ou équivalent). Pour utiliser la RTC, il faut connecter une pile. Il y a un pastille à l'arrière du Breakout board pour y placer une pile CR1220 (et son support). Le support est fournit mais la pile n'est pas incluse. Vous pouvez utiliser n'importe quelle pile de 12mm - elles sont assez répandues.

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com

GPS Ultime V1 & V2

Avant d'insérer la pile, vous devez d'abord couper/rompre la piste entre les pastilles de soudure à l'arrière du breakout board (voir "RTC" sur la sérigraphie). Cela déconnecte la broche VIN de l'alimentation de la pile. Utilisez un multimètre pour vérifier la discontinuité du circuit (les deux pastilles ne doivent plus être connectées ensembles).

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com

GPS Ultime V3

Dans la version V3 du module, il n'y a plus de piste à couper :-)

Le module utilise une diode!

Fuseau Horaire

Souvenez vous que le GPS ne sais pas dans quel fuseau horaire vous vous trouvez (même s'il connait votre position, il n'est pas possible de déterminer le fuseau horaire sans utiliser une tableau croisée... très massif par ailleurs).

Par conséquent, toutes les date/heures sont exprimés en UTC (temps universel, soit l'heure de Greenwich) - vous aurez besoin d'écrire du code pour convertir cette heure UTC en heure de votre fuseau horaire tout en tenant compte des règles heures été/hiver!

Comme cela est relativement compliqué (et source d'erreur), la plupart des utilisateurs utilisent (et stocke) le temps UTC.

Câblage avancé

Jusque maintenant nous avons utilisé les broches VIN GND TX et RX de notre GPS - mais il nous reste d'autres broches.

Mais que font ces autres broches et en aurez vous jamais besoin? Dans plus de 90% des cas, vous n'aurez probablement pas besoin de ces autres broches dans vos projets GPS. AdaFruit les a cependant rendues disponibles en cas de besoin spécifiques.

  • FIX est une broche en sortie - c'est la même que celle qui commande la LED rouge. Il s'agit de la même broche que celle qui pilôte la LED rouge. Quand il n'y a pas de synchronisation (FIX), la LED clignote une fois toutes les secondes. Quand il y a un FIX, la broche est sur LOW (bas, 0V) la plupart du temps et clignote 200ms toutes les 15 secondes.
  • VBAT est une broche en entrée - elle est raccordée sur la broche "real time clock battery backup" (batterie de secours de l'horloge temps réel) du GPS. Nous vous suggérons d'utiliser l'emplacement de pile à l'arrière du Breakout si vous disposez d'une pile adéquate. Sinon vous pouvez utiliser tout les autres piles que vous voulez pour autant qu'elle soit sous 3.3v, vous pouvez LA connecter sur la pin VBAT.
    Version V1 & V2: Si vous faite cela, assurez-vous de couper le pontage entre les deux pastilles de soudures (marquées RTC) à l'arrière du breakout.
  • EN broche d'activation (Enable). Cette dernière est à HIGH (via une résistance de 10 KOhm). Le GPS est désactivé lorsque la broche est raccordée sur la masse (GND). Cela peut être pratique pour les projets "très basse consommation" où vous voudriez désactivé le module pour de longues périodes. Attention, lorsque vous désactivez le module, vous perdez aussi la synchronisation.
  • 3.3V est aussi la sortie du régulateur de tension 3.3V du breakout board. Si vous avez besoin d'une tension 3.3V bien régulée, vous pouvez utiliser celle là, est peut fournir au moins 100 mA.
  • PPS est une nouvelle broche en sortie sur le module en version v3. C'est une sortie de "pulsation par seconde" (pulse per second). Cette pulsation fait 50ms, il devrait donc être assez facile pour un microcontrôleur que se synchroniser avec ce signal.

Data-Logger intégré

Une fonctionnalité intéressante du MTK3339 est sa capacité de faire un enregistrement de données directement dans la mémoire flash du module (data-logger). Elle permet de stocker la date, l'heure, la latitude, la longitude et l'altitude dans la mémoire flash de 64 Kb disponible dans le module. Il ne s'agit pas d'un enregistreur haute résolution - un enregistrement toutes les 15 secondes lorsqu'il y a une synchro (fix) - mais cela devrait convenir pour 99% des projets voulant traquer des déplacements et positions. Cela peut devenir un moyen vraiment puissant (et très peu gourmand en énergie) pour enregistrer des données, pas besoin de carte SD ou d'EEPROM! La mémoire flash peut stocker jusqu'à 16 heures de données.

Le module GSP nécessite un microcontrolleur pour démarrer le data-logger (en introduisant une requête de démarrage "kick start"). S'il y a une perte d'alimentation il faudra une autre "impulsion" pour redémarrer. Si vous avez déjà des données stockées dans la mémoire FLASH, une nouvelle trace sera créé (sans perte des anciennes données). L'enregistrement s'arrêtera lorsqu'il n'y a plus de mémoire disponible sans écrasement des anciennes données. Hormis cet inconvénient, il s'agit d'un joli plus et AdaFruit propose une librairie vous permettant de supporter et d'utiliser cette fonctionnalité.

Démarrer

Dans un premier temps, nous allons mettre le data-logger en marche.

Ouvrez le sketch File→Examples→Adafruit_GPS→locus_start, ce dernier montre comment démarrer le logger (appelé LOCUS)

La partie principale du code est reprise ci-dessous:

  Serial.print("STARTING LOGGING....");
  if (GPS.LOCUS_StartLogger())
    Serial.println(" STARTED!");
  else
    Serial.println(" no response :(");
  delay(1000);

Vous devriez démarrer le Logger et vérifier la réponse par la suite.

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com

Statut du LOCUS

Une fois que vous avez constaté que le GPS effectue l'enregistrement des donnée, vous pouvez charger le sketch "Statut du LOCUS" qui vous fournira plus d'information.

Chargez le sketch File→Examples→Adafruit_GPS→locus_status sur votre Arduino.

GpsUltimateLocus2.jpg

Il produit plus d'information

La première donnée est le nombre de collecte (Log #), cela indique combien de traces sont stockées en mémoire. Chaque fois que vous commencez et sauvez des données, un nouvelle collecte est faite. "Full Stop" (arrêt total) indique que le logger ne dispose plus de mémoire pour stocker les informations... il s'arrête.

Le statut indique ensuite que nous faisons de la collecte d'information uniquement durant une synchronisation (fix data) et à interval définit (set intervals) de 15 secondes.

Nous ne faisons pas de collecte de distance et vitesse.

Le statut actuel est LOGGING (collecte active), il y a également le nombre d'enregistrement mémorisés. Chaque enregistrement dispose d'une information de localisation et de temps. Nous faisons un enregistrement toutes les 15 secondes, vous pouvez constater (ci-dessus) que l'enregistrement s'incrémente de 344 à 345.

Finalement, nous pouvons voir quel est le pourcentage d'occupation de la mémoire flash (seulement 4% pour le moment).

Dans un cas d'utilisation réel, vous auriez certainement besoin de démarrer le data-logger pour ensuite mettre le micro-contrôleur en mode veille (pour économiser l'énergie) et finalement vérifier le statut du logging de temps à autre avant de replonger dans un autre cycle de veille.

Extraction des données

Pour finir, après l'enregistrement des données de localistion, vient le temps d'extraire ces données.

Pour y arriver, nous devons d'abord extraire l'information brute (raw data) depuis la mémoire flash pour ensuite les décoder.

Chargez le sketch File→Examples→Adafruit_GPS→locus_dump sur votre Arduino et ouvrez ensuite votre le moniteur Série d'Arduino.

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com

Faite un copier/coller du texte disponible après les "--—-" (commençant avec $PMTKLOX,0,86*67 et finissant avec $PMTK001,622,3*36) dans la zone de saisir disponible disponible en bas de l'article GPS Ultimate de LadyAda.

Utiliser GPS Tool

Si vous éprouvez des difficultés à utiliser la combinaison d'outil Arduino/javascript, vous pouvez également essayer d'utiliser le "GPS tool". Cet outil fonctionne uniquement sous Windows mais il est vraiment puissant.

Connecter le module GPS sur Arduino (en utilisant [[Adafruit GPS ULTIMATE#Raccordement_Arduino|le méthode de raccordement directe) , un Adaptateur FTDI ou un convertisseur TTL puis téléchargez GPS Tool connectez le programme sur le GPS via le port COM correspondant à l'Arduino/FTDI/câble TTL. Vous pouvez ensuite interroger, prendre une copie (dump) ou effacer (delete) la mémoire de logging.

Antenne

La nouvelle version 3 du GPS Ultime permet d'y brancher une antenne externe (optionnel)!

Si le connecteurs µFL n'est pas disponible sur la carte alors vous avez un module v1 et v2 (qui ne supporte pas d'antenne).

GpsUltimateAntenne00.jpg
Crédit: AdaFruit Industries www.adafruit.com

Tous les modules GPS Ultime dispose d'une antenne intégrée (patch antenna) qui dispose d'une sensibilité de -165 dBm parfaite pour de nombreux projets. Cependant, si vous voulez placer votre projet dans une boite, il n'est pas forcement possible de pointer l'antenne vers le haut. Vous pourriez également avoir besoin de placer votre projet dans une boite métallique ou simplement avoir besoin d'une sensibilité accrue. Pour tous ces cas, vous pourriez avoir besoin d'utiliser une antenne externe active.


La plupart des antennes GPS utilisent des connecteurs SMA (très populaire et simple d'emploi). Un connecteur SMA serait un peu "gros" sur le GPS Ultime, AdaFruit à donc opté pour un connecteur µFL beaucoup plus léger, petit et facile à assembler. Ce connecteur ne vous impose pas un poids et encombrement inutile si vous n'aviez pas besoin d'antenne externe. Il est facile de brancher un connecteur µFL mais vous aurez certainement besoin d'un câble adaptateur µFL->SMA pour y connecter votre antenne GPS active.

Le GPS Ultime détecte automatiquement la présence d'une antenne active... et l'utilise automatiquement [ c'est magique :-) ] - vous n'avez pas besoin d'utiliser une quelconque commande pour activer l'antenne


Le protocole NEMA utilise une séquence (phrasée) permettant de connaître le statut de l'antenne. $PGTOP,11,xx est ne numéro de statut.

  • 3: signifie que le GPS utilise l'antenne externe.
  • 2: signifie que le GPS utilise l'antenne interne.
  • 1: signifie que l'antenne est en court-circuit ou qu'il y a un problème.

Sur les nouveaux shields et modules GPS, vous devrez informer le firmware du GPS que vous voulez être informé du statut de l'antenne. Vous pouvez donc ajouter gps.sendCommand(PGCMD_ANTENNA) à l'endroit où le code mentionne le débit de rafraichissement et le format des données à produire.

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com



Source: Adafruit Ultimate GPS créé par LadyAda pour AdaFruit Industries. Crédit0 AdaFruit Industries

Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.

Source: AdaFruit notre fournisseur.