Table des matières:

Horloge Internet : afficher la date et l'heure avec un OLED à l'aide de ESP8266 NodeMCU avec protocole NTP : 6 étapes
Horloge Internet : afficher la date et l'heure avec un OLED à l'aide de ESP8266 NodeMCU avec protocole NTP : 6 étapes

Vidéo: Horloge Internet : afficher la date et l'heure avec un OLED à l'aide de ESP8266 NodeMCU avec protocole NTP : 6 étapes

Vidéo: Horloge Internet : afficher la date et l'heure avec un OLED à l'aide de ESP8266 NodeMCU avec protocole NTP : 6 étapes
Vidéo: NTP - Votre ESP est à l'heure 2024, Novembre
Anonim
Horloge Internet: afficher la date et l'heure avec un OLED à l'aide de ESP8266 NodeMCU avec le protocole NTP
Horloge Internet: afficher la date et l'heure avec un OLED à l'aide de ESP8266 NodeMCU avec le protocole NTP

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

Choses dont tu as besoin
Choses dont tu as besoin
Choses dont tu as besoin
Choses dont tu as besoin
Choses dont tu as besoin
Choses dont tu as 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

Connexions
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

Télécharger des bibliothèques
Télécharger des bibliothèques
Télécharger des bibliothèques
Télécharger des 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

Qu'est-ce que NTP
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

Partie de codage
Partie de codage

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

Obtenir la date et l'heure
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é: