Spisu treści:
- Krok 1: Rzeczy, których potrzebujesz
- Krok 2: Połączenia
- Krok 3: Pobierz biblioteki
- Krok 4: Co to jest NTP
- Krok 5: Część kodowania
- Krok 6: Uzyskiwanie daty i czasu
Wideo: Zegar internetowy: wyświetlanie daty i godziny za pomocą OLED za pomocą ESP8266 NodeMCU z protokołem NTP: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
Cześć chłopaki, w tej instrukcji zbudujemy zegar internetowy, który będzie pobierał czas z Internetu, więc ten projekt nie będzie wymagał żadnego czasu RTC, będzie potrzebował tylko działającego połączenia internetowego
A do tego projektu potrzebujesz esp8266 który będzie miał wifi aby uzyskać dostęp do internetu i wyświetlacz do wyświetlania czasu na nim a esp8266 będzie pobierał czas z internetu za pomocą protokołu NTP, ntp oznacza protokół czasu sieciowego, więc w zasadzie są serwery ntp w sieci, które służą do synchronizacji zegarów komputerowych i będziemy używać tych serwerów, aby uzyskać czas w naszym projekcie.
Krok 1: Rzeczy, których potrzebujesz
do tego projektu będziesz potrzebować następujących rzeczy:
Esp8266/nodemcu
Oled ssd1306 0,96"
Przewody połączeniowe
Deska do krojenia chleba
Kabel USB
Krok 2: Połączenia
Ten 4-pinowy wyświetlacz OLED komunikuje się z modułem ESP8266 za pomocą protokołu I2C, poniżej znajduje się schemat obwodu i tabela połączeń do połączenia pinów OLED I2C z NodeMCU w celu wyświetlania czasu internetowego.
Krok 3: Pobierz biblioteki
Upewnij się, że pobrałeś biblioteki SD1306 w twoim Arduino ide, jak pokazano na obrazku, i upewnij się, że masz również bibliotekę Adafruit GFX, jeśli nie, zainstaluj te dwie biblioteki.
W swoim Arduino IDE przejdź do menedżera bibliotek i wyszukaj NTP i po prostu pobierz bibliotekę klienta NTP po pobraniu, zapoznaj się z obrazem, aby uzyskać dalszą pomoc.
Krok 4: Co to jest NTP
NTP jest jednym z najstarszych sieciowych protokołów internetowych (IP) do synchronizacji zegarów między sieciami komputerowymi. Został zaprojektowany przez Davida L. Millsa z University of Delaware w 1981 roku. Ten protokół może być używany do synchronizacji wielu sieci z uniwersalnym czasem koordynowanym (UTC) w ciągu kilku milisekund. UTC to podstawowy standard czasu, według którego świat reguluje zegar i czas. UTC nie zmienia się i różni się dla różnych lokalizacji geograficznych. NTP wykorzystuje UTC jako odniesienie do czasu i zapewnia dokładny i zsynchronizowany czas w Internecie.
NTP działa w hierarchicznym modelu klient-serwer. Topowy model posiada zegary referencyjne znane jako „stratum0”, takie jak zegary atomowe, fale radiowe, GPS, GSM, które odbierają czas z satelity. Serwery, które otrzymują czas z warstwy 0, nazywane są „warstwą 1”, a serwery, które otrzymują czas z warstwy 1, nazywane są „warstwą 2” i tak dalej. To trwa, a dokładność czasu maleje po każdym etapie. NTP automatycznie wybiera najlepsze z kilku dostępnych źródeł czasu do synchronizacji, co czyni go odpornym na błędy protokołem. Tak więc w tym projekcie otrzymujemy czas z serwera NTP za pomocą ESP8266 NodeMCU i wyświetlamy go na wyświetlaczu OLED. Ten sam rodzaj zegara internetowego został zbudowany przy użyciu ESP32 w poprzednim samouczku.
Krok 5: Część kodowania
Aby zażądać daty i godziny, zainicjuj klienta czasu z adresem serwerów NTP. Aby uzyskać większą dokładność, wybierz adres serwerów NTP, które znajdują się w pobliżu Twojego obszaru geograficznego. Tutaj używamy „pool.ntp.org”, który daje serwery z całego świata. Jeśli chcesz wybrać serwery z Azji, możesz użyć „asia.pool.ntp.org”. timeClient pobiera również przesunięcie czasu UTC w milisekundach strefy czasowej. Na przykład przesunięcie UTC dla Indii wynosi +5:30, więc przeliczamy to przesunięcie w milisekundach, co jest równe 5*60*60+30*60 = 19800.
Powierzchnia. Przesunięcie czasu UTC (godziny i minuty). Przesunięcie czasu UTC (sekundy)
INDIE +5:30 1800
LONDYN 0:00. 0
NOWY JORK -5:00 -18000
Skopiuj następujący kod i wprowadź w kodzie swoje wifi i hasło i wprowadź przesunięcie czasu w kodzie, a następnie prześlij go na swoje płyty esp8266.:
#include "NTPClient.h"#include "ESP8266WiFi.h" // udostępnia procedury Wi-Fi specyficzne dla ESP8266, które wywołujemy, aby połączyć się z siecią #include "WiFiUdp.h" //obsługuje wysyłanie i odbieranie pakietów UDP
#include "SPI.h" // SPI do łączenia OLED z NodeMCu
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128 // Szerokość wyświetlacza OLED w pikselach
#define SCREEN_HEIGHT 64 // Wysokość wyświetlacza OLED w pikselach
#define OLED_RESET -1
Wyświetlacz Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
constchar *ssid = "twójwifisid";
const char *hasło = "twoje hasło do Wi-Fi";
WiFiUDP ntpUDP;
Klient czasu NTPClient (ntpUDP, "pool.ntp.org", 19800, 60000);
String arr_days={"Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota"};
Ciąg data_godzina; // Możesz określić pulę serwera czasu i przesunięcie (w sekundach, można // zmienić później za pomocą setTimeOffset()). Dodatkowo można określić // interwał aktualizacji (w milisekundach, można go zmienić za pomocą setUpdateInterval()).
pusta konfiguracja()
{
Serial.początek(115200);
WiFi.begin(SSid, hasło);
podczas (WiFi.status() != WL_CONNECTED)
{
opóźnienie (500);
Serial.print (".");
}
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println(F("alokacja SSD1306 nie powiodła się"));
dla(;;); // Nie kontynuuj, pętla na zawsze
}
display.clearDisplay();
display.setTextSize(2); // Narysuj tekst w skali 2X
display.setTextColor (BIAŁY);
display.setCursor(5, 2);
display.println("WITAJCIE");
display.println("instrukcje");
display.println("Projekt");
display.display();
opóźnienie(3000);
czasKlient.początek();
}
pusta pętla()
{
timeClient.update();
display.clearDisplay();
Serial.println(timeClient.getFormattedTime());
display.setTextSize(2); // Narysuj tekst w skali 2X
display.setTextColor(NIEBIESKI);
display.setCursor(0, 2);
int hh = czasKlient.getGodziny();
int mm = timeClient.getMinutes();
int ss = klient.getSeconds();
jeśli(hh>12)
{
gg=gg-12;
display.print(hh);
display.print(":");
wyśw.druk (mm);
display.print(":");
display.print(ss);
display.println("PM");
}
w przeciwnym razie
{
display.print(hh);
display.print(":");
wyśw.druk (mm);
display.print(":");
display.print(ss);
display.println("AM");
}
int dzień = czasKlient.getDay();
display.println("'"+arr_dni[dzień]+"'");
data_godzina = godzinaKlient.getFormattedDate();
int data_indeksu = data_godzina.indexOf("T");
Data ciągu = data_godzina.substring(0, data_indeksu);
Serial.println(data);
display.println(data);
display.display();
// Pokaż początkowy tekst }
Krok 6: Uzyskiwanie daty i czasu
jeśli wszystko prawidłowo podłączono i poprawnie przesłałeś kod, będziesz mógł zobaczyć swój zegar ntp działający na wyświetlaczu oled jako mój podczas pracy na wyświetlaczu oled. Proszę odnieść się do obrazu do wyjścia.
Zalecana:
ESP8266 Zegar sieciowy bez zegara RTC - Nodemcu NTP Zegar bez RTC - PROJEKT ZEGAR INTERNETOWY: 4 kroki
ESP8266 Zegar sieciowy bez zegara RTC | Nodemcu NTP Zegar bez RTC | PROJEKT ZEGARA INTERNETOWEGO: W projekcie będzie wykonywany projekt zegara bez RTC, będzie pobierał czas z internetu za pomocą wifi i wyświetli go na wyświetlaczu st7735
Wyświetlanie daty, godziny i temperatury za pomocą XinaBox: 8 kroków
Wyświetlanie daty, czasu i temperatury za pomocą XinaBox: Fajny wyświetlacz OLED pokazujący datę, godzinę i temperaturę w stopniach Celsjusza i Fahrenheita za pomocą Xinabox xChips opartego na ESP8266
Zegar internetowy (NTP) dla projektów IoT: 6 kroków
Zegar internetowy (NTP) dla projektów IoT: Ten projekt pomoże Ci uzyskać czas z Internetu dla projektów IoT, bez konieczności używania dodatkowego sprzętu RTC. W tym samouczku pokażemy, jak korzystać z Nokia LCD 5110, pobierać dane NTP z Internetu i wyświetlać je na wyświetlaczu LCD pod określonymi współrzędnymi. Miejmy
Ładny wyświetlacz daty, godziny i temperatury: 3 kroki
Uroczy wyświetlacz daty, czasu i temperatury: Cześć przyjaciele, w tej instrukcji wyjaśnię procedurę tworzenia jednostki wyświetlania daty, godziny i aktualnej temperatury za pomocą Arduino pro mini, RTC i ośmiocyfrowego siedmiosegmentowego wyświetlacza w bardzo kompaktowej obudowie, która jest użytecznym urządzeniem
Przesuwanie daty i godziny do aplikacji Blynk za pomocą Wemos D1 Mini Pro: 10 kroków
Przesuwanie daty i godziny do aplikacji Blynk za pomocą Wemos D1 Mini Pro: Użyjemy Wemos D1 Mini Pro, aby przesunąć czas i Data do aplikacji Blynk. Do tej czynności nie trzeba podłączać żadnych komponentów do Wemos D1 Mini Pro