Vous êtes sur la page 1sur 10

30/06/2022 20:23 Client-serveur NTP ESP32 

: Obtenir la date et l'heure (IDE Arduino) - Raspberryme

 

Home ›
ESP Tutoriels ›
ESP32 Tutoriels ›
Client-serveur N…

Client-serveur NTP ESP32 : Obtenir la date et l’heure (IDE


Arduino)
by
Thomas
10 février 2022, 7 h 12 min

Apprenez à demander la date et l’heure à un serveur NTP à l’aide de l’ESP32 avec


Arduino IDE. L’obtention de la date et de l’heure est utile dans les projets
d’enregistrement de données pour horodater les lectures. Pour obtenir l’heure d’un
serveur NTP, le ESP32 doit disposer d’une connexion Internet et vous n’avez pas
besoin de matériel supplémentaire (comme une horloge RTC).

https://www.raspberryme.com/client-serveur-ntp-esp32-obtenir-la-date-et-lheure-ide-arduino/ 1/10
30/06/2022 20:23 Client-serveur NTP ESP32 : Obtenir la date et l'heure (IDE Arduino) - Raspberryme

Avant de poursuivre ce tutoriel, vous devez avoir installé le module


complémentaire ESP32 dans votre IDE Arduino :

Conseillé: Obtenez la date et l’heure avec le client-serveur ESP8266 NodeMCU NTP

https://www.raspberryme.com/client-serveur-ntp-esp32-obtenir-la-date-et-lheure-ide-arduino/ 2/10
30/06/2022 20:23 Client-serveur NTP ESP32 : Obtenir la date et l'heure (IDE Arduino) - Raspberryme

1. NTP (protocole de temps réseau)


2. Obtenir la date et l’heure du serveur NTP
3. Comment fonctionne le code
1. Définition du SSID et du mot de passe
2. Serveur NTP et paramètres d’heure
3. mettre en place()
4. printLocalTime()
4. Manifestation
5. Emballer

NTP (protocole de temps réseau)

NTP signifie Network Time Protocol et c’est un protocole de mise en réseau pour la
synchronisation d’horloge entre les systèmes informatiques. En d’autres termes, il
est utilisé pour synchroniser les heures d’horloge des ordinateurs dans un réseau.

Il existe des serveurs NTP comme piscine.ntp.org que n’importe qui peut utiliser
pour demander du temps en tant que client. Dans ce cas, l’ESP32 est un client NTP
qui demande l’heure à un serveur NTP (piscine.ntp.org).

Obtenir la date et l’heure du serveur NTP

Pour obtenir la date et l’heure avec l’ESP32, vous n’avez pas besoin d’installer de
bibliothèques. Il vous suffit d’inclure le heure.h bibliothèque dans votre code.

https://www.raspberryme.com/client-serveur-ntp-esp32-obtenir-la-date-et-lheure-ide-arduino/ 3/10
30/06/2022 20:23 Client-serveur NTP ESP32 : Obtenir la date et l'heure (IDE Arduino) - Raspberryme

Le code suivant obtient la date et l’heure du serveur NTP et imprime les résultats
sur le moniteur série. Il était basé sur l’exemple fourni par le heure.h bibliothèque.

/*

Rui Santos

Complete project details at


https://Raspberryme.com/esp32-date-time-ntp-client-
server-arduino/

Permission is hereby granted, free of charge, to any


person obtaining a copy

of this software and associated documentation files.

The above copyright notice and this permission notice


shall be included in all

copies or substantial portions of the Software.

*/

#include <WiFi.h>

#include "time.h"

const char* ssid = "REPLACE_WITH_YOUR_SSID";

const char* password = "REPLACE_WITH_YOUR_PASSWORD";

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

const long gmtOffset_sec = 0;

const int daylightOffset_sec = 3600;

