Shield de géolocalisation GPS pour Arduino

Utilisation de capteurs et composants électroniques avec Arduino.
Une fiche de tutoriel pour chaque.

Shield de géolocalisation GPS pour Arduino

Messagepar tiptop » Jeu 6 Fév 2014 21:26

Tutoriel d'utilisation du shield de géolocalisation GPS pour Arduino.

Image

Composants utilisés

Image

Principe de fonctionnement
Ce shield GPS ajoute des fonctions de géolocalisation par satellite à votre carte Arduino (Uno, Mega, etc...)
Il permet de connaître sa position (latitude, longitude), sa vitesse, enregistrer ses déplacements, déterminer son orientation, déclencher une alarme si on s'approche d'un point de coordonnées particulières...
La date et l'heure UTC sont également disponibles.

Utilisation
  • Utilisation pour le tracking, la navigation, le sport, la navigation maritime...
  • Un emplacement pour une carte SD permet par ailleurs d'enregistrer les données du GPS.
  • Le shield est alimenté directement par la carte Arduino.
  • Il possède une antenne intégrée avec une haute sensibilité. 5V / digital 3.3V.

Caractéristiques
Image

Image

  • Modèle FZ0039
  • Interface pour carte mémoire micro SD.
  • Antenne active avec une haute sensibilité, et compatible avec une antenne normale
  • Temps très rapide de première fixation de signal à de faible taux de signaux
  • Interface UART
  • Tracking de 20 satellites en simultané avec le chipset SiRF Star III
  • Protocole NMEA 0183 v2.3

Montage
Image

  • Emboîter le shield GPS sur la carte Arduino, brancher le câble USB au PC et télécharger le code. Le shield est prêt à l'emploi.
  • Brancher une antenne externe pour améliorer la sensibilité (utilisation en intérieur par exemple).
  • Formater la carte micro-SD en FAT16 avec dessus un fichier datalog.txt et la placer dans la fente du lecteur.
  • Régler l'interrupteur 3.3V ou 5V sur 5V pour utiliser avec une carte Arduino Uno.


Broches utilisées

D0 --> Data
D1 --> Din
D10 --> CSN --chip select
D11 -->MOSI
D12 --> MISO
D13 --> SCK
A0 --> Breakout
A1 --> Breakout
A2 --> Breakout
A3 --> Breakout
A4 --> IIC_SDA
A4 --> IIC_SCL
Image.Image

librairie TinyGPS
La librairie TinyGPS fournit la plupart des fonctionnalités GPS NMEA.
Pour l'utiliser, il suffit de créer une instance d'un objet comme ceci:
Code: Tout sélectionner
# Include "TinyGPS.h"
TinyGPS gps;



Jumpers de paramétrage
La carte GPS possède 2 jumpers pour indiquer les pins Tx et Rx utilisées.
Par défaut ils sont sur TxD=0 et RxD=1.
Image
Les déplacer sur TxD= 3 et RxD= 4 (car pin_0 et pin_1 servent déjà à téléverser le code sur la carte Arduino et au Serial monitor).

Bornier int0 int1 pour les interruptions externes
Image
The INT0 is the broke out of the external interrupt pin of GPS module, if not use, please set the jumper to OFF as the following figure.
The INT1 is the broke out of the 1PPS output. When the GPS module has tracked to the GPS satellite, this pin will send a pulse per second.


Programmation
Charger l'exemple de TinyGPS appelé Fichier / Exemple / TinyGPS / Simpletest
Le serial monitor affiche les sorties du GPS

Signification des codes GPS reçus
$GPAAM – Waypoint Arrival Alarm
$GPALM – GPS Almanac Data
$GPAPA – Autopilot format “A”
$GPAPB – Autopilot format “B”
$GPASD – Autopilot System Data
$GPBEC – Bearing & Distance to Waypoint, Dead Reckoning
$GPBOD – Bearing, Origin to Destination
$GPBWC – Bearing & Distance to Waypoint, Great Circle
$GPBWR – Bearing & Distance to Waypoint, Rhumb Line
$GPBWW – Bearing, Waypoint to Waypoint
$GPDBT – Depth Below Transducer
$GPDCN – Decca Position
$GPDPT – Depth
$GPFSI – Frequency Set Information

$GPGGA Global Positioning System Fix Data
$GPGLC – Geographic Position, Loran-C
$GPGLL – Geographic Position, Latitude/Longitude
$GPGRS – GPS Range Residuals
$GPGSA – GPS DOP and Active Satellites
$GPGST – GPS Pseudorange Noise Statistics
$GPGSV – GPS Satellites in View
$GPGXA – TRANSIT Position
$GPHDG – Heading, Deviation & Variation
$GPHDT – Heading, True
$GPHSC – Heading Steering Command
$GPLCD – Loran-C Signal Data
$GPMSK – Control for a Beacon Receiver
$GPMSS – Beacon Receiver Status
$GPMTA – Air Temperature (to be phased out)
$GPMTW – Water Temperature
$GPMWD – Wind Direction
$GPMWV – Wind Speed and Angle
$GPOLN – Omega Lane Numbers
$GPOSD – Own Ship Data
$GPR00 – Waypoint active route (not standard)
$GPRMA – Recommended Minimum Specific Loran-C Data$GPRMB – Recommended Minimum Navigation Information

