L’Internet des Objets

L’Internet des Objets

Chapitre 19 GNSS1A1

Page précédente Page suivante Page précédente Page suivante

La carte X-NUCLEO-GNSS1A1 est une carte de localisation par satellite. On parle actuellement de GNS (Global Navigation System) . Le vieux système GPS (Global Positionning System) est la version des États Unis d’Amérique. Il a été rejoint par les systèmes européens Gallileo, russe (GLONASS) et chinois (Beidou), voire d’autres. Les récepteurs modernes utilisent plusieurs systèmes pour le positionnement.

(image)

Fig. 19.1 : La carte environnementale et localisation IKS01A3.

La documentation est à https://www.st.com/en/ecosystems/x-nucleo-gnss1a1.html.

Nous avons utilisé cette carte comme fille de la WB55 (voir 2.1.1). Nous l’avons manipulé avec l’IDE Arduino. Elle est utilisable directement avec les exemples dédiés : voir https://github.com/stm32duino/X-NUCLEO-GNSS1A1. Les informations peuvent utiliser une connexion I\( ² \)C ou une liaison série. Elle transmet des phrases (sentences) NMEA.

L’association étasunienne National Marine Electronics Association (NMEA) a défini des protocoles permettant l’interconnexion des équipements numériques d’un navire. Ce protocole est relativement simple et fonctionne sur des liaisons série au débit de 4 800b/s. La syntaxe est simple. Une phrase commence par un caractère $, termine par un CRLF classique (retour charriot, saut de ligne). Les champs sont séparés par des virgules. Voici deux phrases :

$GPRMC,100307.000,A,4313.94681,N,00526.50451,E,0.1,0.0,290621,,,D*62
$GPGGA,100307.000,4313.94681,N,00526.50451,E,2,11,0.7,155.46,M,49.2,M,,*62

Sur les systèmes GNU/Linux et similaires, il y a une application, gpsd qui s’interface avec de nombreux matériels de réception et qui fournit l’information à tous les programmes qui le souhaitent, y compris à travers le réseau. Le site fournit beaucoup d’informations, dont des explications sur le protocole NMEA1983 (voir https://gpsd.gitlab.io/gpsd/NMEA.html). Un résumé très simplifié, mais utile est disponible sur : http://sntlebois.e-monsite.com/pages/cartographie-et-localisation-1/ressources/protocole-nmea-0183.html.

Exemple de trame GPRMC

GP

réception d’un signal GPS ;

RMC

informations minimales recommandées (heure, longitude, latitude, date, N ou S, E ou O) ;

Heure

100307.000 = 10h 3mn 7,000s ;

État

A = Valide, V = invalide ;

Position

la position est fournie avec quatre chiffre suivis d’un point, suivi de cinq chiffre et des deux lettre (N ou S) et (W ou E).

Il semble qu’il s’agisse de ddmm.ss,SSS

dd

degrés

mm

minutes

ss

secondes

SSS

partie fractionnaire des secondes

Vers Marseille une seconde équivaut à une vingtaine de mètres (merci pour l’ajout d’une précision).

19.0.1 GNSS et micropython

Nous avons posé ce code sur une WB55 avec la carte fille branchée. Il faut bien faire attention au positionnement des cavaliers pour obtenir une lecture sur l’UART 2.

import uasyncio as asyncio
from machine import UART, I2C # Pour piloter l'UART
import as_GPS

from time import sleep

# Initialisation du contrôleur de bus I2C numéro 1
i2c1 = I2C(1)

# Pause d'une seconde pour laisser à l'I2C le temps de s'initialiser
sleep(1)

uart = UART(2,9600)
fin=999
while (fin != 0):
    r = uart.read()
    print(r)
    fin = fin - 1
    sleep(1)

Il y a des lignes en trop dans ce code, mais pour le moment, nous n’en tiendrons pas compte. l’attente de 1 seconde dans la boucle permet de limiter les lectures sans données (elles affichent none).

La commande minicom -D /dev/ttyACM0 -C gnss.log permet de conserver une copie des messages reçus depuis le microcontrôleur. Le fichier produit contient des lignes avec des préfixes :

  • GNGSA

    • GN Combination of multiple satellite systems (NMEA 1083)

  • GL :GLONASS

    • GSV

  • GP Global Positioning System receiver

    • GLL Geographic Position - Latitude/Longitude

    • RMC Recommended Minimum Navigation Information

    • GSV Satellites in view

    • VTG Track made good and Ground speed

  • PSTMCPU ?? Relatif au CPU ?

  • GSV - Satellites in view

Et des lignes de chiffres sans préfixes.

En sélectionnant les lignes GPRMC et en sélectionnant les colonnes donnant la longitude et lattitude nous obtenons un fichier de données que gnuplot peut transformer en courbe (figure 19.2).

(image)

Fig. 19.2 : Le déplacement de la position en 17 minutes.

La documentation technique du capteur Teseo-liv3f (https://www.st.com/resource/en/datasheet/teseo-liv3f.pdf indique qu’il convertit les signaux et est capable de faire du signal augmenté, par exemple en différentiel. Les constellations suivies sont par défaut uniquement GPS et Glonass.

Et je ne sais comment convertir les données lattitudes longitudes en mètres.

Page précédente Page suivante

Page précédente Page suivante