Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
W tym samouczku zobaczymy, jak uzyskać czas za pomocą ESP8266/nodemcu z Arduino IDE. Uzyskanie czasu jest szczególnie przydatne w rejestrowaniu danych w celu oznaczenia czasu odczytów. Jeśli Twój projekt ESP8266 ma dostęp do Internetu, możesz uzyskać czas za pomocą Network Time Protocol (NTP) – nie potrzebujesz żadnego dodatkowego sprzętu. Możesz podłączyć swój ESP8266 do sieci Wi-Fi i będzie to zegar, który zostanie zsynchronizowany z siecią, więc jeśli raz prześlesz kod, otrzyma on czas z Internetu, więc zawsze będzie wyświetlał poprawny czas.
Krok 1: Rzeczy, których potrzebujesz
Do tego projektu będziesz potrzebować bardzo mało rzeczy: kabel USB ESP8266/NODEMCUA do zaprogramowania.
Krok 2: Co to jest NTP i jak będzie działać?
Co to jest NTP: NTP to skrót od Network Time Protocol. Jest to standardowy protokół internetowy (IP) do synchronizacji zegarów komputerów z pewnymi odniesieniami w sieci. Protokół może być używany do synchronizacji wszystkich urządzeń sieciowych z uniwersalnym czasem koordynowanym (UTC). NTP ustawia zegary komputerów na UTC, dowolny czas lokalny przesunięcie strefy lub przesunięcie czasu letniego jest stosowane przez klienta. W ten sposób klienci mogą synchronizować się z serwerami bez względu na lokalizację i różnice w strefach czasowych. Jak to będzie działać dla nas:Urządzenie klienckie, takie jak ESP8266, łączy się z serwerem za pomocą protokołu User Datagram Protocol (UDP) na porcie 123. Następnie klient przesyła pakiet żądania do serwera NTP. W odpowiedzi na to żądanie serwer NTP wysyła pakiet znacznika czasu. Pakiet znacznika czasu zawiera wiele informacji, takich jak znacznik czasu UNIX, dokładność, opóźnienie lub strefa czasowa. Klient może następnie przeanalizować bieżące wartości daty i czasu.
Krok 3: Instalowanie biblioteki na Arduino IDE
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: Część kodowania
Skopiuj poniższy kod i umieść swoje dane uwierzytelniające sieciowe w kodzie, a następnie musisz ustawić przesunięcie czasu dla mnie jest to 19800 Ponieważ moja strefa czasowa to utc+5:30, więc UTC +5:30=5.5*60*60=19800UTC+1= 1*60*60=3600 OBLICZ strefę czasową i edytuj ją, a następnie prześlij kod.#include "NTPClient.h"#include "ESP8266WiFi.h"#include "WiFiUdp.h"const char *ssid = "***** ******";const char *password = "***********";const long utcOffsetInSeconds = 19800;char daysOfTheWeek[7][12] = {"Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Saturday"};// Zdefiniuj klienta NTP, aby uzyskać timeWiFiUDP ntpUDP;NTPClient timeClient(ntpUDP, "pool.ntp.org", utcOffsetInSeconds);unieważnij konfigurację (){Serial.początek(115200); WiFi.begin(SSid, hasło); while (WiFi.status() != WL_CONNECTED) { opóźnienie (500); Serial.print ("."); } timeClient.begin();}void loop() { timeClient.update(); Serial.print(daysOfTheWeek[timeClient.getDay()]); Serial.print(", "); Serial.print(klient czasu.getGodziny()); Serial.print(":"); Serial.print(timeClient.getMinutes()); Serial.print(":"); Serial.println(klient czasu.getSeconds()); //Serial.println(timeClient.getFormattedTime()); opóźnienie(1000);}
Krok 5: Uzyskiwanie CZASU
Po przesłaniu kodu do Esp8266 możesz otworzyć monitor szeregowy i jeśli wszystko jest w porządku, będziesz mógł uzyskać czas na monitorze szeregowym, ponieważ jestem w stanie uzyskać czas na moim monitorze szeregowym. Więc z tym projektem możesz dołączyć dowolny wyświetlacz i ustawić go jako właściwy zegar sieciowy. Więc baw się dobrze, tworząc zegar sieciowy.