Dans le didacticiel précédent, nous avons créé une horloge RTC en utilisant DS3231 et ESP32. Pour minimiser les exigences matérielles, nous allons créer une horloge Internet sans utiliser le module RTC. Ceci est plus précis que celui de l'horloge RTC. ESP32 est un module Wi-Fi et peut être facilement connecté à Internet.Nous utiliserons donc NTP (Network Time Protocol) et UDP (User Datagram Protocol) pour récupérer l'heure sur Internet en utilisant le Wi-Fi. Cette horloge Internet peut être très utile lors de la création de projets IoT.
Qu'est-ce que NTP ??
Network Time Protocol (NTP) est un protocole de mise en réseau utilisé pour la synchronisation de l'heure entre les systèmes et les réseaux de données. La structure NTP dépend des serveurs de temps Internet. NTP dispose d'algorithmes pour ajuster précisément l'heure de la journée. Les serveurs NTP ont un logiciel qui envoie l'heure de l'horloge aux ordinateurs clients utilisant UDPport 123. Donc, ici dans ce projet, nous obtenons l'heure du serveur NTP utilisant ESP32 et l'affichant sur un écran OLED.
Matériaux nécessaires:
- ESP32
- Écran OLED 128 * 64
- Planche à pain
- Fils mâle-femelle
Schéma:
Ici, nous utilisons le mode SPI pour connecter notre module d'affichage OLED 128 × 64 (SSD1306) à ESP32. Donc, il utilisera 7 broches. Les connexions avec ESP32 sont données comme suit:
- Broche CS (sélection de puce) de OLED -> PIN D5 de ESP32
- Broche DC de OLED -> PIN D4 de ESP32
- Broche RES de OLED -> PIN D2 de ESP32
- Broche SDA de OLED -> PIN D23 ie MOSI de ESP32
- Broche SCK de OLED -> PIN D18 ie SCK de ESP32
- Vdd de l'OLED -> Vcc de l'ESP32
- GND de OLED -> GND de ESP32
Vous avez besoin de fichiers carte pour votre ESP32. Menu déroulant du gestionnaire de carte d'enregistrement du kit de développement Arduino IDE pour ESP32. Si ce n'est pas le cas, suivez les étapes indiquées dans le lien ci-dessous:
circuitdigest.com/microcontroller-projects/getting-started-with-esp32-with-arduino-ide
Vous pouvez également utiliser ESP12 pour ce projet, apprenez ici à utiliser ESP12.
Nous utiliserons Arduino IDE pour écrire notre programme comme expliqué dans l'article ci-dessus.
Explication du code:
Le code complet de ESP32 Internet Clock est donné à la fin de l'article. Ici, nous expliquons quelques parties importantes du code.
Nous avons besoin de plusieurs bibliothèques à utiliser dans notre code qui peuvent être téléchargées à partir des liens ci-dessous:
1. Adafruit_SSD1306:
2. SPI:
3. Adafruit_GFX:
4. NTPClient:
5.WiFiUdp:
Nous avons donc inclus toutes les bibliothèques et la variable définie pour la saisie du nom et du mot de passe Wi-Fi.
#comprendre
Ici, la bibliothèque NTPClient.h est utilisée pour se connecter au serveur de temps. Cela prend du temps d'un serveur NTP et le maintient synchronisé. Et la bibliothèque Hhre WiFiUdp.h est utilisée pour envoyer et recevoir des messages UDP. UDP est un protocole qui envoie et reçoit des messages courts de notre système au serveur NTP.
Donc, pour obtenir l'heure d'Internet, nous devons définir trois variables dans notre programme pour NTP.
NTP_OFFSET qui est le fuseau horaire de votre pays, c'est-à-dire pour l'Inde, il est +5: 30 heure. C'est donc 19800 en quelques secondes.
NTP_INTERVAL qui est l'intervalle de temps pris par NTP pour mettre à jour l'heure. Il est de 60 à 64 secondes.
NTP_ADDRESS est le serveur NTP de votre pays. Pour l'Inde, vous pouvez utiliser « in.pool.ntp.org ».
#define NTP_OFFSET 19800 // En secondes #define NTP_INTERVAL 60 * 1000 // En millisecondes #define NTP_ADDRESS "1.asia.pool.ntp.org" WiFiUDP ntpUDP; NTPClient timeClient (ntpUDP, NTP_ADDRESS, NTP_OFFSET, NTP_INTERVAL);
Dans la fonction de configuration , initialisez les paramètres Wi-Fi pour vous connecter à Internet.
void setup () { display.begin (); Serial.begin (9600); Serial.println (); Serial.println (); Serial.print ("Connexion à"); Serial.println (ssid); WiFi.begin (ssid, mot de passe); while (WiFi.status ()! = WL_CONNECTED) { délai (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi connecté."); Serial.println ("Adresse IP:"); Serial.println (WiFi.localIP ()); timeClient.begin ();
Ensuite, initialisez les fonctions d'affichage pour afficher l'heure sur OLED.
display.begin (SSD1306_SWITCHCAPVCC);
Dans la fonction de boucle, nous avons utilisé timeClient.update (), cette fonction prend l'heure mise à jour de NTP sous forme de chaîne et la stocke dans la variable formattedTime . Ensuite, affichez-le sur OLED en utilisant la fonction display.println () .
boucle void () { timeClient.update (); String formattedTime = timeClient.getFormattedTime (); display.clearDisplay (); display.setTextSize (2); // définit ces paramètres selon vos besoins.. display.setCursor (0, 0); display.println (formattedTime);
Le programme complet est donné ci-dessous. Maintenant, programmez enfin ESP32 avec Arduino IDE et votre horloge Internet est prête à afficher l'heure.