1

Utiliser un GPS en I²C sur ESP32 avec ESPHome

This commit is contained in:
2026-04-01 16:32:16 +02:00
parent 762e1621a1
commit b0cc28a36a
12 changed files with 2195 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
#title: ""
attribution: "https://www.adafruit.com/product/4415"
description: "Le module GPS PA1010D d'Adafruit que j'utilise dans mon projet."
#prompt: ""

View File

@@ -0,0 +1,4 @@
#title: ""
attribution: "https://www.adafruit.com/product/5477"
description: "Le Feather ESP32-S3 que j'utilise."
#prompt: ""

View File

@@ -0,0 +1,4 @@
#title: ""
attribution: "Richard Dern"
description: "Mon module est connecté à l'ESP32 par l'intermédiaire d'un multiplexeur (un [TCA9548A](https://esphome.io/components/tca9548a/)). C'est juste la partie _GPS_ de mon projet, mais le multiplexeur sera bien rempli à la fin... Si vous n'utilisez pas de multiplexeur, la configuration présentée ici devra être adaptée."
#prompt: ""

View File

@@ -0,0 +1,4 @@
#title: ""
attribution: "Richard Dern"
description: "Flux de travail pour l'obtention d'un fix GPS."
#prompt: ""

View File

@@ -0,0 +1,4 @@
#title: ""
attribution: "Richard Dern"
description: "L'interface web du projet, nous indiquant en temps réel toutes les informations à notre disposition. Le bloc _Diagnostic_ n'a plus d'utilité à ce stade."
#prompt: ""

View File

@@ -0,0 +1,44 @@
flowchart TD
A[Intervalle ESPHome toutes les 100 ms] --> B[Lecture I²C depuis gps_i2c<br/>jusqu'à 4 passes de 128 octets]
B --> C[Ajout des caractères non nuls dans nmea_buf]
C --> D{nmea_buf contient-il<br/>au moins un saut de ligne ?}
D -- Non --> A
D -- Oui --> E[Extraction d'une ligne complète]
E --> F[Suppression CR/LF]
F --> G{Ligne vide ou ne commence pas par '$' ?}
G -- Oui --> D
G -- Non --> H[Vérification du checksum NMEA]
H -- Échec --> I[Incrément des trames invalides]
I --> D
H -- Succès --> J[Incrément des trames valides]
J --> K[Découpage CSV en fields]
K --> L[Identification du type de trame<br/>ex. GGA RMC GSA GSV ZDA GST PMTK]
L --> M{Type = GGA ?}
M -- Oui --> N[Lecture des champs GGA]
N --> O[fields_6 = fix quality]
O --> P{fix quality > 0 ?}
P -- Oui --> Q[Publier gps_has_fix = true]
P -- Non --> R[Publier gps_has_fix = false]
Q --> S[Publier qualité fix, satellites utilisés,<br/>HDOP, altitude, latitude, longitude]
R --> S
S --> D
M -- Non --> T{Type = RMC ?}
T -- Oui --> U[Lecture des champs RMC]
U --> V[fields_2 = statut]
V --> W{statut = 'A' ?}
W -- Oui --> X[Publier gps_has_fix = true]
W -- Non --> Y[Publier gps_has_fix = false]
X --> Z[Publier latitude, longitude,<br/>vitesse, cap, date, heure]
Y --> Z
Z --> D
T -- Non --> AA{Autre type utile ?}
AA -- Oui --> AB[Mettre à jour d'autres entités<br/>GSA GSV ZDA GST PMTK etc.]
AB --> D
AA -- Non --> D

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 KiB