Table des matières:
- Étape 1: choses dont vous avez besoin
- Étape 2: Connexions
- Étape 3: Télécharger les bibliothèques
- Étape 4: Qu'est-ce que NTP
- Étape 5: coder la partie
- Étape 6: Obtenir la date et l'heure
Vidéo: Horloge Internet : afficher la date et l'heure avec un OLED à l'aide de ESP8266 NodeMCU avec protocole NTP : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
Salut les gars dans ces instructables, nous allons construire une horloge Internet qui obtiendra le temps d'Internet, donc ce projet n'aura besoin d'aucun RTC pour fonctionner, il n'aura besoin que d'une connexion Internet fonctionnelle
Et pour ce projet, vous avez besoin d'un esp8266 qui aura un accès wifi pour accéder à Internet et un écran pour afficher l'heure dessus et esp8266 récupérera l'heure d'Internet en utilisant le protocole NTP, ntp signifie network time protocol, donc fondamentalement il y a des serveurs ntp sur le Web qui sont utilisés pour synchroniser les horloges des ordinateurs et nous utiliserons ces serveurs pour obtenir du temps dans notre projet.
Étape 1: choses dont vous avez besoin
pour ce projet, vous aurez besoin des éléments suivants:
Esp8266/nodemcu
Oled ssd1306 0.96"
Fils de cavalier
Planche à pain
Cable USB
Étape 2: Connexions
Cet écran OLED à 4 broches communique avec le module ESP8266 à l'aide du protocole I2C. Vous trouverez ci-dessous le schéma de circuit et le tableau des connexions pour connecter les broches OLED I2C avec NodeMCU pour afficher l'heure Internet.
Étape 3: Télécharger les bibliothèques
Assurez-vous d'avoir téléchargé les bibliothèques SD1306 dans votre ide Arduino comme indiqué dans l'image et assurez-vous également de la bibliothèque Adafruit GFX, sinon installez ces deux bibliothèques.
Dans votre IDE Arduino, accédez au gestionnaire de bibliothèques et recherchez NTP et téléchargez simplement la bibliothèque cliente NTP telle que je l'ai téléchargée, reportez-vous à l'image pour obtenir de l'aide.
Étape 4: Qu'est-ce que NTP
NTP est l'un des plus anciens protocoles Internet (IP) de mise en réseau pour la synchronisation des horloges entre les réseaux informatiques. Il a été conçu par David L. Mills de l'Université du Delaware en 1981. Ce protocole peut être utilisé pour synchroniser de nombreux réseaux en temps universel coordonné (UTC) en quelques millisecondes. UTC est la principale norme de temps par laquelle le monde régule l'horloge et l'heure. L'UTC ne change pas et varie selon les différents emplacements géographiques. NTP utilise l'UTC comme référence de temps et fournit une heure précise et synchronisée sur Internet.
NTP fonctionne sur un modèle client-serveur hiérarchique. Le modèle haut de gamme a des horloges de référence appelées "stratum0" comme les horloges atomiques, les ondes radio, le GPS, le GSM qui reçoit l'heure du satellite. Les serveurs qui reçoivent l'heure de la strate0 sont appelés « strate1 » et les serveurs qui reçoivent l'heure de la strate1 sont appelés « strate2 » et ainsi de suite. Cela continue et la précision du temps continue de diminuer après chaque étape. NTP sélectionne automatiquement la meilleure de plusieurs sources de temps disponibles à synchroniser, ce qui en fait un protocole tolérant aux pannes. Donc, ici, dans ce projet, nous obtenons du temps du serveur NTP utilisant ESP8266 NodeMCU et l'affichant sur un écran OLED. Ce même type d'horloge Internet est construit en utilisant ESP32 dans le didacticiel précédent.
Étape 5: coder la partie
Pour demander la date et l'heure, initialisez le client de l'heure avec l'adresse des serveurs NTP. Pour une meilleure précision choisissez l'adresse des serveurs NTP qui sont proches de votre zone géographique. Ici, nous utilisons « pool.ntp.org » qui donne des serveurs du monde entier. Si vous souhaitez choisir des serveurs en Asie, vous pouvez utiliser « asia.pool.ntp.org ». timeClient prend également le décalage horaire UTC en millisecondes de votre fuseau horaire. Par exemple, le décalage UTC pour l'Inde est de +5:30, nous convertissons donc ce décalage en millisecondes qui est égal à 5*60*60+30*60 = 19800.
Zone. Décalage horaire UTC (heures et minutes). Décalage horaire UTC (secondes)
INDE +5:30 19800
LONDRES 00h00. 0
NEW YORK -5:00 -18000
Veuillez copier le code suivant et entrez votre wifi et votre mot de passe dans le code et entrez le décalage horaire dans le code, puis téléchargez-le sur vos cartes esp8266.:
#include "NTPClient.h"#include "ESP8266WiFi.h" // fournit des routines Wi-Fi spécifiques à ESP8266 que nous appelons pour se connecter au réseau #include "WiFiUdp.h" // gère l'envoi et la réception de packages UDP
#include "SPI.h" // SPI pour interfacer OLED avec NodeMCu
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128 // Largeur d'affichage OLED, en pixels
#define SCREEN_HEIGHT 64 // Hauteur d'affichage OLED, en pixels
#define OLED_RESET -1
Affichage Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
constchar *ssid = "votrewifissid";
const char *motdepasse = "votrepassewifi";
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", 19800, 60000);
String arr_days={"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"};
Chaîne date_heure; // Vous pouvez spécifier le pool de serveurs de temps et le décalage (en secondes, // peut être modifié ultérieurement avec setTimeOffset()). De plus, vous pouvez spécifier // l'intervalle de mise à jour (en millisecondes, peut être modifié à l'aide de setUpdateInterval()).
void setup()
{
Serial.begin(115200);
WiFi.begin(ssid, mot de passe);
tandis que (WiFi.status() != WL_CONNECTED)
{
retard (500);
Serial.print (".");
}
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println(F("L'allocation SSD1306 a échoué"));
pour(;;); // Ne continue pas, boucle indéfiniment
}
display.clearDisplay();
display.setTextSize(2); // Dessiner du texte à l'échelle 2X
display.setTextColor(BLANC);
display.setCursor(5, 2);
display.println("BIENVENUE SUR");
display.println("instructables");
display.println(" Projet");
display.display();
retard(3000);
timeClient.begin();
}
boucle vide()
{
timeClient.update();
display.clearDisplay();
Serial.println(timeClient.getFormattedTime());
display.setTextSize(2); // Dessiner du texte à l'échelle 2X
display.setTextColor(BLUE);
display.setCursor(0, 2);
int hh = timeClient.getHours();
int mm = timeClient.getMinutes();
int ss = timeClient.getSeconds();
si(hh>12)
{
hh=hh-12;
display.print(hh);
display.print(":");
affichage.impression(mm);
display.print(":");
display.print(ss);
display.println(" PM");
}
autre
{
display.print(hh);
display.print(":");
affichage.impression(mm);
display.print(":");
display.print(ss);
display.println(" AM");
}
int jour = timeClient.getDay();
display.println("'"+arr_days[jour]+"'");
date_time = timeClient.getFormattedDate();
int index_date = date_time.indexOf("T");
String date = date_time.substring(0, index_date);
Serial.println(date);
display.println(date);
display.display();
// Afficher le texte initial }
Étape 6: Obtenir la date et l'heure
si vous avez tout connecté correctement et téléchargé le code correctement, vous pourrez voir votre horloge ntp fonctionner sur l'écran oled comme la mienne dans l'écran oled. Veuillez vous référer à l'image pour la sortie.
Conseillé:
DIY Comment afficher l'heure sur M5StickC ESP32 à l'aide de Visuino - Facile à faire: 9 étapes
DIY Comment afficher l'heure sur M5StickC ESP32 à l'aide de Visuino - Facile à faire: Dans ce tutoriel, nous allons apprendre à programmer ESP32 M5Stack StickC avec Arduino IDE et Visuino pour afficher l'heure sur l'écran LCD
ESP8266 OLED - Obtenir l'heure et la date à partir d'Internet : 8 étapes
ESP8266 OLED - Obtenir l'heure et la date à partir d'Internet : dans ce didacticiel, nous apprendrons comment obtenir la date et l'heure du serveur NIST TIME à l'aide de ESP8266 OLED et Visuino, regardez une vidéo de démonstration
ESP8266 Horloge réseau sans RTC - Nodemcu NTP Horloge Pas de RTC - PROJET HORLOGE INTERNET : 4 étapes
ESP8266 Horloge réseau sans RTC | Nodemcu NTP Horloge Pas de RTC | PROJET D'HORLOGE INTERNET: Dans le projet, un projet d'horloge sans RTC prendra du temps sur Internet en utilisant le wifi et l'affichera sur l'écran st7735
Traçage/enregistrement de date/heure Arduino à l'aide de Millis () et de PfodApp : 11 étapes
Arduino Date/Time Plotting/Logging à l'aide de Millis() et PfodApp : aucune programmation Arduino ou Android requise. Les modules RTC et GPS sont également pris en charge. Correction automatique des fuseaux horaires, de la dérive RTC et des secondes intercalaires manquantes du GPS. ) horodatages pour tracer les données ag
Horloge avec télécommande IR pour les réglages de l'heure/de la date : 5 étapes
Horloge avec télécommande IR pour les réglages de l'heure et de la date : il s'agit d'une horloge simple fabriquée à l'aide de composants facilement disponibles. Le microcontrôleur utilisé est un STM32F030F4P6 peu coûteux. L'écran est un écran LCD 16x2 avec sac à dos I2C (PCF8574). Le circuit d'horloge peut être construit à l'aide de petites cartes de prototypage et d'un TSSOP