void setup(){

Serial.begin(115200);

// Connect to Wi-Fi

Afficher le code brut

Comment fonctionne le code

Examinons rapidement le code pour voir comment cela fonctionne. Tout d’abord,
incluez les bibliothèques pour vous connecter au Wi-Fi et obtenir du temps.

#include <WiFi.h>

#include "time.h"

https://www.raspberryme.com/client-serveur-ntp-esp32-obtenir-la-date-et-lheure-ide-arduino/ 4/10
30/06/2022 20:23 Client-serveur NTP ESP32 : Obtenir la date et l'heure (IDE Arduino) - Raspberryme

Définition du SSID et du mot de passe

Tapez vos informations d’identification réseau dans les variables suivantes, afin
que l’ESP32 puisse établir une connexion Internet et obtenir la date et l’heure du
serveur NTP.

// Replace with your network credentials

const char* ssid = "REPLACE_WITH_YOUR_SSID";

const char* password = "REPLACE_WITH_YOUR_PASSWORD";

Serveur NTP et paramètres d’heure

Ensuite, vous devez définir les variables suivantes pour configurer et obtenir l’heure
d’un serveur NTP : serveur ntp, gmtOffset_sec et daylightOffset_sec.

Serveur NTP

Nous demanderons l’heure de piscine.ntp.orgqui est un cluster de serveurs de


temps que n’importe qui peut utiliser pour demander l’heure.

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

Décalage GMT

le gmtOffset_sec La variable définit le décalage en secondes entre votre fuseau


horaire et GMT. Nous vivons au Portugal, donc le décalage horaire est de 0.
Changer l’heure gmtOffset_sec variable pour correspondre à votre fuseau horaire.

const long gmtOffset_sec = 0;

Décalage lumière du jour

le daylightOffset_sec définit le décalage en secondes pour l’heure d’été. Elle est


généralement d’une heure, cela correspond à 3600 secondes

const int daylightOffset_sec = 3600;

mettre en place()

https://www.raspberryme.com/client-serveur-ntp-esp32-obtenir-la-date-et-lheure-ide-arduino/ 5/10
30/06/2022 20:23 Client-serveur NTP ESP32 : Obtenir la date et l'heure (IDE Arduino) - Raspberryme

Dans le mettre en place() vous initialisez la communication série au débit en bauds


115200 pour imprimer les résultats :

orelDR
CorelDRAW

CorelD
Nouveau CorelDRAW

Télécharger

Serial.begin(115200);

Ces lignes suivantes connectent l’ESP32 à votre routeur.

// Connect to Wi-Fi

Serial.print("Connecting to ");

Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {

delay(500);

Serial.print(".");

Serial.println("");

Serial.println("WiFi connected.");

Configurez l’heure avec les paramètres que vous avez définis précédemment :

configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);

printLocalTime()

Après avoir configuré l’heure, appelez le printLocalTime() fonction pour imprimer


l’heure dans le moniteur série.

https://www.raspberryme.com/client-serveur-ntp-esp32-obtenir-la-date-et-lheure-ide-arduino/ 6/10
30/06/2022 20:23 Client-serveur NTP ESP32 : Obtenir la date et l'heure (IDE Arduino) - Raspberryme

Dans cette fonction, créez une structure temporelle (structure tm) appelé infos
horaires qui contient tous les détails sur le temps (min, sec, heure, etc…).

struct tm timeinfo;

le tm structure contient une date et une heure calendaires décomposées en ses


composants :

tm_sec: secondes après la minute ;


tm_min: minutes après l’heure ;
tm_heure: heures depuis minuit ;
tm_mday: jour du mois;
tm_année: années depuis 1900;
tm_wday: jours depuis dimanche ;
tm_yday: jours depuis le 1er janvier ;
tm_isdst: indicateur d’heure d’été ;
documentation sur la structure de la TM.

Obtenez tous les détails sur la date et l’heure et enregistrez-les sur le infos horaires
structure.

if(!getLocalTime(&timeinfo)){

Serial.println("Failed to obtain time");

return;

Ensuite, imprimez tous les détails sur l’heure dans le moniteur série.

Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");

Serial.print("Day of week: ");

Serial.println(&timeinfo, "%A");

Serial.print("Month: ");

Serial.println(&timeinfo, "%B");

Serial.print("Day of Month: ");

Serial.println(&timeinfo, "%d");

Serial.print("Year: ");

Serial.println(&timeinfo, "%Y");

https://www.raspberryme.com/client-serveur-ntp-esp32-obtenir-la-date-et-lheure-ide-arduino/ 7/10
30/06/2022 20:23 Client-serveur NTP ESP32 : Obtenir la date et l'heure (IDE Arduino) - Raspberryme

Serial.print("Hour: ");

Serial.println(&timeinfo, "%H");

Serial.print("Hour (12 hour format): ");

Serial.println(&timeinfo, "%I");

Serial.print("Minute: ");

Serial.println(&timeinfo, "%M");

Serial.print("Second: ");

Serial.println(&timeinfo, "%S");

Pour accéder aux membres de la structure date et heure, vous pouvez utiliser les
spécificateurs suivants :

%UNE Nom complet du jour de la semaine

%B Nom complet du mois

%ré Jour du mois

%Y An

%H Heure au format 24h

%JE Heure au format 12h

%M Minute

%S Seconde

Il existe d’autres spécificateurs que vous pouvez utiliser pour obtenir des
informations dans un autre format, par exemple : nom de mois abrégé (%b), nom
abrégé du jour de la semaine (%une), numéro de semaine avec le premier
dimanche comme premier jour de la première semaine (%U), et d’autres (Lire la
suite).

Nous vous montrons également un exemple, si vous souhaitez enregistrer des


informations sur le temps dans des variables. Par exemple, si vous souhaitez
enregistrer l’heure dans une variable appelée heureHeure, créez une variable char
d’une longueur de 3 caractères (elle doit enregistrer les caractères de l’heure plus
le caractère de fin). Ensuite, copiez les informations sur l’heure qui se trouve sur le

https://www.raspberryme.com/client-serveur-ntp-esp32-obtenir-la-date-et-lheure-ide-arduino/ 8/10
30/06/2022 20:23 Client-serveur NTP ESP32 : Obtenir la date et l'heure (IDE Arduino) - Raspberryme

infos horaires structure dans le heureHeure variables à l’aide de la strftime() une


fonction.

Serial.println("Time variables");

char timeHour[3];

strftime(timeHour,3, "%H", &timeinfo);

Serial.println(timeHour);

Pour obtenir d’autres variables, utilisez un processus similaire. Par exemple, pour
le jour de la semaine, nous devons créer une variable char d’une longueur de 10
caractères car le jour le plus long de la semaine contient 9 caractères (samedi).

char timeWeekDay[10];

strftime(timeWeekDay,10, "%A", &timeinfo);

Serial.println(timeWeekDay);

Serial.println();

Manifestation

Après avoir inséré vos informations d’identification réseau et modifié les variables
pour modifier votre fuseau horaire et l’heure d’été, vous pouvez tester l’exemple.

Téléchargez le code de votre carte ESP32. Assurez-vous d’avoir sélectionné la


bonne carte et le bon port COM. Après avoir téléchargé le code, appuyez sur le
bouton ESP32 “Activer”, et vous devriez obtenir la date et l’heure toutes les
secondes, comme indiqué dans la figure suivante.

https://www.raspberryme.com/client-serveur-ntp-esp32-obtenir-la-date-et-lheure-ide-arduino/ 9/10
30/06/2022 20:23 Client-serveur NTP ESP32 : Obtenir la date et l'heure (IDE Arduino) - Raspberryme

Emballer

Dans ce didacticiel, vous avez appris à obtenir la date et l’heure d’un serveur NTP à
l’aide de l’ESP32 programmé avec Arduino IDE. Maintenant, vous pouvez utiliser ce
que vous avez appris ici pour horodater les lectures des capteurs dans vos propres
projets.

Cette méthode ne fonctionne que si l’ESP32 est connecté à Internet. Si votre projet
n’a pas accès à Internet, vous devez utiliser une autre méthode. Vous pouvez
utiliser un Module RTC comme le DS1307.

Si vous voulez en savoir plus sur l’ESP32, consultez nos ressources :

Merci d’avoir lu.

Nouveau

Télécharger
CorelDRAW
CorelDRAW

https://www.raspberryme.com/client-serveur-ntp-esp32-obtenir-la-date-et-lheure-ide-arduino/ 10/10

Vous aimerez peut-être aussi