Taula de continguts:
- Pas 1: coses que necessiteu
- Pas 2: connexions
- Pas 3: baixeu les biblioteques
- Pas 4: què és NTP
- Pas 5: Part de codificació
- Pas 6: Obtenir data i hora
Vídeo: Rellotge d'Internet: visualització de la data i l'hora amb un OLED mitjançant ESP8266 NodeMCU amb protocol NTP: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
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
per a aquest projecte necessitareu:
Esp8266 / nodemcu
Oled ssd1306 0,96"
Filferros de pont
Taula de pa
Cable USB
Pas 2: 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
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
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ó
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
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:
Obtenir temps des d'Internet mitjançant ESP8266 - Projecte de rellotge NTP amb ESP8266 Nodemcu: 5 passos
Obtenir temps des d'Internet mitjançant ESP8266 | Projecte de rellotge NTP amb ESP8266 Nodemcu: en aquest tutorial veurem com obtenir temps utilitzant l’ESP8266 / nodemcu amb Arduino IDE. Obtenir temps és especialment útil en el registre de dades per marcar temporalment les vostres lectures. Si el vostre projecte ESP8266 té accés a Internet, podeu obtenir temps utilitzant Network T
Rellotge de xarxa ESP8266 sense cap RTC - Nodemcu NTP Clock No RTC - PROJECTE DE RELLOTGE INTERNET: 4 passos
Rellotge de xarxa ESP8266 sense cap RTC | Nodemcu NTP Clock No RTC | PROJECTE DE RELLOTGE A INTERNET: Al projecte es realitzarà un projecte de rellotge sense RTC, prendrà temps d’Internet mitjançant wifi i el mostrarà a la pantalla st7735
Visualització de data, hora i temperatura mitjançant XinaBox: 8 passos
Visualització de data, hora i temperatura mitjançant XinaBox: pantalla OLED fresca que mostra la data, l'hora i la temperatura en centígrads i Fahrenheit mitjançant xips Xinabox basats en ESP8266
Una bonica unitat de visualització de data, hora i temperatura: 3 passos
Una bonica unitat de visualització de la data, l’hora i la temperatura: Hola amics, en aquest instructiu us explicaré el procediment per fer una unitat de visualització de la data, l’hora i la temperatura actual utilitzant Arduino pro mini, un RTC i una pantalla de set segments de vuit dígits. en una unitat molt compacta, que és útil
Temperatura de visualització al mòdul de visualització LED P10 mitjançant Arduino: 3 passos (amb imatges)
Temperatura de visualització al mòdul de visualització LED P10 mitjançant Arduino: en el tutorial anterior s’ha explicat com mostrar text al mòdul de visualització LED Dot Matrix P10 mitjançant Arduino i el connector DMD, que podeu consultar aquí. En aquest tutorial oferirem un senzill tutorial de projecte mitjançant el mòdul P10 com a mitjà de visualització