Satura rādītājs:
- 1. darbība. Nepieciešamās lietas
- 2. darbība. Savienojumi
- 3. darbība: lejupielādējiet bibliotēkas
- 4. solis: kas ir NTP
- 5. darbība. Kodēšanas daļa
- 6. darbība: datuma un laika iegūšana
Video: Interneta pulkstenis: parādiet datumu un laiku ar OLED, izmantojot ESP8266 NodeMCU ar NTP protokolu: 6 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:54
Sveiki, puiši, šajā instrukcijā mēs izveidosim interneta pulksteni, kas iegūs laiku no interneta, tāpēc šim projektam nebūs nepieciešams RTC, lai to palaistu, tam būs nepieciešams tikai strādājošs interneta savienojums
Un šim projektam jums ir nepieciešams esp8266, kuram būs wifi, lai piekļūtu internetam, un displejs, lai parādītu tajā esošo laiku, un esp8266 ielādēs laiku no interneta, izmantojot NTP protokolu, ntp apzīmē tīkla laika protokolu, tāpēc būtībā ir ntp serveri tīmeklī, ko izmanto datoru pulksteņu sinhronizēšanai, un mēs izmantosim šos serverus, lai iegūtu laiku mūsu projektam.
1. darbība. Nepieciešamās lietas
šim projektam jums būs nepieciešamas šādas lietas:
Esp8266/nodemcu
Oled ssd1306 0,96 collas
Jumper vadi
Maizes dēlis
USB kabelis
2. darbība. Savienojumi
Šis 4 kontaktu OLED displejs sazinās ar ESP8266 moduli, izmantojot I2C protokolu, zemāk ir shēma un savienojumu tabula, lai savienotu OLED I2C tapas ar NodeMCU, lai parādītu interneta laiku.
3. darbība: lejupielādējiet bibliotēkas
Pārliecinieties, vai savā Arduino ide lejupielādējāt SD1306 bibliotēkas, kā parādīts attēlā, un pārliecinieties, vai esat arī Adafruit GFX bibliotēka, ja ne, tad instalējiet šīs divas bibliotēkas.
Savā Arduino IDE dodieties uz bibliotēku pārvaldnieku un meklējiet NTP un vienkārši lejupielādējiet NTP klienta bibliotēku, kad es to lejupielādēju, lai iegūtu papildu palīdzību, skatiet attēlu.
4. solis: kas ir NTP
NTP ir viens no vecākajiem tīkla interneta protokoliem (IP) pulksteņu sinhronizēšanai starp datortīkliem. To izstrādāja Deivids Mills no Delavēras Universitātes 1981. gadā. Šo protokolu var izmantot, lai dažu milisekunžu laikā daudzus tīklus sinhronizētu ar koordinēto universālo laiku (UTC). UTC ir galvenais laika standarts, pēc kura pasaule regulē pulksteni un laiku. UTC nemainās un atšķiras dažādās ģeogrāfiskās vietās. NTP izmanto UTC kā laika atskaiti un nodrošina precīzu un sinhronizētu laiku visā internetā.
NTP darbojas pēc hierarhiska klienta-servera modeļa. Top modelim ir standarta pulksteņi, kas pazīstami kā “stratum0”, piemēram, atomu pulksteņi, radio viļņi, GPS, GSM, kas uztver laiku no satelīta. Serveri, kas saņem laiku no stratum0, tiek saukti par “stratum1”, un serveri, kas saņem laiku no stratum1, tiek saukti par “stratum2” un tā tālāk. Tas turpinās un laika precizitāte pēc katra posma samazinās. NTP automātiski izvēlas labāko no vairākiem pieejamajiem laika avotiem, lai sinhronizētu, kas padara to par kļūdu tolerantu spējīgu protokolu. Tātad, šajā projektā mēs iegūstam laiku no NTP servera, izmantojot ESP8266 NodeMCU, un parādām to OLED displejā. Šāda veida interneta pulkstenis ir veidots, izmantojot ESP32 iepriekšējā apmācībā.
5. darbība. Kodēšanas daļa
Lai pieprasītu datumu un laiku, inicializējiet laika klientu ar NTP serveru adresi. Lai iegūtu lielāku precizitāti, izvēlieties NTP serveru adresi, kas atrodas tuvu jūsu ģeogrāfiskajam apgabalam. Šeit mēs izmantojam “pool.ntp.org”, kas dod serverus no visas pasaules. Ja vēlaties izvēlēties serverus no Āzijas, varat izmantot “asia.pool.ntp.org”. timeClient ņem arī UTC laika nobīdi jūsu laika joslas milisekundēs. Piemēram, UTC nobīde Indijai ir +5: 30, tāpēc mēs pārvēršam šo nobīdi milisekundēs, kas ir vienāda ar 5*60*60 +30*60 = 19800.
Platība. UTC laika nobīde (stundas un minūtes). UTC laika nobīde (sekundes)
INDIJA +5: 30 19800
LONDON 0:00. 0
Ņujorka -5: 00 -18000
Lūdzu, nokopējiet šo kodu un ievadiet kodā savu wifi un paroli un ievadiet kodā laika nobīdi, pēc tam augšupielādējiet to esp8266 dēļos.:
#include "NTPClient.h" #include "ESP8266WiFi.h" // nodrošina ESP8266 specifiskas Wi-Fi rutīnas, kuras mēs izsaucam, lai izveidotu savienojumu ar tīklu #include "WiFiUdp.h" // apstrādā UDP pakotņu sūtīšanu un saņemšanu
#include "SPI.h" // SPI OLED saskarnei ar NodeMCu
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128 // OLED displeja platums, pikseļos
#define SCREEN_HEIGHT 64 // OLED displeja augstums pikseļos
#define OLED_RESET -1
Adafruit_SSD1306 displejs (SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_RESET);
constchar *ssid = "tavswifissid";
const char *parole = "yourwifipass";
WiFiUDP ntpUDP;
NTPClient timeClient (ntpUDP, "pool.ntp.org", 19800, 60000);
String arr_days = {"svētdiena", "pirmdiena", "otrdiena", "trešdiena", "ceturtdiena", "piektdiena", "sestdiena"};
String date_time; // Jūs varat norādīt laika servera rezervi un nobīdi (sekundēs, var // vēlāk mainīt, izmantojot setTimeOffset ()). Papildus varat norādīt // atjaunināšanas intervālu (milisekundēs var mainīt, izmantojot setUpdateInterval ()).
anulēts iestatījums ()
{
Serial.begin (115200);
WiFi.begin (ssid, parole);
kamēr (WiFi.status ()! = WL_CONNECTED)
{
kavēšanās (500);
Sērijas nospiedums (".");
}
ja (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println (F ("SSD1306 piešķiršana neizdevās"));
priekš(;;); // Neturpini, cilpa uz visiem laikiem
}
display.clearDisplay ();
display.setTextSize (2); // Zīmēt 2X mēroga tekstu
display.setTextColor (BALTS);
display.setCursor (5, 2);
display.println ("WELCOME TO");
display.println ("pamācības");
display.println ("Projekts");
display.display ();
kavēšanās (3000);
timeClient.begin ();
}
tukša cilpa ()
{
timeClient.update ();
display.clearDisplay ();
Serial.println (timeClient.getFormattedTime ());
display.setTextSize (2); // Zīmēt 2X mēroga tekstu
display.setTextColor (ZILA);
display.setCursor (0, 2);
int hh = timeClient.getHours ();
int mm = timeClient.getMinutes ();
int ss = timeClient.getSeconds ();
ja (hh> 12)
{
hh = hh-12;
displejs.druka (hh);
display.print (":");
displejs.druka (mm);
display.print (":");
displejs.druka (ss);
display.println ("PM");
}
citādi
{
displejs.druka (hh);
display.print (":");
displejs.druka (mm);
display.print (":");
displejs.druka (ss);
display.println ("AM");
}
int day = timeClient.getDay ();
display.println ("" "+arr_days [diena]+" "");
date_time = timeClient.getFormattedDate ();
int index_date = date_time.indexOf ("T");
Virknes datums = date_time.substring (0, index_date);
Serial.println (datums);
display.println (datums);
display.display ();
// Rādīt sākotnējo tekstu}
6. darbība: datuma un laika iegūšana
ja jūs visu pareizi savienojāt un pareizi augšupielādējāt kodu, tad jūs varēsit redzēt, ka ntp pulkstenis darbojas esat displejā kā mans, kas darbojas OLED displejā. Lūdzu, skatiet attēlu, lai iegūtu rezultātu.
Ieteicams:
ESP8266 OLED - iegūstiet laiku un datumu no interneta: 8 soļi
ESP8266 OLED - iegūstiet laiku un datumu no interneta: šajā apmācībā mēs uzzināsim, kā iegūt datumu un laiku no NIST TIME servera, izmantojot ESP8266 OLED un Visuino. Noskatieties demonstrācijas video
Velciet un ambientāli parādiet datus no jebkuras vietnes, izmantojot Wifi (ziemeļblāzmas indikators), izmantojot NodeMcu: 6 soļi
Izvelciet un ambientāli parādiet datus no jebkuras vietnes, izmantojot Wifi (ziemeļblāzmas indikators), izmantojot NodeMcu: Mana motivācija: Esmu redzējis DAUDZ pamācību par NodeMCU (veidots uz ESP8266 moduļa) iestatīšanu/ izmantošanu IoT (lietu interneta) projektu veidošanai . Tomēr ļoti mazām no šīm apmācībām bija visa informācija/ kods/ diagrammas ļoti iesācējiem
Iegūstiet laiku un datumu no interneta - apmācība: 9 soļi
Iegūstiet laiku un datumu no interneta - apmācība: šajā apmācībā mēs uzzināsim, kā iegūt datumu un laiku no NIST TIME servera, izmantojot M5Stack StickC un Visuino. Noskatieties demonstrācijas video
ESP8266 Tīkla pulkstenis bez RTC - Nodemcu NTP pulkstenis Nr RTC - INTERNETA PULKSTENA PROJEKTS: 4 soļi
ESP8266 Tīkla pulkstenis bez RTC | Nodemcu NTP pulkstenis Nr RTC | INTERNET CLOCK PROJECT: Projektā tiks veidots pulksteņa projekts bez RTC, tas prasīs laiku no interneta, izmantojot wifi, un parādīs to st7735 displejā
Parādiet CPU LAIKU ESP Wemos D1 OLED: 7 soļi
Parādiet CPU laiku ESP Wemos D1 OLED: šajā apmācībā mēs izmantosim ESP Wemos D1 OLED un Visuino, lai parādītu CPU laiku OLED displejā. Skatieties demonstrācijas video