Satura rādītājs:

Interneta pulkstenis: parādiet datumu un laiku ar OLED, izmantojot ESP8266 NodeMCU ar NTP protokolu: 6 soļi
Interneta pulkstenis: parādiet datumu un laiku ar OLED, izmantojot ESP8266 NodeMCU ar NTP protokolu: 6 soļi

Video: Interneta pulkstenis: parādiet datumu un laiku ar OLED, izmantojot ESP8266 NodeMCU ar NTP protokolu: 6 soļi

Video: Interneta pulkstenis: parādiet datumu un laiku ar OLED, izmantojot ESP8266 NodeMCU ar NTP protokolu: 6 soļi
Video: ВСЯ НОЧЬ С ПОЛТЕРГЕЙСТОМ В ЖИЛОМ ДОМЕ, я заснял жуткую активность. 2024, Novembris
Anonim
Interneta pulkstenis: parādiet datumu un laiku ar OLED, izmantojot ESP8266 NodeMCU ar NTP protokolu
Interneta pulkstenis: parādiet datumu un laiku ar OLED, izmantojot ESP8266 NodeMCU ar NTP protokolu

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

Nepieciešamās lietas
Nepieciešamās lietas
Nepieciešamās lietas
Nepieciešamās lietas
Nepieciešamās lietas
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

Savienojumi
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

Lejupielādēt bibliotēkas
Lejupielādēt bibliotēkas
Lejupielādēt bibliotēkas
Lejupielādēt 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

Kas ir NTP
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

Kodēšanas daļa
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

Datuma un laika iegūšana
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: