Sommario:
- Passaggio 1: cose di cui hai bisogno
- Passaggio 2: connessioni
- Passaggio 3: scarica le librerie
- Passaggio 4: cos'è l'NTP
- Passaggio 5: parte di codifica
- Passaggio 6: ottenere data e ora
Video: Orologio Internet: visualizza data e ora con un OLED utilizzando ESP8266 NodeMCU con protocollo NTP: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
Ciao ragazzi in questo tutorial costruiremo un orologio Internet che riceverà il tempo da Internet, quindi questo progetto non avrà bisogno di alcun RTC per essere eseguito, avrà solo bisogno di una connessione Internet funzionante
E per questo progetto hai bisogno di un esp8266 che avrà un wifi per ottenere l'accesso a Internet e un display per visualizzare l'ora su di esso e esp8266 recupererà il tempo da Internet utilizzando il protocollo NTP, ntp sta per network time protocol, quindi fondamentalmente ci sono server ntp sul web che vengono utilizzati per sincronizzare gli orologi del computer e utilizzeremo quei server per ottenere il tempo nel nostro progetto.
Passaggio 1: cose di cui hai bisogno
per questo progetto avrai bisogno delle seguenti cose:
Esp8266/nodemcu
Vecchio ssd1306 0,96"
Ponticelli
tagliere
Cavo USB
Passaggio 2: connessioni
Questo display OLED a 4 pin comunica con il modulo ESP8266 utilizzando il protocollo I2C, di seguito sono riportati lo schema elettrico e la tabella delle connessioni per collegare i pin OLED I2C con NodeMCU per visualizzare l'ora di Internet.
Passaggio 3: scarica le librerie
Assicurati di aver scaricato le librerie SD1306 nel tuo Arduino ide come mostrato nell'immagine e assicurati di avere anche la libreria Adafruit GFX, in caso contrario installa queste due librerie.
Nel tuo IDE Arduino vai su Gestore librerie e cerca NTP e scarica semplicemente la libreria client NTP come ho scaricato, fai riferimento all'immagine per ulteriore aiuto.
Passaggio 4: cos'è l'NTP
NTP è uno dei più vecchi IP (Internet Protocol) di rete per la sincronizzazione degli orologi tra le reti di computer. È stato progettato da David L. Mills dell'Università del Delaware nel 1981. Questo protocollo può essere utilizzato per sincronizzare molte reti al Coordinated Universal Time (UTC) in pochi millisecondi. UTC è lo standard orario principale con cui il mondo regola l'orologio e l'ora. L'UTC non cambia e varia per le diverse località geografiche. NTP utilizza l'UTC come riferimento temporale e fornisce un'ora precisa e sincronizzata su Internet.
NTP funziona su un modello gerarchico client-server. Il modello di punta ha orologi di riferimento noti come "stratum0" come orologi atomici, onde radio, GPS, GSM che riceve l'ora dal satellite. I server che ricevono l'ora da stratum0 sono chiamati "stratum1" e i server che ricevono l'ora da stratum1 sono chiamati "stratum2" e così via. Questo va avanti e la precisione del tempo continua a diminuire dopo ogni fase. NTP seleziona automaticamente la migliore tra diverse sorgenti temporali disponibili per la sincronizzazione, il che lo rende un protocollo in grado di tollerare i guasti. Quindi qui in questo progetto, stiamo ottenendo tempo dal server NTP utilizzando ESP8266 NodeMCU e mostrandolo sul display OLED. Questo stesso tipo di orologio Internet viene creato utilizzando ESP32 nel tutorial precedente.
Passaggio 5: parte di codifica
Per richiedere data e ora, inizializzare il client dell'ora con l'indirizzo dei server NTP. Per una migliore precisione scegli l'indirizzo dei server NTP vicini alla tua area geografica. Qui usiamo "pool.ntp.org" che fornisce server da tutto il mondo. Se desideri scegliere server dall'Asia, puoi utilizzare "asia.pool.ntp.org". timeClient rileva anche l'offset dell'ora UTC in millisecondi del fuso orario. Ad esempio, l'offset UTC per l'India è +5:30, quindi convertiamo questo offset in millisecondi che è uguale a 5*60*60+30*60 = 19800.
La zona. Scostamento dell'ora UTC (ore e minuti). Scostamento dell'ora UTC (secondi)
INDIA +5:30 19800
LONDRA 0:00. 0
NEW YORK -5:00 -18000
Copia il seguente codice e inserisci il tuo wifi e la password nel codice e inserisci l'offset di tempo nel codice, quindi caricalo sulle tue schede esp8266.:
#include "NTPClient.h"#include "ESP8266WiFi.h" // fornisce le routine Wi-Fi specifiche di ESP8266 che stiamo chiamando per connetterci alla rete #include "WiFiUdp.h" // gestisce l'invio e la ricezione di pacchetti UDP
#include "SPI.h" // SPI per interfacciare OLED con NodeMCu
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128 // Larghezza del display OLED, in pixel
#define SCREEN_HEIGHT 64 // Altezza del display OLED, in pixel
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
constchar *ssid = "yourwifissid";
const char *password = "yourwifipass";
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", 19800, 60000);
String arr_days={"Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"};
Stringa data_ora; // È possibile specificare il pool del server dell'ora e l'offset (in secondi, può essere // modificato in seguito con setTimeOffset()). Inoltre è possibile specificare // l'intervallo di aggiornamento (in millisecondi, può essere modificato utilizzando setUpdateInterval()).
configurazione nulla()
{
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
ritardo (500);
Serial.print (".");
}
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println(F("allocazione SSD1306 non riuscita"));
per(;;); // Non procedere, loop per sempre
}
display.clearDisplay();
display.setTextSize(2); // Disegna testo in scala 2X
display.setTextColor(BIANCO);
display.setCursor(5, 2);
display.println("BENVENUTO A");
display.println ("istruzioni");
display.println("Progetto");
display.display();
ritardo (3000);
timeClient.begin();
}
ciclo vuoto()
{
timeClient.update();
display.clearDisplay();
Serial.println(timeClient.getFormattedTime());
display.setTextSize(2); // Disegna testo in scala 2X
display.setTextColor(BLUE);
display.setCursor(0, 2);
int hh = timeClient.getHours();
int mm = timeClient.getMinutes();
int ss = timeClient.getSeconds();
se(hh>12)
{
hh=hh-12;
display.print(hh);
display.print(: );
display.print(mm);
display.print(: );
display.print(s);
display.println("PM");
}
altro
{
display.print(hh);
display.print(: );
display.print(mm);
display.print(: );
display.print(s);
display.println("AM");
}
int giorno = timeClient.getDay();
display.println("'"+arr_days[giorno]+"'");
date_time = timeClient.getFormattedDate();
int index_date = date_time.indexOf("T");
Stringa data = date_ora.substring(0, index_date);
Serial.println(data);
display.println(data);
display.display();
// Mostra il testo iniziale }
Passaggio 6: ottenere data e ora
se hai collegato tutto correttamente e hai caricato anche il codice correttamente, sarai in grado di vedere il tuo orologio ntp in esecuzione sul display oled come il mio in esecuzione sul display oled. Si prega di fare riferimento all'immagine per l'output.
Consigliato:
ESP8266 OLED - Ottieni ora e data da Internet: 8 passaggi
ESP8266 OLED - Ottieni ora e data da Internet: in questo tutorial impareremo come ottenere la data e l'ora dal server NIST TIME utilizzando ESP8266 OLED e Visuino, Guarda un video dimostrativo
Orologio GPS Arduino con ora locale utilizzando il modulo NEO-6M: 9 passaggi
Orologio GPS Arduino con ora locale utilizzando il modulo NEO-6M: in questo tutorial impareremo come ottenere l'ora corrente dai satelliti utilizzando arduino.Guarda il video
Visualizza testo su OLED tramite Internet: 9 passaggi
Visualizza testo su OLED tramite Internet: Ciao e benvenuto, questo breve tutorial ti insegnerà a visualizzare il testo su un Magicbit utilizzando Magicblocks. Esistono 2 metodi principali per raggiungere questo obiettivo; Usando Inject Block. Usando Dashboard. Prima di tutto accedi al tuo Magicb
Ottenere tempo da Internet utilizzando ESP8266 - Progetto orologio NTP con Nodemcu ESP8266: 5 passaggi
Ottenere tempo da Internet utilizzando ESP8266 | NTP Clock Project With ESP8266 Nodemcu: In questo tutorial vedremo come ottenere il tempo usando ESP8266/nodemcu con Arduino IDE. Ottenere il tempo è particolarmente utile nella registrazione dei dati per contrassegnare l'ora delle letture. Se il tuo progetto ESP8266 ha accesso a Internet, puoi ottenere tempo utilizzando Network T
Orologio di rete ESP8266 senza RTC - Nodemcu NTP Clock No RTC - PROGETTO OROLOGIO INTERNET: 4 passaggi
Orologio di rete ESP8266 senza RTC | Nodemcu NTP Clock No RTC | PROGETTO OROLOGIO INTERNET: Nel progetto verrà realizzato un progetto orologio senza RTC, impiegherà tempo da Internet tramite wifi e lo visualizzerà sul display st7735