Obsah:
- Krok 1: Věci, které potřebujete
- Krok 2: Připojení
- Krok 3: Stáhněte si knihovny
- Krok 4: Co je NTP
- Krok 5: Část kódování
- Krok 6: Získání data a času
Video: Internetové hodiny: Zobrazení data a času pomocí OLED pomocí ESP8266 NodeMCU s protokolem NTP: 6 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Ahoj kluci v tomto návodu, postavíme internetové hodiny, které získají čas z internetu, takže tento projekt nebude ke spuštění potřebovat žádný RTC, bude potřebovat pouze funkční připojení k internetu
A pro tento projekt potřebujete esp8266, který bude mít wifi pro přístup k internetu a displej pro zobrazení času na něm a esp8266 bude načítat čas z internetu pomocí protokolu NTP, ntp znamená protokol síťového času, takže v podstatě existují servery ntp na webu, které se používají k synchronizaci hodin počítače, a budeme používat bthose servery, abychom získali čas v našem projektu.
Krok 1: Věci, které potřebujete
pro tento projekt budete potřebovat následující věci:
Esp8266/nodemcu
Oled ssd1306 0,96"
Propojovací vodiče
Prkénko
USB kabel
Krok 2: Připojení
Tento 4pinový OLED displej komunikuje s modulem ESP8266 pomocí protokolu I2C, níže je schéma zapojení a tabulka připojení pro připojení pinů OLED I2C s NodeMCU k zobrazení internetového času.
Krok 3: Stáhněte si knihovny
Ujistěte se, že jste si do Arduino ide stáhli knihovny SD1306, jak je znázorněno na obrázku, a také knihovnu Adafruit GFX, pokud ne, nainstalujte tyto dvě knihovny.
Ve vašem Arduino IDE přejděte do Správce knihoven a vyhledejte NTP a stáhněte si klientskou knihovnu NTP, jak jsem stáhl, další pomoc naleznete na obrázku.
Krok 4: Co je NTP
NTP je jedním z nejstarších síťových internetových protokolů (IP) pro synchronizaci hodin mezi počítačovými sítěmi. Byl navržen Davidem L. Millsem z University of Delaware v roce 1981. Tento protokol lze použít k synchronizaci mnoha sítí do koordinovaného světového času (UTC) během několika milisekund. UTC je primární časový standard, podle kterého svět reguluje hodiny a čas. UTC se pro různé geografické polohy nemění a liší se. NTP používá jako referenci času UTC a poskytuje přesný a synchronizovaný čas na internetu.
NTP funguje na hierarchickém modelu klient-server. Top model má referenční hodiny známé jako „stratum0“jako atomové hodiny, rádiové vlny, GPS, GSM, které přijímají čas ze satelitu. Servery, které přijímají čas ze stratum0, se nazývají „stratum1“a servery, které přijímají čas ze stratum1, se nazývají „stratum2“atd. To pokračuje a přesnost času se po každé fázi snižuje. NTP automaticky vybere to nejlepší z několika dostupných časových zdrojů pro synchronizaci, což z něj činí protokol odolný vůči chybám. Tady v tomto projektu získáváme čas ze serveru NTP pomocí ESP8266 NodeMCU a zobrazujeme jej na OLED displeji. Stejný druh internetových hodin je vytvořen pomocí ESP32 v předchozím tutoriálu.
Krok 5: Část kódování
Chcete -li požádat o datum a čas, inicializujte časového klienta s adresou serverů NTP. Pro lepší přesnost zvolte adresu serverů NTP, které jsou blízko vaší geografické oblasti. Zde používáme „pool.ntp.org“, který poskytuje servery z celého světa. Pokud si přejete vybrat servery z Asie, můžete použít „asia.pool.ntp.org“. timeClient také trvá časový posun UTC v milisekundách vašeho časového pásma. Offset UTC pro Indii je například +5: 30, takže tento posun převedeme na milisekundy, což se rovná 5*60*60 +30*60 = 19800.
Plocha. Časový posun UTC (hodiny a minuty). Časový posun UTC (sekundy)
INDIE +5: 30 19800
LONDÝN 0:00. 0
NEW YORK -5: 00 -18000
Zkopírujte prosím následující kód a do kódu zadejte své wifi a heslo & Zadejte do kódu časový posun a poté jej nahrajte na desky esp8266.:
#include "NTPClient.h" #include "ESP8266WiFi.h" // poskytuje ESP8266 specifické Wi-Fi rutiny, které voláme pro připojení k síti #include "WiFiUdp.h" // zpracovává odesílání a přijímání UDP balíčků
#include "SPI.h" // SPI pro propojení OLED s NodeMCu
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128 // OLED šířka displeje, v pixelech
#define SCREEN_HEIGHT 64 // OLED výška displeje, v pixelech
#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, 60000);
Řetězec arr_days = {"neděle", "pondělí", "úterý", "středa", "čtvrtek", "pátek", "sobota"};
Řetězec date_time; // Můžete zadat fond časových serverů a offset (v sekundách, // lze později změnit pomocí setTimeOffset ()). Navíc můžete zadat // interval aktualizace (v milisekundách, lze změnit pomocí setUpdateInterval ()).
neplatné nastavení ()
{
Serial.begin (115200);
WiFi.begin (ssid, heslo);
while (WiFi.status ()! = WL_CONNECTED)
{
zpoždění (500);
Serial.print (".");
}
if (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println (F ("Přidělení SSD1306 se nezdařilo"));
pro(;;); // Nepokračujte, smyčka navždy
}
display.clearDisplay ();
display.setTextSize (2); // Nakreslete text v měřítku 2X
display.setTextColor (BÍLÁ);
display.setCursor (5, 2);
display.println („VÍTEJTE“);
display.println ("instructables");
display.println („Projekt“);
display.display ();
zpoždění (3000);
timeClient.begin ();
}
prázdná smyčka ()
{
timeClient.update ();
display.clearDisplay ();
Serial.println (timeClient.getFormattedTime ());
display.setTextSize (2); // Nakreslete text v měřítku 2X
display.setTextColor (MODRÁ);
display.setCursor (0, 2);
int hh = timeClient.getHours ();
int mm = timeClient.getMinutes ();
int ss = timeClient.getSeconds ();
pokud (hh> 12)
{
hh = hh-12;
display.print (hh);
display.print (":");
displej.print (mm);
display.print (":");
display.print (ss);
display.println („PM“);
}
jiný
{
display.print (hh);
display.print (":");
displej.print (mm);
display.print (":");
display.print (ss);
display.println („AM“);
}
int den = timeClient.getDay ();
display.println ("'"+arr_days [den]+"'");
date_time = timeClient.getFormattedDate ();
int index_date = date_time.indexOf ("T");
Řetězec date = date_time.substring (0, index_date);
Serial.println (datum);
display.println (datum);
display.display ();
// Zobrazit počáteční text}
Krok 6: Získání data a času
pokud jste vše správně připojili a také správně nahráli kód, pak uvidíte, že vaše hodiny ntp běží na oled displeji jako moje běží na oled displeji. Výstup najdete na obrázku.
Doporučuje:
Získání času z internetu pomocí ESP8266 - Projekt hodin NTP s ESP8266 Nodemcu: 5 kroků
Získání času z internetu pomocí ESP8266 | Projekt hodin NTP s ESP8266 Nodemcu: V tomto tutoriálu uvidíme, jak získat čas pomocí ESP8266/nodemcu s Arduino IDE. Získání času je užitečné zejména při protokolování dat k časovému razítku vašich naměřených hodnot. Pokud má váš projekt ESP8266 přístup k internetu, můžete získat čas pomocí Network T
Zobrazení ČASU CPU na ESP Wemos D1 OLED: 7 kroků
Zobrazit čas CPU na ESP Wemos D1 OLED: V tomto tutoriálu použijeme ESP Wemos D1 OLED a Visuino k zobrazení času CPU na OLED displeji. Podívejte se na ukázkové video
Zobrazení data, času a teploty pomocí XinaBoxu: 8 kroků
Zobrazení data, času a teploty pomocí XinaBoxu: Cool OLED displej zobrazující datum, čas a teplotu ve stupních Celsia a Fahrenheita pomocí Xinabox xChips na základě ESP8266
Internetové hodiny (NTP) pro projekty IoT: 6 kroků
Internetové hodiny (NTP) pro projekty IoT: Tento projekt vám pomůže získat čas z internetu pro projekty IoT, aniž byste vyžadovali další hardware RTC. V tomto tutoriálu si ukážeme, jak používat Nokia LCD 5110, získávat data NTP z internetu a zobrazovat je na LCD na konkrétních souřadnicích. Pojďme
Roztomilá jednotka zobrazení data, času a teploty: 3 kroky
Roztomilá jednotka zobrazení data, času a teploty: Ahoj přátelé, v tomto návodu vysvětlím postup pro vytvoření jednotky data, času a aktuální teploty pomocí Arduino pro mini, RTC a osmimístného sedmisegmentového displeje ve velmi kompaktní jednotce, která je užitečným vývojovým