Obsah:

Internetové hodiny: Zobrazenie dátumu a času pomocou OLED pomocou ESP8266 NodeMCU s protokolom NTP: 6 krokov
Internetové hodiny: Zobrazenie dátumu a času pomocou OLED pomocou ESP8266 NodeMCU s protokolom NTP: 6 krokov

Video: Internetové hodiny: Zobrazenie dátumu a času pomocou OLED pomocou ESP8266 NodeMCU s protokolom NTP: 6 krokov

Video: Internetové hodiny: Zobrazenie dátumu a času pomocou OLED pomocou ESP8266 NodeMCU s protokolom NTP: 6 krokov
Video: 🚀 AMAZON 2.0 - ИНТЕРНЕТ МАГАЗИН с нуля за 6 часов [Next / React / Nest / PostgreSQL / Prisma / TS] 2024, November
Anonim
Internetové hodiny: Zobrazenie dátumu a času pomocou OLED pomocou ESP8266 NodeMCU s protokolom NTP
Internetové hodiny: Zobrazenie dátumu a času pomocou OLED pomocou ESP8266 NodeMCU s protokolom NTP

Ahoj chlapci, v tomto návode postavíme internetové hodiny, ktoré budú získavať čas z internetu, takže tento projekt nebude potrebovať žiadne RTC na spustenie, bude potrebovať iba funkčné internetové pripojenie.

A na tento projekt potrebujete esp8266, ktorý bude mať wifi na získanie prístupu na internet a displej na zobrazenie času na ňom a esp8266 bude načítavať čas z internetu pomocou protokolu NTP, ntp znamená protokol sieťového času, takže v zásade existujú servery ntp. na webe, ktoré sa používajú na synchronizáciu hodín počítača, a na získanie času v našom projekte použijeme servery bthose.

Krok 1: Veci, ktoré potrebujete

Veci, ktoré potrebujete
Veci, ktoré potrebujete
Veci, ktoré potrebujete
Veci, ktoré potrebujete
Veci, ktoré potrebujete
Veci, ktoré potrebujete

pre tento projekt budete potrebovať nasledujúce veci:

Esp8266/nodemcu

Oled ssd1306 0,96"

Prepojovacie vodiče

Breadboard

USB kábel

Krok 2: Pripojenia

Pripojenia
Pripojenia

Tento 4-kolíkový displej OLED komunikuje s modulom ESP8266 pomocou protokolu I2C, nižšie sú uvedené schémy zapojenia a tabuľka pripojení na pripojenie pinov OLED I2C s NodeMCU na zobrazenie času v internete.

Krok 3: Stiahnite si knižnice

Stiahnite si Knižnice
Stiahnite si Knižnice
Stiahnite si Knižnice
Stiahnite si Knižnice

Uistite sa, že ste si stiahli knižnice SD1306 do svojho Arduino ide, ako je znázornené na obrázku, a nezabudnite tiež nainštalovať knižnicu Adafruit GFX, ak nie, nainštalujte tieto dve knižnice.

Vo svojom Arduino IDE choďte do Správcu knižníc a vyhľadajte NTP a pri sťahovaní stačí stiahnuť klientsku knižnicu NTP, ďalšiu pomoc nájdete na obrázku.

Krok 4: Čo je to NTP

Čo je to NTP
Čo je to NTP

NTP je jedným z najstarších sieťových internetových protokolov (IP) na synchronizáciu hodín medzi počítačovými sieťami. Bol navrhnutý Davidom L. Millsom z University of Delaware v roku 1981. Tento protokol je možné použiť na synchronizáciu mnohých sietí s koordinovaným svetovým časom (UTC) v priebehu niekoľkých milisekúnd. UTC je primárny časový štandard, podľa ktorého svet reguluje hodiny a čas. UTC sa nemení a líši pre rôzne geografické polohy. NTP používa UTC ako referenciu času a poskytuje presný a synchronizovaný čas na internete.

NTP funguje na hierarchickom modeli klient-server. Špičkový model má referenčné hodiny známe ako „stratum0“, ako sú atómové hodiny, rádiové vlny, GPS a GSM, ktoré prijímajú čas zo satelitu. Servery, ktoré dostávajú čas zo stratum0, sa nazývajú „stratum1“a servery, ktoré prijímajú čas zo stratum1, sa nazývajú „stratum2“atď. To pokračuje a presnosť času sa po každej fáze znižuje. NTP automaticky vyberá najlepšie z niekoľkých dostupných zdrojov času na synchronizáciu, vďaka čomu je protokol odolný voči chybám. Takže tu v tomto projekte získavame čas zo servera NTP pomocou ESP8266 NodeMCU a zobrazujeme ho na OLED displeji. Ten istý druh internetových hodín je vytvorený pomocou ESP32 v predchádzajúcom návode.

Krok 5: Časť kódovania

Kódovacia časť
Kódovacia časť

Ak chcete požiadať o dátum a čas, inicializujte časového klienta s adresou serverov NTP. Pre väčšiu presnosť zvoľte adresu serverov NTP, ktoré sú blízko vašej geografickej oblasti. Tu používame „pool.ntp.org“, ktorý poskytuje servery z celého sveta. Ak si chcete vybrať servery z Ázie, môžete použiť „asia.pool.ntp.org“. timeClient tiež trvá časový posun UTC v milisekundách vášho časového pásma. Offset UTC pre Indiu je napríklad +5: 30, takže tento posun prepočítame na milisekundy, čo sa rovná 5*60*60 +30*60 = 19800.

Oblasť. Časový posun UTC (hodiny a minúty). Časový posun UTC (sekundy)

INDIA +5: 30 19800

LONDÝN 0:00. 0

NEW YORK -5: 00 -18000

Skopírujte nasledujúci kód a do kódu zadajte svoju sieť Wi -Fi a heslo & Zadajte do kódu časový posun a potom ho nahrajte na dosky esp8266.:

#include "NTPClient.h" #include "ESP8266WiFi.h" // poskytuje špecifické Wi-Fi rutiny ESP8266, ktoré voláme na pripojenie k sieti #include "WiFiUdp.h" // spracováva odosielanie a prijímanie balíkov UDP

#include "SPI.h" // SPI na prepojenie OLED s NodeMCu

#include "Adafruit_GFX.h"

#include "Adafruit_SSD1306.h"

#define SCREEN_WIDTH 128 // Šírka displeja OLED v pixeloch

#define SCREEN_HEIGHT 64 // OLED výška displeja, v pixeloch

#define OLED_RESET -1

Displej Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_RESET);

constchar *ssid = "yourwifissid";

const char *heslo = "yourwifipass";

WiFiUDP ntpUDP;

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

Reťazec arr_days = {„nedeľa“, „pondelok“, „utorok“, „streda“, „štvrtok“, „piatok“, „sobota“};

Reťazec date_time; // Môžete zadať fond časových serverov a posun (v sekundách, // sa dá neskôr zmeniť pomocou setTimeOffset ()). Okrem toho môžete určiť // interval aktualizácie (v milisekundách, dá sa zmeniť pomocou setUpdateInterval ()).

neplatné nastavenie ()

{

Serial.begin (115200);

WiFi.begin (ssid, heslo);

while (WiFi.status ()! = WL_CONNECTED)

{

oneskorenie (500);

Serial.print (".");

}

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

{

Serial.println (F ("Priradenie SSD1306 zlyhalo"));

pre (;;); // Nepokračujte, opakujte navždy

}

display.clearDisplay ();

display.setTextSize (2); // Nakreslite text v 2-násobnom formáte

display.setTextColor (BIELY);

display.setCursor (5, 2);

display.println („VITAJTE“);

display.println („inštrukcie“);

display.println („Projekt“);

display.display ();

oneskorenie (3000);

timeClient.begin ();

}

prázdna slučka ()

{

timeClient.update ();

display.clearDisplay ();

Serial.println (timeClient.getFormattedTime ());

display.setTextSize (2); // Nakreslite text v 2-násobnom formáte

display.setTextColor (MODRÁ);

display.setCursor (0, 2);

int hh = timeClient.getHours ();

int mm = timeClient.getMinutes ();

int ss = timeClient.getSeconds ();

ak (hh> 12)

{

hh = hh-12;

display.print (hh);

display.print (":");

displej.print (mm);

display.print (":");

display.print (ss);

display.println („PM“);

}

inak

{

display.print (hh);

display.print (":");

displej.print (mm);

display.print (":");

display.print (ss);

display.println („AM“);

}

int deň = timeClient.getDay ();

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

date_time = timeClient.getFormattedDate ();

int index_date = date_time.indexOf ("T");

Reťazec dátum = date_time.substring (0, index_date);

Serial.println (dátum);

display.println (dátum);

display.display ();

// Zobraziť počiatočný text}

Krok 6: Získanie dátumu a času

Získanie dátumu a času
Získanie dátumu a času

ak ste všetko správne pripojili a správne nahrali kód, uvidíte, že vaše hodiny ntp bežia na oledovom displeji ako moje na oledovom displeji. Výstup nájdete na obrázku.

Odporúča: