Spisu treści:

Pobieranie czasu z Internetu za pomocą ESP8266 - Projekt zegara NTP z ESP8266 Nodemcu: 5 kroków
Pobieranie czasu z Internetu za pomocą ESP8266 - Projekt zegara NTP z ESP8266 Nodemcu: 5 kroków

Wideo: Pobieranie czasu z Internetu za pomocą ESP8266 - Projekt zegara NTP z ESP8266 Nodemcu: 5 kroków

Wideo: Pobieranie czasu z Internetu za pomocą ESP8266 - Projekt zegara NTP z ESP8266 Nodemcu: 5 kroków
Wideo: Multisensor na ESP8266 #1, czyli pomiar temperatury dla Domoticza (i nie tylko) 2024, Listopad
Anonim
Pobieranie czasu z Internetu za pomocą ESP8266 | Projekt zegara NTP z ESP8266 Nodemcu
Pobieranie czasu z Internetu za pomocą ESP8266 | Projekt zegara NTP z ESP8266 Nodemcu

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

Rzeczy, których potrzebujesz
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 i jak będzie działać?
Co to jest NTP i jak będzie działać?
Co to jest NTP i jak będzie działać?
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

Instalowanie biblioteki na Arduino IDE
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

Część kodująca
Część kodująca
Część kodująca
Część kodująca

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

Otrzymuję CZAS
Otrzymuję CZAS

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.

Zalecana: