Мазмұны:

Интернет сағаты: NTP протоколы бар ESP8266 NodeMCU көмегімен OLED көмегімен күн мен уақытты көрсету: 6 қадам
Интернет сағаты: NTP протоколы бар ESP8266 NodeMCU көмегімен OLED көмегімен күн мен уақытты көрсету: 6 қадам

Бейне: Интернет сағаты: NTP протоколы бар ESP8266 NodeMCU көмегімен OLED көмегімен күн мен уақытты көрсету: 6 қадам

Бейне: Интернет сағаты: NTP протоколы бар ESP8266 NodeMCU көмегімен OLED көмегімен күн мен уақытты көрсету: 6 қадам
Бейне: Как использовать ESP32 WiFi и Bluetooth с Arduino IDE, полная информация с примерами и кодом. 2024, Шілде
Anonim
Интернет сағаты: NTP протоколы бар ESP8266 NodeMCU көмегімен OLED көмегімен күн мен уақытты көрсету
Интернет сағаты: NTP протоколы бар ESP8266 NodeMCU көмегімен OLED көмегімен күн мен уақытты көрсету

Сәлеметсіздер ме, бұл нұсқаулықта біз интернеттен уақыт алатын интернет сағатын құрамыз, сондықтан бұл жобаны іске қосу үшін RTC қажет емес, тек жұмыс істейтін интернет байланысы қажет.

Және бұл жоба үшін сізге esp8266 қажет, ол Интернетке кіру үшін Wi -Fi мен уақытты көрсететін дисплейге ие болады, ал esp8266 NTP протоколының көмегімен интернеттен уақытты алады, ntp желілік уақыт протоколы болып табылады, сондықтан негізінен ntp серверлері бар Интернетте компьютерлік сағаттарды синхрондау үшін пайдаланылады және біз өз жобамызға уақыт алу үшін осы серверлерді қолданамыз.

1 -қадам: Сізге қажет заттар

Сізге қажет заттар
Сізге қажет заттар
Сізге қажет заттар
Сізге қажет заттар
Сізге қажет заттар
Сізге қажет заттар

бұл жоба үшін сізге келесі заттар қажет:

Esp8266/nodemcu

Олед ssd1306 0,96 «

Өткізгіш сымдар

Нан тақтасы

USB кабелі

2 -қадам: Қосылымдар

Қосылымдар
Қосылымдар

Бұл 4 істікшелі OLED дисплейі ESP8266 модулімен I2C протоколы арқылы байланысады, төменде OLED I2C түйреуіштерін NodeMCU көмегімен Интернет уақытын көрсету үшін қосу схемасы мен қосылымдар кестесі берілген.

3 -қадам: Кітапханаларды жүктеу

Кітапханаларды жүктеу
Кітапханаларды жүктеу
Кітапханаларды жүктеу
Кітапханаларды жүктеу

SD1306 кітапханаларын суретте көрсетілгендей сіздің Arduino ide ішінен жүктеп алғаныңызға және Adafruit GFX кітапханасы екеніне көз жеткізіңіз, егер болмаса, осы екі кітапхананы орнатыңыз.

Arduino IDE -де Кітапханалар менеджеріне өтіңіз және NTP іздеңіз, мен жүктеген кезде NTP клиенттік кітапханасын жүктеңіз, қосымша көмек алу үшін суретті қараңыз.

4 -қадам: NTP деген не?

NTP дегеніміз не
NTP дегеніміз не

NTP - компьютерлік желілер арасындағы сағаттарды синхрондауға арналған ең ескі желілік Интернет -протоколының бірі. Оны 1981 жылы Делавэр университетінің Дэвид Л. Миллс жасаған. Бұл протокол көптеген желілерді бірнеше миллисекунд ішінде Үйлестірілген әмбебап уақытқа (UTC) синхрондау үшін пайдаланылуы мүмкін. UTC - бұл әлемде сағат пен уақытты реттейтін негізгі уақыт стандарты. UTC әр түрлі географиялық орындар үшін өзгермейді және өзгереді. NTP уақыт анықтамасы ретінде UTC пайдаланады және Интернетте дәл және синхронды уақытты қамтамасыз етеді.

NTP иерархиялық клиент-сервер үлгісінде жұмыс істейді. Үздік модель спутниктен уақыт алатын атомдық сағаттар, радио толқындар, GPS, GSM сияқты «stratum0» деп аталатын анықтамалық сағаттарға ие. 0 қабатынан уақыт алатын серверлер «1 -қабат» деп аталады, ал 1 -қабаттан уақыт алатын серверлер «екінші қабат» деп аталады. Бұл жалғасады және әр кезеңнен кейін уақыт дәлдігі төмендейді. NTP синхрондау үшін қол жетімді уақыт көздерінің ең жақсысын автоматты түрде таңдайды, бұл оны қатеге төзімді протоколға айналдырады. Бұл жобада біз NTP серверінен ESP8266 NodeMCU көмегімен уақытты аламыз және оны OLED дисплейінде көрсетеміз. Дәл осындай интернет -сағаттар алдыңғы оқулықта ESP32 көмегімен жасалған.

