Мазмұны:
- 1 -қадам: Сізге қажет заттар
- 2 -қадам: Қосылымдар
- 3 -қадам: Кітапханаларды жүктеу
- 4 -қадам: NTP деген не?
- 5 -қадам: кодтау бөлігі
- 6 -қадам: Күн мен уақытты алу
Бейне: Интернет сағаты: NTP протоколы бар ESP8266 NodeMCU көмегімен OLED көмегімен күн мен уақытты көрсету: 6 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Сәлеметсіздер ме, бұл нұсқаулықта біз интернеттен уақыт алатын интернет сағатын құрамыз, сондықтан бұл жобаны іске қосу үшін 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 - компьютерлік желілер арасындағы сағаттарды синхрондауға арналған ең ескі желілік Интернет -протоколының бірі. Оны 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 сағатын экранды дисплейде менікі сияқты жұмыс істейтін дисплейде көре аласыз. Шығару үшін суретке сілтеме жасаңыз.
Ұсынылған:
DIY Visuino көмегімен M5StickC ESP32 -де уақытты қалай көрсету керек - оңай: 9 қадам
DIY M5StickC ESP32 -де Visuino көмегімен уақытты қалай көрсету керек - оңай: Бұл оқулықта біз уақытты LCD -де көрсету үшін Arduino IDE және Visuino көмегімен ESP32 M5Stack StickC бағдарламалауды үйренеміз
Күн мен уақытты қалай тіркеуге болады - Liono Maker: 5 қадам
Күн мен уақытты қалай тіркеуге болады | Liono Maker: Кіріспе: -Бұл оқулықта біз Arduino көмегімен күн мен уақытты тіркеуді үйренеміз. Осы мақсатта мен DS3231 қолданамын & Micro SD картасының модульдері. Уақыт үшін қолданылатын негізгі модуль. күнді тіркеу DS3231. DS3231 - бұл RTC (нақты
ESP8266 көмегімен Интернеттен уақыт алу - ESP8266 Nodemcu көмегімен NTP сағаты жобасы: 5 қадам
ESP8266 көмегімен Интернеттен уақыт алу | ESP8266 Nodemcu көмегімен NTP сағаттары жобасы: Бұл оқулықта біз Arduino IDE көмегімен ESP8266/nodemcu көмегімен уақытты қалай алуға болатынын көреміз. Уақытты алу, әсіресе, оқылымдардың уақыт белгісін қою үшін деректерді тіркеуде пайдалы. Егер сіздің ESP8266 жобаңызда Интернетке кіру мүмкіндігі болса, сіз Network T арқылы уақыт ала аласыз
XinaBox көмегімен күнді, уақытты және температураны көрсету: 8 қадам
XinaBox көмегімен күнді, уақытты және температураны көрсету: ESP8266 негізделген Xinabox xChips көмегімен Цельсий мен Фаренгейтте күнді, уақытты және температураны көрсететін салқын OLED дисплейі
Wemos D1 Mini Pro көмегімен Blynk қосымшасына күн мен уақытты енгізу: 10 қадам
Wemos D1 Mini Pro көмегімен Blynk қосымшасына күн мен уақытты енгізу: Біз Wemos D1 Mini Pro -ды уақытты итеру үшін қолданамыз. Бұл әрекетті орындау үшін Wemos D1 Mini Pro -ге ешқандай компоненттерді қосудың қажеті жоқ