Académique Documents
Professionnel Documents
Culture Documents
•
•
➢ Présentation du GPS
Le système de positionnement global (GPS) est un système de navigation par satellite qui se compose de 24
satellites en orbite, dont chacun effectue deux rotations autour de la Terre toutes les 24 heures. Des signaux
sont captés par le récepteur GPS, qui utilise ces informations pour calculer la distance entre lui et les
satellites GPS. Avec les signaux de trois satellites ou plus, un récepteur GPS peut trianguler sa position au sol
(c'est-à-dire la longitude et la latitude) à partir de la position connue des satellites. Avec quatre satellites ou
plus, un récepteur GPS peut déterminer une position 3D (c'est-à-dire la latitude, la longitude et l'élévation).
De plus, un récepteur GPS peut fournir des données sur votre vitesse et votre sens de déplacement. Toute
personne disposant d'un récepteur GPS peut accéder à la constellation des satallites. Étant donné que le GPS
fournit un positionnement, une navigation et une synchronisation tridimensionnels en temps réel 24 heures
sur 24, 7 jours sur 7, partout dans le monde, il est utilisé dans de nombreuses applications, notamment la
collecte de données SIG, l'arpentage et la cartographie.
Suivent ensuite un certain nombre de champs séparés par une "virgule". Le rôle de la virgule est d'être le
séparateur de champs, qui permet la dé-concaténation des données dans le programme. La norme NMEA
détermine dans quel ordre sont placées les informations issues des satellites et sous quelle forme elles sont
enregistrées. Pour lire les informations comprises dans la trame, il est nécessaire de connaître ces règles
d’écriture. Les données, comme l’heure, la latitude ou la longitude, sont placés dans des champs séparés par
des virgules :
La trame GPGGA
C’est la trame qui va contenir l’ensemble des informations qui nous interesse. C’est la trame la plus
commune. Décomposons maintenant cette trame selon les premiers éléments qui la composent :
L’UART0 est par défaut sur les pins GPIO1(TX0) et GPIO3(RX0) de l’ESP32, il est utilisé pour communiquer
avec l’ordinateur via le moniteur série. C’est également celui qui est utilisé pour flasher la carte ESP32. En
général, on l’utilise pour afficher des messages dans la console la fonction print(). Nous n’utiliserons jamais
la liaison UART0, car elle est réservée à la liaison avec l’ordinateur.
Mais la carte dispose d’un deuxième port de transmission en liaison série, le port Tx2 et Rx2 (respectivement
GPIO16 et GPIO17). Nous allons utiliser ces GPIO pour le branchement du module GPS
Attention la broche Tx (signifie « transmission ») du module doit être branché sur la broche RX2 («
réception ») de la carte (GPIO16). Et inversement.
while True:
if uart.any():
data = uart.readline()
print(data)
sleep(0.1)
while True:
gpsModule.readline()
buff = str(gpsModule.readline())
dataTrame = buff.split(',')
latitude_dms = dataTrame[3]+ " " + dataTrame[2][0:2] + "°" + dataTrame[2][2:4] + "'" + dataTrame[2][5:7] + "." + dataTrame[2][7:11] + "''"
longitude_dms = dataTrame[5]+ " " + dataTrame[4][1:3] + "°" + dataTrame[4][3:5] + "'" + str((int(dataTrame[4][6:8])-10)) + "." + dataTrame[4][8:12] + "''"
Heure = dataTrame[1][0:2] + ":" + dataTrame[1][2:4] + ":" + dataTrame[1][4:6]
print(latitude_dms)
print(longitude_dms)
print("Heure :", Heure)
print("__________________________________________")
time.sleep(0.5)
Question 4: Copier les coordonnées rendues par la console et vérifier votre position ? Est-
elle correcte ?
En degrés, minutes, secondes 48°51’ 24’’ Nord, 2°21’07’’ Est Système DMS (degrés,
sexagésimaux (° ‘ ‘’) minutes, secondes)
En degrés décimaux 48,856448° Nord, 2,352197° E Système DD (degrés
décimaux)
Exemple : La conversion des degrés sexagésimaux vers les degrés décimaux se fait ainsi :
48° 47' 54" N = 48. (47 / 60) + (54 / 3600) soit 48.798333°
La conversion des degrés décimaux vers les degrés sexagésimaux se fait ainsi :
48.798333 = 48°
>> 0.798333x60 = 47,89998 soit 47'
>> 0.89998x60 = 53,9988 soit 54"
>> le résultat est donc 48° 47' 54"
Question 5: Exécuter le code. Quel est le format des coordonnées GPS (DD ou DMS) ?
A la ligne 30 du code, rajouter ce bloc de variables (dans la boucle if, attention aux indentations):
Degre_latitude = int(dataTrame[2][0:2])
Minute_latitude = int(dataTrame[2][2:4])
Seconde_latitude = float(dataTrame[2][5:11])/1000
Degre_longitude = int(dataTrame[4][1:3])
Minute_longitude = int(dataTrame[4][3:5])
Seconde_longitude = (float(dataTrame[4][6:12])/1000)-10