Il existe de nombreux satellites GPS autour de la Terre qui sont utilisés pour fournir l'emplacement exact de n'importe quel endroit. Avec les coordonnées de localisation (Latitude et Longitude), il fournit également d'autres données comme l'heure, la date, l'altitude, l'angle de suivi de la direction, etc. Nous avons déjà appris à lire ces données GPS à partir du satellite en utilisant Arduino. Nous allons donc créer une horloge GPS en utilisant les données «Heure et date» du satellite GPS. L'horloge GPS mise à jour est très précise et fournit les données en temps réel avec une précision de quelques millisecondes.
Composants:
- Arduino Uno
- Module GPS
- Écran LCD 16x2
- Fils de connexion
- Source de courant
Explication de travail:
Le module GPS envoie les données au format NMEA, voir la sortie des données GPS dans la capture d'écran ci-dessous. Le format NMEA se compose de plusieurs phrases, dans lesquelles nous avons besoin d'une phrase pour extraire la date et l'heure. Cette phrase commence à partir de $ GPRMC et contient les coordonnées, l'heure et d'autres informations utiles. Ce $ GPRMC fait référence aux données GPS / Transit spécifiques minimales recommandées, et la longueur de cette chaîne est d'environ 70 caractères. Nous avons précédemment extrait la chaîne $ GPGGA dans le système de suivi des véhicules pour trouver les coordonnées de latitude et de longitude. Voici la sortie GPS:
Et la chaîne $ GPRMC contient principalement la vitesse, l'heure, la date et la position
$ GPRMC, 123519.000, A, 7791.0381, N, 06727.4434, E, 022.4.084.4,230394.003.1, W * 6 A $ GPRMC, HHMMSS.SSS, A, latitude, N, longitude, E, vitesse, angle, date, MV, W, CMD
Identifiant |
La description |
RMC |
Phrase minimale recommandée C |
HHMMSS.SSS |
Heure au format heure minute seconde et millisecondes. |
UNE |
Statut // A = actif et V = vide |
Latitude |
Latitude 49 degrés. 16,45 min. Nord |
N |
Direction N = Nord, S = Sud |
Longitude |
Longitude (coordonnée) |
E |
Direction E = Est, W = Ouest |
La vitesse |
vitesse en nœuds |
Angle |
Angle de suivi en degrés |
Date |
DATE en UTC |
MV |
Variation magnétique |
W |
Direction de variation E / W |
CMD (* 6A) |
Données de contrôle |
Nous pouvons extraire l'heure et la date de la chaîne $ GPRMC en comptant les virgules dans la chaîne. Avec l'aide d'Arduino et de la programmation, nous trouvons la chaîne $ GPRMC et la stockons dans un tableau, puis l'heure (format 24 heures) peut être trouvée après une virgule et la date après neuf virgules. L'heure et la date sont en outre enregistrées dans des chaînes.
Un satellite GPS fournit l'heure et la date en temps universel coordonné (UTC), nous devons donc le convertir en conséquence. Pour convertir en heure indienne, nous avons ajouté 5:30 à l'heure UTC, car l'heure indienne est 5 heures et demie en avance sur UTC / GMT.
Schéma:
Les connexions de circuit de l'horloge GPS Arduino sont simples. Arduino est utilisé pour contrôler l'ensemble du processus, il reçoit les données GPS du satellite via le module GPS, extrait la date et l'heure de la chaîne $ GPRMC et les affiche sur l'écran LCD.
Les broches de données D4, D5, D6, D7 de l'écran LCD 16x2 sont connectées à la broche no. 5, 4, 3, 2 d'Arduino et les broches de commande RS et EN de l'écran LCD sont respectivement connectées aux broches 7 et 6 d'Arduino. La broche Tx du module récepteur GPS est connectée à la broche 10 de Rx d'Arduino. Le PIN de masse d'Arduino et le GPS sont connectés l'un à l'autre. Ici, nous avons utilisé le module GPS SKG13BL, fonctionnant à une vitesse de transmission de 9800 bps. Arduino est également configuré à un débit de 9800 bps en utilisant la fonction «Serial.begin (9800)».
Explication de la programmation:
Dans la partie programmation, nous incluons d'abord des bibliothèques et définissons des broches pour la communication série LCD et logiciel. Définissez également une variable avec des tableaux pour stocker des données. En utilisant la bibliothèque série logicielle ici, nous avons autorisé la communication série sur les broches 10 et 11, et les avons rendues Rx et Tx respectivement. Par défaut, les broches 0 et 1 d'Arduino sont utilisées pour la communication série, mais en utilisant la bibliothèque SoftwareSerial, nous pouvons autoriser la communication série sur d'autres broches numériques de l'Arduino
#comprendre
Après cela, nous avons initialisé la communication série et l'écran LCD dans la fonction de configuration et affiché un message de bienvenue sur l'écran LCD.
Ensuite, nous avons extrait l'heure et la date de la chaîne reçue.
tandis que (x
Et puis convertissez l'heure et la date en décimal et modifiez-les en heure indienne (UTC +5: 30)
int UTC_hourDec = UTC_hour.toInt (); int UTC_minutDec = UTC_minut.toInt (); int Second = UTC_second.toInt (); int Date = date_TUC.toInt (); int Month = UTC_month.toInt ();……………
Et enfin, l'heure et la date ont été affichées sur l'écran LCD à l'aide de la fonction lcd.print , vérifiez le code complet ci-dessous.