Taula de continguts:

Rellotge d'Internet: visualització de la data i l'hora amb un OLED mitjançant ESP8266 NodeMCU amb protocol NTP: 6 passos
Rellotge d'Internet: visualització de la data i l'hora amb un OLED mitjançant ESP8266 NodeMCU amb protocol NTP: 6 passos

Vídeo: Rellotge d'Internet: visualització de la data i l'hora amb un OLED mitjançant ESP8266 NodeMCU amb protocol NTP: 6 passos

Vídeo: Rellotge d'Internet: visualització de la data i l'hora amb un OLED mitjançant ESP8266 NodeMCU amb protocol NTP: 6 passos
Vídeo: ВКУСНАЯ ЕДА ИЗ ПРОСТЫХ ПРОДУКТОВ В КАЗАНЕ 2 РЕЦЕПТА Узбекский суп 2024, De novembre
Anonim
Rellotge d’Internet: mostra la data i l’hora amb un OLED mitjançant ESP8266 NodeMCU amb protocol NTP
Rellotge d’Internet: mostra la data i l’hora amb un OLED mitjançant ESP8266 NodeMCU amb protocol NTP

Hola nois en aquest instructable, construirem un rellotge d'Internet que obtindrà temps d'Internet, de manera que aquest projecte no necessitarà cap RTC per executar-se, només necessitarà una connexió a Internet que funcioni

I per a aquest projecte necessiteu un esp8266 que tingui una connexió wifi per obtenir accés a Internet i una pantalla per mostrar-hi l’hora i que esp8266 recuperi el temps d’Internet mitjançant el protocol NTP, ntp significa protocol de temps de xarxa, així que bàsicament hi ha servidors ntp al web que s’utilitzen per sincronitzar rellotges d’ordinadors i utilitzarem aquests servidors per obtenir temps al nostre projecte.

Pas 1: coses que necessiteu

Coses que necessiteu
Coses que necessiteu
Coses que necessiteu
Coses que necessiteu
Coses que necessiteu
Coses que necessiteu

per a aquest projecte necessitareu:

Esp8266 / nodemcu

Oled ssd1306 0,96"

Filferros de pont

Taula de pa

Cable USB

Pas 2: connexions

Connexions
Connexions

Aquesta pantalla OLED de 4 pins es comunica amb el mòdul ESP8266 mitjançant el protocol I2C; a continuació es mostren el diagrama de circuits i la taula de connexions per connectar pins OLED I2C amb NodeMCU per mostrar l’hora d’Internet.

Pas 3: baixeu les biblioteques

Descarregar biblioteques
Descarregar biblioteques
Descarregar biblioteques
Descarregar biblioteques

Assegureu-vos que heu descarregat les biblioteques SD1306 al vostre Arduino ide tal com es mostra a la imatge i assegureu-vos que també teniu la biblioteca Adafruit GFX, si no, instal·leu aquestes dues biblioteques.

Al vostre IDE Arduino, aneu al gestor de biblioteques i cerqueu NTP i descarregueu la biblioteca client NTP tal com he descarregat. Consulteu la imatge per obtenir més ajuda.

Pas 4: què és NTP

Què és NTP
Què és NTP

NTP és un dels protocols d’Internet (IP) de xarxa més antics per sincronitzar rellotges entre xarxes d’ordinadors. Va ser dissenyat per David L. Mills de la Universitat de Delaware el 1981. Aquest protocol es pot utilitzar per sincronitzar moltes xarxes amb el Temps Universal Coordinat (UTC) en pocs mil·lisegons. UTC és l’estàndard horari principal pel qual el món regula el rellotge i l’hora. UTC no canvia ni varia segons les ubicacions geogràfiques. NTP utilitza UTC com a referència horària i proporciona una hora sincronitzada i precisa a Internet.

NTP funciona en un model jeràrquic client-servidor. El model superior té rellotges de referència coneguts com a "stratum0" com rellotges atòmics, ones de ràdio, GPS, GSM que rep el temps del satèl·lit. Els servidors que reben temps de stratum0 s’anomenen “stratum1” i els servidors que reben temps de stratum1 s’anomenen “stratum2”, etc. Això continua i la precisió del temps disminueix després de cada etapa. NTP selecciona automàticament la millor de diverses fonts de temps disponibles per sincronitzar, cosa que el converteix en un protocol capaç de tolerar els errors. Així doncs, en aquest projecte, obtenim temps del servidor NTP que utilitza ESP8266 NodeMCU i el mostrem a la pantalla OLED. Aquest mateix tipus de rellotge d’Internet es crea mitjançant l’ús d’ESP32 al tutorial anterior.

