Obsah:
- Krok 1: Veci, ktoré potrebujete
- Krok 2: Pripojenia
- Krok 3: Stiahnite si knižnice
- Krok 4: Čo je to NTP
- Krok 5: Časť kódovania
- Krok 6: Získanie dátumu a času
Video: Internetové hodiny: Zobrazenie dátumu a času pomocou OLED pomocou ESP8266 NodeMCU s protokolom NTP: 6 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
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
pre tento projekt budete potrebovať nasledujúce veci:
Esp8266/nodemcu
Oled ssd1306 0,96"
Prepojovacie vodiče
Breadboard
USB kábel
Krok 2: 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
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
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
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
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:
Získanie času z internetu pomocou ESP8266 - Projekt hodín NTP s ESP8266 Nodemcu: 5 krokov
Získanie času z internetu pomocou ESP8266 | Projekt hodín NTP s ESP8266 Nodemcu: V tomto tutoriále uvidíme, ako získať čas pomocou ESP8266/nodemcu s Arduino IDE. Získanie času je obzvlášť užitočné v protokolovaní údajov na časovú pečiatku vašich hodnôt. Ak má váš projekt ESP8266 prístup na internet, môžete získať čas pomocou programu Network T
Arduino vykresľovanie dátumu/času/protokolovanie pomocou nástrojov Millis () a PfodApp: 11 krokov
Arduino vykresľovanie dátumu/času/protokolovanie pomocou Millis () a PfodApp: Nie je potrebné žiadne programovanie pre Arduino alebo Android. Podporované sú tiež moduly RTC a GPS. Automatická korekcia časových pásiem, posunu RTC a chýbajúcich prestupných sekúnd GPS Úvod Tento tutoriál vám ukáže, ako používať zariadenie Arduino millis ( ) časové pečiatky na vykreslenie údajov
Zobrazenie dátumu, času a teploty pomocou XinaBoxu: 8 krokov
Zobrazenie dátumu, času a teploty pomocou XinaBoxu: Cool OLED displej zobrazujúci dátum, čas a teplotu v stupňoch Celzia a Fahrenheita pomocou Xinabox xChips na základe ESP8266
Hodiny s IR diaľkovým ovládaním pre nastavenie času/dátumu: 5 krokov
Hodiny s IR diaľkovým ovládaním na nastavenie času/dátumu: Jedná sa o jednoduché hodiny vyrobené z ľahko dostupných komponentov. Použitý mikrokontrolér je lacný STM32F030F4P6. Displej je 16x2 LCD s batohom I2C (PCF8574). Hodinový obvod je možné postaviť pomocou malých prototypovacích dosiek a TSSOP
Presun dátumu a času do aplikácie Blynk pomocou Wemos D1 Mini Pro: 10 krokov
Posunutie dátumu a času do aplikácie Blynk pomocou Wemos D1 Mini Pro: Wemos D1 Mini Pro použijeme na posunutie času & dátum do aplikácie Blynk. K tejto aktivite nebudete musieť k Wemos D1 Mini Pro pripájať žiadne komponenty