ESPTOP 10 NTP Client-Server Get Date and Heure - Arduino IDE

ESPTOP 10 NTP Client-Server Get Date and Heure - Arduino IDE
ESP32 est une carte Internet des objets (IoT) basée sur un microcontrôleur qui peut être interfacée avec une large gamme d'appareils. ESP32 est largement utilisé dans les projets basés sur l'IoT.

Travailler avec ESP32 ou tout autre temps de microcontrôleur est très important car la minuterie intégrée n'est pas si précise afin que nous puissions utiliser un NTP serveur pour récupérer en temps réel et le stocker à l'intérieur d'une variable qui peut être utilisée plus tard dans le code ESP32.

Network Time Protocol (NTP) utilise le temps universel coordonné (UTC) qui synchronise l'horloge système avec une grande précision et précision. Sur les réseaux plus petits, NTP peut nous fournir des horloges aussi précises que 1 ms tandis que les réseaux plus grands tels que LAN (réseau local) NTP peuvent donner une précision avec des dizaines de millisecondes sur Internet. En utilisant cette horloge précise ESP32 peut exécuter des instructions à un moment précis.

Ce guide contient le contenu suivant:

  • 1: Introduction au NTP (Network Time Protocol)
  • 2: Paramètres du serveur NTP et du temps
    • 2.1: serveur NTP:
    • 2.2: Offset GMT:
    • 2.3: décalage de la lumière du jour
  • 3: Impression en temps réel à l'aide de la fonction printLocaltime ()
    • 3.1: code pour imprimer en temps réel
    • 3.2: sortie

1: Introduction au NTP (Network Time Protocol)

NTP est un acronyme de Ntravail Time PLe rotocol est une norme utilisée pour synchroniser les périphériques avec leur fuseau horaire. Le protocole Time Network synchronise l'heure de tous les appareils réseau avec l'UTC également connu sous le nom de temps universel coordonné.

L'UTC est similaire à GMT (Greenwich Moyenne Temps) mais il ne change pas et reste le même partout dans le monde. L'idée principale derrière l'utilisation de l'UTC est de lire le temps NTP serveur et en appliquant le décalage UTC, nous pouvons obtenir du temps local en fonction de notre fuseau horaire.

2: Paramètres du serveur NTP et du temps

Pour lire l'heure à partir du serveur NTP, nous devons déclarer les variables suivantes dans le code à l'aide de ces variables, nous pouvons obtenir l'heure du serveur NTP.

  • Serveur NTP
  • Offset GMT
  • Décalage de la lumière du jour

1: serveur NTP

Nous demanderons du temps à piscine.NTP.org qui contient des données temporelles mondiales sur le serveur et n'importe qui peut demander son temps local en utilisant ce pool. Voici quelques autres serveurs auxquels nous pouvons accéder:

Zone Nom d'hôte
Mondial piscine.NTP.org
Asie Asie.piscine.NTP.org
L'Europe  L'Europe .piscine.NTP.org
Amérique du Nord Amérique du Nord.piscine.NTP.org
Océanie Océanie.piscine.NTP.org
Amérique du Sud Amérique du Sud.piscine.NTP.org

2: Offset GMT

Le décalage GMT décrit le décalage horaire en heures entre le fuseau horaire que vous vivez au GMT. Par exemple, si nous utilisons le fuseau horaire des États-Unis, nous pouvons le définir sur UTC = -11: 00.

3: décalage de la lumière du jour

Ici, le décalage de la lumière du jour est le temps d'économie du jour qui est généralement pris en 1 heure. L'heure d'été de la lumière du jour signifie déplacer l'horloge 1 heure pendant l'été et les changer à nouveau en hiver. Cette commande est généralement utilisée lorsqu'un fuseau horaire personnalisé est utilisé et que la règle de sauvegarde du jour est appliquée.

Comme nous avons couvert les bases du serveur NTP maintenant, nous vérifierons comment nous pouvons envoyer une demande au serveur NTP et lire l'heure locale en utilisant ESP32 avec le code Arduino IDE.

3: Impression en temps réel à l'aide de la fonction printLocaltime ()

Le printLocalTime () La fonction appellera le getlocaltime () fonction qui envoie la demande au serveur NTP et stocke la date et l'heure reçues à l'intérieur du timeinfo variable.

1: code pour imprimer en temps réel

Coller le code donné pour le serveur client NTP dans Arduino IDE Editor. Connectez ESP32 avec PC, sélectionnez le port com et téléchargez le code.

#inclure
#include "Temps.H "
const char * ssid = "réseau ssid";
const char * mot de passe = "Mot de passe réseau";
const char * ntpServer = "pool.NTP.org ";
const long gmtoffset_sec = 18000; / * Offset GMT +5 heures (18000 sec) * /
const int daylightoffset_sec = 3600; / * Décalage de la lumière du jour d'une heure * /
void printLocaltime ()
struct tm timeinfo;
si(!getlocaltime (& timeInfo))
En série.println ("Échec de l'heure");
retour;

En série.println (& timeinfo, "% a,% b% d% y% h:% m:% s");

void setup()
En série.commencer (115200);
// Connectez-vous au WiFi
En série.printf ("Connexion à% S", SSID);
Wifi.Begin (SSID, mot de passe);
Pendant que (wifi.statut() != Wl_connected)
retard (500);
En série.imprimer(".");

En série.println ("connecté");
// init et obtenir le temps
configTime (gmtoffset_sec, daylightoffset_sec, ntpServer);
printLocalTime ();
// Débrancher le wifi car il n'est plus nécessaire
Wifi.déconnecter (true);
Wifi.mode (wifi_off);

VOID LOOP ()
retard (1000);
printLocalTime ();

Code commencé par inclure le wifi et la bibliothèque temporelle. Wifi La bibliothèque aidera à connecter ESP32 à un réseau pendant que temps La bibliothèque gérera la synchronisation du serveur NTP.

Après cela SSID et le mot de passe du réseau auquel ESP32 se connectera est défini. Remplacez vos informations d'identification réseau ici. Après cela, nous avons défini Offset GMT Comme 18000 sec, qui est (UTC + 5 heures). Vous pouvez remplacer votre propre fuseau horaire UTC ici. Suivez le lien pour obtenir le décalage GMT pour votre fuseau horaire.

En outre, l'adresse du serveur NTP est spécifiée à l'aide de la commande:

const char * ntpServer = "pool.NTP.org ";

Cette commande sélectionne automatiquement le serveur de temps qui vous recherchera. Cependant, nous pouvons également définir un fuseau horaire en utilisant les serveurs NTP expliqués dans le Serveur NTP section.

À la fin, nous configurons l'ESP32 en tant que client NTP et pour obtenir la date et l'heure. Pour cela, nous avons utilisé le configTime () fonction.

Enfin, en utilisant le printLocalTime () fonction, la date et l'heure actuelles sont imprimées sur le moniteur en série. Cette fonction contient une structure temporelle TM qui stocke toutes les informations dans le timeinfo variable.

Les commandes suivantes représentent le timeinfo structure.

En série.println (& timeinfo, "% a,% b% d% y% h:% m:% s");

Chaque structure de lettre de temps concerne une information spécifique:

Spécificateurs Information
%UN Jour de retour d'une semaine
% B Mois de retour
%d Jour de retour du mois
% Y Retour l'année en cours
% H Retour actuel heure
% M Retour des procès-verbaux actuels
% S Retourner les secondes en cours

2: sortie

Après le téléchargement du code ESP32. La sortie suivante peut être vue sur le moniteur série Arduino.

L'heure actuelle sur mon PC et ESP32 est adaptée.

Nous avons réussi à lire le temps de NTP Server en utilisant ESP32 comme client.

Conclusion

Le temps est très important pour les applications comme l'empilement horaire et l'exécution des instructions à des moments précis pour générer une sortie. Les minuteries intégrées ne sont pas si précises, nous pouvons donc utiliser un serveur NTP pour lire l'heure et la date actuelles. Cette fois peut être stocké à l'intérieur d'une variable à utiliser à l'intérieur de notre code. Cette leçon aide à obtenir un temps de fuseau horaire précis à travers le monde en utilisant ESP32.