$GPRMC Recommended Minimum Specific GPS/TRANSIT Data
$GPROT – Rate of Turn
$GPRPM – Revolutions
$GPRSA – Rudder Sensor Angle
$GPRSD – RADAR System Data
$GPRTE – Routes
$GPSFI – Scanning Frequency Information
$GPSTN – Multiple Data ID
$GPTRF – TRANSIT Fix Data
$GPTTM – Tracked Target Message
$GPVBW – Dual Ground/Water Speed
$GPVDR – Set and Drift
$GPVHW – Water Speed and Heading
$GPVLW – Distance Traveled through the Water
$GPVPW – Speed, Measured Parallel to Wind

$GPVTG Track Made Good and Ground Speed
$GPWCV – Waypoint Closure Velocity
$GPWNC – Distance, Waypoint to Waypoint
$GPWPL – Waypoint Location
$GPXDR – Transducer Measurements
$GPXTE – Cross-Track Error, Measured
$GPXTR – Cross-Track Error, Dead Reckoning
$GPZDA – UTC Date / Time and Local Time Zone Offset
$GPZFO – UTC & Time from Origin Waypoint
$GPZTG – UTC & Time to Destination Waypoint


Seules quelques phrases NMEA ont une utilité directe pour notre usage.

Exemple d'affichage de phrases NMEA à l'écran :
Image
Pas encore de signal (seulement la date et l'heure, et V).

Code: Tout sélectionner
$GPRMC,,V,,,,,,,,,,N*53    --->Recommended Minimum Specific GPS/TRANSIT Data
$GPVTG,,,,,,,,,N*30 ----------------------------------->Track Made Good and Ground Speed
$GPGGA,,,,,,0,00,$GPRMC,,V,,,,,,,,,,N*53 ------> Global Positioning System Fix Data
$GPVTG,,,,,,,,,N*30


Décodage des lignes NMEA, exemple

$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47
Avec:
GGA Global Positioning System Fix Data
123519 Position fixée à 12:35:19 UTC
4807.038,N Latitude 48 deg 07.038' N
01131.000,E Longitude 11 deg 31.000' E
1 Qualité de Fix : 0 = invalide
1 = GPS fix (SPS)
2 = DGPS fix
3 = PPS fix
4 = Real Time Kinematic
5 = Float RTK
6 = estimated (dead reckoning) (2.3 feature)
7 = Manual input mode
8 = Simulation mode
08 -Nombre de satellites suivis
0.9 Erreur de position horizontale
545.4,M Altitude, en mètres, au dessus du niveau de la mer
46.9,M Hauteur du géoide (niveau moyen de la mer) au dessus de l'ellipsoide WGS84
(Champ vide) temps en secondes depuis la dernière mise à jour DGPS
(Champ vide) numéro d'identifiant ID de station DGPS
*47 checksum data, commence toujours par *

$GPVTG,054.7,T,034.4,M,005.5,N,010.2,K*48
Avec:
VTG Vitesse au sol (Velocity made good).
054.7,T Angle de cap (degrés)
034.4,M Magnetic track made good
005.5,N Vitesse au sol, en knots
010.2,K Vitesse au sol, en kilomètres/heure
*48 Checksum


Exemple de ligne de données d'acquisition (1 mesure par seconde)
Image

Signal GPS bien reçu (date et l'heure, position, vitesse et A).
$GPRMC,185915.00,A,4506.277645,N,00534.16149,E,0.014,,060214,,,A,
  • RMC, The Recommended Minimum,
  • 185915.00 heure de la mesure GPS, 18h 59min 15sec UTC
  • A status, Status A=active ou V=Vide
  • 4506.277645,N latitude 45° 06.277 Nord
  • 00534.16149,E longitude 5°34.116 Est
  • 0.014 vitesse au sol
  • nc angle de track
  • 060214 date de mesure 06 fev 2014
  • nc variation magnétique
  • nc checksum data
Image
Pour les tests, se placer dehors et attendre la première acquisition à froid. Il faut au moins 4 satellites, rajouter une antenne si besoin.
Important, bien mettre en place les jumpers et paramétrer le baud rate du GPS.


Références
http://arduiniana.org/libraries/tinygps/
http://learn.linksprite.com/?p=1211
Décodage des phrases MNEA http://www.gpsinformation.org/dale/nmea.htm#GGA
GPS et Arduino (en anglais) http://blog.iteadstudio.com/play-arduin ... ystem-gps/
Code GPS pour Arduino http://forum.arduino.cc/index.php/topic,113603.0.html
tiptopboards - admin
Avatar de l’utilisateur
tiptop
Administrateur du site
 
Messages: 93
Inscription: Mar 13 Aoû 2013 20:38
Localisation: 38

Retourner vers Capteurs et composants

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 7 invités

cron