Pas 5: Part de codificació

Part de codificació
Part de codificació

Per sol·licitar data i hora, inicialitzeu l'hora client amb l'adreça dels servidors NTP. Per obtenir una precisió millor, trieu l'adreça dels servidors NTP que siguin propers a la vostra àrea geogràfica. Aquí fem servir "pool.ntp.org", que proporciona servidors de tot el món. Si voleu triar servidors d'Àsia, podeu utilitzar "asia.pool.ntp.org". timeClient també compensa el temps UTC en mil·lisegons de la vostra zona horària. Per exemple, el desplaçament UTC a l'Índia és de +5: 30, de manera que convertim aquest desplaçament en mil·lisegons que és igual a 5 * 60 * 60 + 30 * 60 = 19800.

Zona. Desplaçament horari UTC (hores i minuts). Desplaçament horari UTC (segons)

ÍNDIA +5: 30 19800

LONDRES 0:00. 0

NOVA YORK -5: 00 -18000

Si us plau, copieu el codi següent i introduïu el vostre wifi i contrasenya al codi & Introduïu el temps de desplaçament al codi i, a continuació, pengeu-lo als vostres taulers esp8266.:

#include "NTPClient.h" #include "ESP8266WiFi.h" // proporciona rutines Wi-Fi específiques a ESP8266 que estem trucant per connectar-nos a la xarxa #include "WiFiUdp.h" // gestiona l'enviament i la recepció de paquets UDP

#include "SPI.h" // SPI per a la interfície OLED amb NodeMCu

#include "Adafruit_GFX.h"

#include "Adafruit_SSD1306.h"

#define SCREEN_WIDTH 128 // Amplada de pantalla OLED, en píxels

#define SCREEN_HEIGHT 64 // Alçada de la pantalla OLED, en píxels

#define OLED_RESET -1

Pantalla Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT i Wire, OLED_RESET);

constchar * ssid = "yourwifissid";

const char * password = "yourwifipass";

WiFiUDP ntpUDP;

NTPClient timeClient (ntpUDP, "pool.ntp.org", 19800, 60000);

String arr_days = {"Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"};

Cadena data_hora; // Podeu especificar l'agrupació del servidor de temps i el desplaçament (en segons, es pot canviar // posteriorment amb setTimeOffset ()). També podeu especificar l’interval d’actualització // (en mil·lisegons, es pot canviar mitjançant setUpdateInterval ()).

configuració nul·la ()

{

Serial.begin (115200);

WiFi.begin (ssid, contrasenya);

while (WiFi.status ()! = WL_CONNECTED)

{

retard (500);

Serial.print (".");

}

if (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C))

{

Serial.println (F ("Ha fallat l'assignació SSD1306"));

per (;;); // No continueu, feu un bucle per sempre

}

display.clearDisplay ();

display.setTextSize (2); // Dibuixa text a escala 2X

display.setTextColor (BLANC);

display.setCursor (5, 2);

display.println ("BENVINGUTS A");

display.println ("instructables");

display.println ("Projecte");

display.display ();

retard (3000);

timeClient.begin ();

}

bucle buit ()

{

timeClient.update ();

display.clearDisplay ();

Serial.println (timeClient.getFormattedTime ());

display.setTextSize (2); // Dibuixa text a escala 2X

display.setTextColor (BLAU);

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 (":");

display.print (mm);

display.print (":");

display.print (ss);

display.println ("PM");

}

en cas contrari

{

display.print (hh);

display.print (":");

display.print (mm);

display.print (":");

display.print (ss);

display.println ("AM");

}

int day = timeClient.getDay ();

display.println ("'" + arr_days [day] + "'");

data_hora = horaClient.getFormattedDate ();

int data_índex = hora_data.indexOf ("T");

Data de cadena = data_hora.substring (0, data_índex);

Serial.println (data);

display.println (data);

display.display ();

// Mostra el text inicial}

Pas 6: Obtenir data i hora

Obtenir data i hora
Obtenir data i hora

si ho heu connectat tot correctament i heu penjat el codi correctament, podreu veure el rellotge ntp funcionant a la pantalla oled com el meu a la pantalla oled. Consulteu la imatge per obtenir la sortida.

Recomanat: