Cuprins:
- Pasul 1: Lucruri de care aveți nevoie
- Pasul 2: Conexiuni
- Pasul 3: Descărcați bibliotecile
- Pasul 4: Ce este NTP
- Pasul 5: Codificarea părții
- Pasul 6: Obținerea datei și orei
Video: Ceas Internet: Afișați data și ora cu un OLED utilizând ESP8266 NodeMCU cu protocol NTP: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
Bună băieți în acest instructables vom construi un ceas de internet, care va primi timp de pe internet, astfel încât acest proiect nu va avea nevoie de niciun RTC pentru a rula, va avea nevoie doar de o conexiune de internet funcțională
Și pentru acest proiect aveți nevoie de un esp8266 care va avea un wifi pentru a obține acces la internet și un afișaj pentru a afișa ora pe acesta și esp8266 va prelua timp de pe internet folosind protocolul NTP, ntp înseamnă protocolul timpului de rețea, deci practic există servere ntp pe web, care sunt utilizate pentru a sincroniza ceasurile computerului și vom folosi aceste servere pentru a obține timp în proiectul nostru.
Pasul 1: Lucruri de care aveți nevoie
pentru acest proiect veți avea nevoie de următoarele lucruri:
Esp8266 / nodemcu
Oled ssd1306 0.96"
Sârme de jumper
Pană de pâine
Cablu USB
Pasul 2: Conexiuni
Acest afișaj OLED cu 4 pini comunică cu modulul ESP8266 utilizând protocolul I2C, mai jos sunt schema de circuite și tabelul de conexiuni pentru a conecta pinii OLED I2C cu NodeMCU pentru a afișa ora Internetului.
Pasul 3: Descărcați bibliotecile
Asigurați-vă că ați descărcat bibliotecile SD1306 în ideea dvs. Arduino așa cum se arată în imagine și asigurați-vă că aveți și biblioteca Adafruit GFX, dacă nu, atunci instalați aceste două biblioteci.
În IDE-ul dvs. Arduino, accesați Managerul de biblioteci și căutați NTP și descărcați biblioteca client NTP așa cum am descărcat, consultați imaginea pentru ajutor suplimentar.
Pasul 4: Ce este NTP
NTP este unul dintre cele mai vechi Protocol de Internet (IP) de rețea pentru sincronizarea ceasurilor între rețelele de calculatoare. A fost proiectat de David L. Mills de la Universitatea din Delaware în 1981. Acest protocol poate fi utilizat pentru a sincroniza mai multe rețele cu Timpul universal coordonat (UTC) în câteva milisecunde. UTC este principalul standard de timp prin care lumea reglează ceasul și ora. UTC nu se modifică și nu variază în funcție de locațiile geografice. NTP folosește UTC ca referință de timp și oferă timp precis și sincronizat pe internet.
NTP funcționează pe un model ierarhic client-server. Modelul de top are ceasuri de referință cunoscute sub numele de „stratum0”, cum ar fi ceasuri atomice, unde radio, GPS, GSM care primește timp de la satelit. Serverele care primesc timp de la stratum0 sunt numite „stratum1” și serverele care primesc timp de la stratum1 sunt numite „stratum2” și așa mai departe. Acest lucru continuă și precizia timpului continuă să scadă după fiecare etapă. NTP selectează automat cea mai bună dintre mai multe surse de timp disponibile pentru sincronizare, ceea ce îl face protocolul capabil să tolereze defecțiunile. Deci, aici, în acest proiect, obținem timp de la serverul NTP folosind ESP8266 NodeMCU și îl afișăm pe afișajul OLED. Același tip de ceas de internet este construit utilizând ESP32 în tutorialul anterior.
Pasul 5: Codificarea părții
Pentru a solicita data și ora, inițializați ora clientului cu adresa serverelor NTP. Pentru o precizie mai bună, alegeți adresa serverelor NTP care sunt aproape de zona geografică. Aici folosim „pool.ntp.org” care oferă servere din întreaga lume. Dacă doriți să alegeți servere din Asia, puteți folosi „asia.pool.ntp.org”. timeClient ia, de asemenea, decalarea timpului UTC în milisecunde din fusul orar. De exemplu, decalajul UTC pentru India este de +5: 30, deci convertim acest decalaj în milisecunde, care este egal cu 5 * 60 * 60 + 30 * 60 = 19800.
Zonă. Compensarea orei UTC (ore și minute). Offset timp UTC (secunde)
INDIA +5: 30 19800
LONDRA 0:00. 0
NEW YORK -5: 00 -18000
Vă rugăm să copiați următorul cod și să introduceți wifi-ul și parola în cod și să introduceți decalajul de timp în cod, apoi să îl încărcați pe panourile dvs. esp8266.:
#include "NTPClient.h" #include "ESP8266WiFi.h" // oferă rutine Wi-Fi specifice ESP8266 pe care le apelăm pentru a ne conecta la rețea #include "WiFiUdp.h" // gestionează trimiterea și primirea pachetelor UDP
#includeți „SPI.h” // SPI pentru interfața OLED cu NodeMCu
#include „Adafruit_GFX.h”
#include "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128 // Lățimea ecranului OLED, în pixeli
#define SCREEN_HEIGHT 64 // Înălțimea afișajului OLED, în pixeli
#define OLED_RESET -1
Afișaj Adafruit_SSD1306 (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 = {"duminică", "luni", "marți", "miercuri", "joi", "vineri", "sâmbătă"};
String data_time; // Puteți specifica pool-ul serverului de timp și offset-ul (în secunde, // poate fi modificat ulterior cu setTimeOffset ()). În plus, puteți specifica // intervalul de actualizare (în milisecunde, poate fi modificat folosind setUpdateInterval ()).
configurare nulă ()
{
Serial.begin (115200);
WiFi.begin (ssid, parolă);
while (WiFi.status ()! = WL_CONNECTED)
{
întârziere (500);
Serial.print (".");
}
if (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println (F ("Alocarea SSD1306 a eșuat"));
pentru(;;); // Nu continuați, buclați pentru totdeauna
}
display.clearDisplay ();
display.setTextSize (2); // Desenați text la scară 2X
display.setTextColor (ALB);
display.setCursor (5, 2);
display.println ("BINE AȚI VENIT LA");
display.println ("instructables");
display.println ("Proiect");
display.display ();
întârziere (3000);
timeClient.begin ();
}
bucla nulă ()
{
timeClient.update ();
display.clearDisplay ();
Serial.println (timeClient.getFormattedTime ());
display.setTextSize (2); // Desenați text la scară 2X
display.setTextColor (ALBASTRU);
display.setCursor (0, 2);
int hh = timeClient.getHours ();
int mm = timeClient.getMinutes ();
int ss = timeClient.getSeconds ();
dacă (hh> 12)
{
hh = hh-12;
display.print (hh);
display.print (":");
display.print (mm);
display.print (":");
display.print (ss);
display.println ("PM");
}
altceva
{
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] + "'");
date_time = timeClient.getFormattedDate ();
int index_date = date_time.indexOf ("T");
String date = date_time.substring (0, index_date);
Serial.println (data);
display.println (data);
display.display ();
// Afișați textul inițial}
Pasul 6: Obținerea datei și orei
dacă ați conectat totul în mod corespunzător și ați încărcat codul în mod corespunzător, atunci veți putea vedea ceasul dvs. ntp rulând pe afișajul oled ca al meu în timpul rulării pe afișajul oled. Vă rugăm să consultați imaginea pentru ieșire.
Recomandat:
Cum să afișați text pe M5StickC ESP32 utilizând Visuino: 6 pași
Cum se afișează text pe M5StickC ESP32 folosind Visuino: În acest tutorial vom învăța cum să programăm ESP32 M5Stack StickC cu Arduino IDE și Visuino pentru a afișa orice text pe LCD
Afișați text pe OLED prin Internet: 9 pași
Afișare text pe OLED prin Internet: Bună ziua și Bine ați venit, Acest scurt tutorial vă va învăța să afișați text pe un Magicbit folosind Magicblock. Există 2 metode principale pentru atingerea acestui obiectiv; Prin utilizarea Inject Block. Folosind Dashboard. În primul rând conectați-vă la Magicb
Obținerea timpului de pe Internet utilizând ESP8266 - NTP Clock Project cu ESP8266 Nodemcu: 5 pași
Obținerea timpului de pe Internet utilizând ESP8266 | NTP Clock Project With ESP8266 Nodemcu: În acest tutorial vom vedea cum să obțineți timp folosind ESP8266 / nodemcu cu Arduino IDE. Obținerea timpului este utilă în special în înregistrarea datelor pentru a vă marca citirile. Dacă proiectul dvs. ESP8266 are acces la Internet, puteți obține timp folosind Network T
ESP8266 Ceas de rețea fără niciun RTC - Nodemcu NTP Clock No RTC - PROIECT DE Ceas INTERNET: 4 pași
ESP8266 Ceas de rețea fără niciun RTC | Nodemcu NTP Clock No RTC | PROIECT DE Ceas INTERNET: În proiect va fi realizat un proiect de ceas fără RTC, va lua timp de pe internet folosind wifi și îl va afișa pe afișajul st7735
Afișați textul pe ecranul LED P10 utilizând Arduino: 5 pași (cu imagini)
Afișare text la afișajul LED P10 Utilizând Arduino: Dotmatrix Display sau mai des denumit Running Text este adesea găsit în magazine ca mijloc de publicitate a produselor lor, este practic și flexibil în utilizarea sa, care îi încurajează pe actorii de afaceri să-l folosească drept sfaturi publicitare. Acum, utilizarea Dot