Obtenez l’heure Epoch/Unix avec l’ESP32 (Arduino)

Obtenez l'heure Epoch/Unix avec l'ESP32 (Arduino)

Ce guide rapide montre comment obtenir l’heure epoch/unix en utilisant la carte ESP32 avec Arduino IDE. Obtenir l’heure de l’époque peut être utile pour horodater vos lectures, donner des noms uniques aux fichiers et à d’autres applications. Nous demanderons l’heure actuelle à un serveur NTP, donc l’ESP32 doit avoir une connexion Internet.

Obtenez l'heure Epoch Unix avec l'ESP32 Arduino

Si vous souhaitez obtenir la date et l’heure dans un format lisible par l’homme, nous vous recommandons plutôt le didacticiel suivant :

Qu’est-ce que le temps d’époque ?

le Temps d’époque (Aussi connu comme époque Unix, Heure Unix, Temps POSIX ou horodatage Unix) est le nombre de secondes qui se sont écoulées depuis le 1er janvier 1970 (minuit UTC/GMT), sans compter les secondes intercalaires (dans ISO 8601 : 1970-01-01T00:00:00Z).

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.

Serveur de protocole de temps réseau ESP32 NTP Comment ça marche

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 (pool.ntp.org).

ESP32 Obtenir la fonction d’époque/d’heure Unix

Pour obtenir l’heure epoch/unix avec l’ESP32, vous pouvez utiliser la fonction suivante obtenir du temps():

// Function that gets current epoch time
unsigned long getTime() {
  time_t now;
  struct tm timeinfo;
  if (!getLocalTime(&timeinfo)) {
    //Serial.println("Failed to obtain time");
    return(0);
  }
  time(&now);
  return now;
}

Cette fonction renvoie l’heure actuelle de l’époque. Continuez à lire pour un exemple complet.

ESP32 Obtenir l’exemple d’époque/d’heure Unix

Copiez le code suivant dans votre IDE Arduino. Ce code se connecte à Internet et demande l’heure à un serveur NTP (piscine.ntp.org).

/*
  Rui Santos
  Complete project details at https://Raspberryme.com/epoch-unix-time-esp32-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"

// Replace with your network credentials
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

// NTP server to request epoch time
const char* ntpServer = "pool.ntp.org";

// Variable to save current epoch time
unsigned long epochTime; 

// Function that gets current epoch time
unsigned long getTime() {
  time_t now;
  struct tm timeinfo;
  if (!getLocalTime(&timeinfo)) {
    //Serial.println("Failed to obtain time");
    return(0);
  }
  time(&now);
  return now;
}

// Initialize WiFi
void initWiFi() {
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.print("Connecting to WiFi ..");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print('.');
    delay(1000);
  }
  Serial.println(WiFi.localIP());
}

void setup() {
  Serial.begin(115200);
  initWiFi();
  configTime(0, 0, ntpServer);
}

void loop() {
  epochTime = getTime();
  Serial.print("Epoch Time: ");
  Serial.println(epochTime);
  delay(1000);
}

Afficher le code brut

Insérez vos informations d’identification réseau dans les variables suivantes et le code fonctionnera immédiatement :

// Replace with your network credentials
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

Comment fonctionne le code

Voyons rapidement comment fonctionne le code.

Bibliothèques

Tout d’abord, vous devez inclure le Wifi bibliothèque pour connecter l’ESP32 à votre réseau local ; et le temps bibliothèque pour gérer les structures temporelles.

#include <WiFi.h>
#include "time.h"

Informations d’identification réseau

Insérez vos informations d’identification réseau dans les variables suivantes afin que l’ESP32 puisse se connecter à votre réseau.

// Replace with your network credentials
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

Serveur NTP

Nous demanderons l’heure de piscine.ntp.org, qui est un cluster de serveurs de temps que n’importe qui peut utiliser pour demander l’heure.

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

fonction getTime()

le obtenir du temps() La fonction obtient et renvoie l’heure actuelle de l’époque. S’il ne parvient pas à obtenir l’heure, il revient 0.

// Function that gets current epoch time
unsigned long getTime() {
  time_t now;
  struct tm timeinfo;
  if (!getLocalTime(&timeinfo)) {
    //Serial.println("Failed to obtain time");
    return(0);
  }
  time(&now);
  return now;
}

initWiFi()

le initWiFi() La fonction initialise le Wi-Fi et connecte l’ESP32 à votre réseau local.

void initWiFi() {
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.print("Connecting to WiFi ..");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print('.');
    delay(1000);
  }
  Serial.println(WiFi.localIP());
}

mettre en place()

Dans le mettre en place(), initialisez le moniteur série à un débit en bauds de 115 200.

Serial.begin(115200);

Appeler le initWiFi() fonction pour initialiser le Wi-Fi :

initWiFi();

Configurez l’heure à l’aide de configHeure() une fonction. Les premier et deuxième arguments correspondent au décalage horaire GMT et à l’heure d’été. Cependant, comme nous souhaitons obtenir l’heure d’époque, ces arguments doivent être 0. Le dernier argument est le serveur NTP (serveur ntp):

configTime(0, 0, ntpServer);

boucler()

Dans le boucler(), obtenir l’heure de l’époque et l’enregistrer dans le epochTime variable:

epochTime = getTime();

Enfin, imprimez l’heure de l’époque chaque seconde :

Serial.print("Epoch Time: ");
Serial.println(epochTime);
delay(1000);

Manifestation

Téléchargez le code sur votre carte ESP32. Ensuite, ouvrez le moniteur série à un débit en bauds de 115200. Appuyez sur le bouton RST embarqué ESP32. Il devrait se connecter au Wi-Fi et commencer à imprimer l’époque actuelle/l’heure unix chaque seconde.

ESP32 Get Epoch Unix Time Serial Monitor

Conclusion

Il s’agissait d’un guide rapide vous montrant comment obtenir l’heure epoch/unix avec l’ESP32. L’heure d’époque est le nombre de secondes écoulées depuis le 1er janvier 1970. Pour obtenir l’heure, nous devons nous connecter à un serveur NTP, donc l’ESP32 doit avoir accès à Internet.

Si vous souhaitez obtenir la date et l’heure dans un format lisible par l’homme, reportez-vous au didacticiel suivant :

Nous espérons que vous avez trouvé ce tutoriel utile. Si vous voulez en savoir plus sur l’ESP32, consultez nos ressources :

Merci d’avoir lu.