5 -қадам: кодтау бөлігі

Кодтау бөлігі
Кодтау бөлігі

Күн мен уақытты сұрау үшін NTP серверлерінің мекен -жайымен уақыт клиентін инициализациялаңыз. Нақтырақ болу үшін географиялық аймаққа жақын NTP серверлерінің мекен -жайын таңдаңыз. Мұнда біз әлемнің серверлерін беретін «pool.ntp.org» қолданамыз. Егер сіз Азиядан серверлерді таңдағыңыз келсе, «asia.pool.ntp.org» пайдалана аласыз. timeClient сонымен қатар UTC уақытын сіздің уақыт белдеуіңіздің миллисекундына ауыстырады. Мысалы, Үндістан үшін UTC ығысуы +5: 30, сондықтан біз бұл есептілікті миллисекундқа түрлендіреміз, ол 5*60*60 +30*60 = 19800 тең.

Ауданы. UTC уақытты ауыстыру (сағат пен минут). UTC уақытты ауыстыру (секунд)

Үндістан +5: 30 19800

ЛОНДОН 0:00. 0

НЬЮ -ЙОРК -5: 00 -18000

Келесі кодты көшіріп, Wi -Fi мен парольді кодқа енгізіңіз және кодқа уақытты енгізіңіз, содан кейін оны esp8266 тақталарына жүктеңіз.:

#include «NTPClient.h» #include «ESP8266WiFi.h» // желіге қосылу үшін қоңырау шалатын ESP8266 арнайы Wi-Fi режимін қамтамасыз етеді #«WiFiUdp.h» қосады // UDP пакеттерін жіберу мен қабылдауды басқарады.

#қосу «SPI.h» // NodeMCu көмегімен OLED интерфейсіне арналған SPI

#«Adafruit_GFX.h» қосыңыз

#«Adafruit_SSD1306.h» қосыңыз

#decine SCREEN_WIDTH 128 // OLED дисплей ені, пиксельмен

#decine SCREEN_HEIGHT 64 // OLED дисплей биіктігі, пиксельдермен

#OLED_RESET -1 анықтаңыз

Adafruit_SSD1306 дисплейі (SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_RESET);

constchar *ssid = «yourwifissid»;

const char *password = «yourwifipass»;

WiFiUDP ntpUDP;

NTPClient timeClient (ntPUDP, «pool.ntp.org», 19800, 60000);

String arr_days = {«Жексенбі», «Дүйсенбі», «Сейсенбі», «Сәрсенбі», «Бейсенбі», «Жұма», «Сенбі»};

Жолдың_күні; // Уақыт серверінің пулын және ығысуын көрсетуге болады (секунд ішінде // кейін setTimeOffset () көмегімен өзгертуге болады). Қосымша // жаңарту аралығын көрсетуге болады (миллисекундтарда, setUpdateInterval () көмегімен өзгертуге болады).

жарамсыз орнату ()

{

Serial.begin (115200);

WiFi.begin (ssid, құпия сөз);

while (WiFi.status ()! = WL_CONNECTED)

{

кешіктіру (500);

Serial.print («.»);

}

егер (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C))

{

Serial.println (F («SSD1306 бөлінбеді»));

үшін(;;); // Жалғастырмаңыз, мәңгілік цикл

}

display.clearDisplay ();

display.setTextSize (2); // 2X масштабтағы мәтінді сызыңыз

display.setTextColor (АҚ);

display.setCursor (5, 2);

display.println («ҚОШ КЕЛДІҢІЗ»);

display.println («нұсқаулықтар»);

display.println («Жоба»);

display.display ();

кешіктіру (3000);

timeClient.begin ();

}

бос цикл ()

{

timeClient.update ();

display.clearDisplay ();

Serial.println (timeClient.getFormattedTime ());

display.setTextSize (2); // 2X масштабтағы мәтінді сызыңыз

display.setTextColor (КӨК);

display.setCursor (0, 2);

int сh = timeClient.getHours ();

int mm = timeClient.getMinutes ();

int ss = timeClient.getSeconds ();

егер (сс> 12)

{

сағ = сағ-12;

display.print (hh);

display.print («:»);

баспа (мм);

display.print («:»);

display.print (ss);

display.println («PM»);

}

басқа

{

display.print (hh);

display.print («:»);

баспа (мм);

display.print («:»);

display.print (ss);

display.println («AM»);

}

int күні = timeClient.getDay ();

display.println («'»+arr_days [day]+«'»);

date_time = timeClient.getFormattedDate ();

int index_date = date_time.indexOf («T»);

Жол күні = date_time.substring (0, index_date);

Serial.println (күні);

display.println (күні);

display.display ();

// Бастапқы мәтінді көрсету}

6 -қадам: Күн мен уақытты алу

Күн мен уақытты алу
Күн мен уақытты алу

егер сіз бәрін дұрыс қосқан болсаңыз және кодты дұрыс жүктеген болсаңыз, онда сіз ntp сағатын экранды дисплейде менікі сияқты жұмыс істейтін дисплейде көре аласыз. Шығару үшін суретке сілтеме жасаңыз.

Ұсынылған: