Ceci est une ancienne révision du document !
Capteurs - Géolocalisation
[Mise à jour le 4/5/2024]
1. Généralités
1.1 Géolocalisation
La géolocalisation est un procédé permettant de positionner un objet, un véhicule, ou une personne sur un plan ou une carte à l'aide de ses coordonnées géographiques. Certains systèmes permettent également de connaître l'altitude (géolocalisation - dans l'espace - en 3D). Wikipédia
- Identifier sa position sur une carte à l'aide de ses coordonnées GPS en allant sur coordonnees-gps.fr/
Quel GPS ?
Consulter le guide de sélection d'un GPS sur seeedstudio.com1.2 Trame NMEA 0183
La norme NMEA 0183 est une spécification pour la communication entre équipements marins, dont les équipements GPS. Elle est définie et contrôlée par la National Marine Electronics Association (NMEA [archive]), association américaine de fabricants d'appareils électroniques maritimes, basée à Severna Park au Maryland (États-Unis d'Amérique).Wikipédia
GNGGA
L’identifiant $GNGGA est utilisé par certains récepteurs GNSS (souvent d’origine chinoise comme le Air530) pour transmettre les données de position. Voir ici pour la description des champs.
2. GPS
2.1 Grove (Air530)
2.1.1 Présentation
- Source : wiki Seeed studio
- Distributeur : Gotronic
- Caractéristiques
- Alimentation: 3,3 ou 5 Vcc
- Consommation: 60 mA maxi
- Interface: UART
- Sensibilité:
- au démarrage: -160 dBm
- sortie de veille: -162 dBm
- acquisition: -166 dBm
- Précision:
- distance: 2,5 m
- vitesse: 0,1 m/s
- Dimensions interface GPS: 40 x 20 mm
- Compatible: GPS, Beidou, Glonass, Galileo, QZS, SBAS
- Température de service: -35 à 85 °C
x.x.x Exemples de code
- Exemple pour tester le capteur
- *.cpp
// Testé avec Arduino Uno // TX:2 RX:3 #include <SoftwareSerial.h> SoftwareSerial SoftSerial(2, 3); //(2,3) Arduino Uno (5,6) MKR Zéro ou MKR 1010 unsigned char buffer[64]; // tableau pour la réception de données via le port série int count = 0; // compteur void setup() { SoftSerial.begin(9600); // the SoftSerial baud rate Serial.begin(9600); // the Serial port of Arduino baud rate. } void loop() { if (SoftSerial.available()) // si disponible { while (SoftSerial.available()) // lire les données { buffer[count++] = SoftSerial.read(); // et les écrire dans le tableau if (count == 64) break; // si count = 64 } Serial.write(buffer, count); // écrire le tableau dans la console //Serial.write("\n"); clearBufferArray(); // vider le tableau et count = 0; // raz compteur } if (Serial.available()) // si les données sont disponibles sur le port série matériel ==> les données proviennent d'un PC ou d'un ordinateur portable SoftSerial.write(Serial.read()); // les écrire sur le port série logiciel } void clearBufferArray() // fonction pour effacer le tableau { for (int i = 0; i < count; i++) { buffer[i] = NULL; } // On efface le tableau avec la commande NULL }