Utiliser un GPS en I²C sur ESP32 avec ESPHome
This commit is contained in:
@@ -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: ""
|
||||
@@ -0,0 +1,4 @@
|
||||
#title: ""
|
||||
attribution: "https://www.adafruit.com/product/5477"
|
||||
description: "Le Feather ESP32-S3 que j'utilise."
|
||||
#prompt: ""
|
||||
@@ -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: ""
|
||||
@@ -0,0 +1,4 @@
|
||||
#title: ""
|
||||
attribution: "Richard Dern"
|
||||
description: "Flux de travail pour l'obtention d'un fix GPS."
|
||||
#prompt: ""
|
||||
@@ -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: ""
|
||||
@@ -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 |
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user