Mündəricat:

İnternet Saatı: NTP Protokolu ilə ESP8266 NodeMCU istifadə edərək OLED ilə Tarixi və Saatı Göstərin: 6 Addım
İnternet Saatı: NTP Protokolu ilə ESP8266 NodeMCU istifadə edərək OLED ilə Tarixi və Saatı Göstərin: 6 Addım

Video: İnternet Saatı: NTP Protokolu ilə ESP8266 NodeMCU istifadə edərək OLED ilə Tarixi və Saatı Göstərin: 6 Addım

Video: İnternet Saatı: NTP Protokolu ilə ESP8266 NodeMCU istifadə edərək OLED ilə Tarixi və Saatı Göstərin: 6 Addım
Video: NTP protokolü nedir? Zaman bilgisi nasıl alınır? 2024, Dekabr
Anonim
İnternet Saatı: NTP Protokolu ilə ESP8266 NodeMCU istifadə edərək OLED ilə Tarixi və Saatı Göstərin
İnternet Saatı: NTP Protokolu ilə ESP8266 NodeMCU istifadə edərək OLED ilə Tarixi və Saatı Göstərin

Salam uşaqlar bu təlimatlarda internetdən vaxt alacaq bir internet saatı quracağıq bu layihənin işləməsi üçün heç bir RTC lazım olmayacaq, yalnız işləyən bir internet bağlantısı lazımdır

Və bu layihə üçün internetə çıxış əldə etmək üçün wifi və saatı göstərmək üçün bir ekrana sahib bir esp8266 lazımdır və esp8266 NTP protokolundan istifadə edərək internetdən vaxt alacaq, ntp şəbəkə vaxtı protokolu deməkdir, buna görə də əsasən ntp serverləri var. kompüter saatlarını sinxronizasiya etmək üçün istifadə olunan vebdə və layihəmizdə vaxt qazanmaq üçün bu serverlərdən istifadə edəcəyik.

Addım 1: Lazım olan şeylər

Ehtiyacınız olan şeylər
Ehtiyacınız olan şeylər
Ehtiyacınız olan şeylər
Ehtiyacınız olan şeylər
Ehtiyacınız olan şeylər
Ehtiyacınız olan şeylər

bu layihə üçün aşağıdakılara ehtiyacınız olacaq:

Esp8266/nodemcu

Oled ssd1306 0.96"

Jumper telləri

Çörək lövhəsi

Usb kabeli

Addım 2: Bağlantılar

Əlaqələr
Əlaqələr

Bu 4 pinli OLED displey, I2C protokolu ilə ESP8266 modulu ilə əlaqə qurur, aşağıda İnternet vaxtını göstərmək üçün OLED I2C sancaqlarını NodeMCU ilə birləşdirmək üçün sxem və əlaqələr cədvəli verilmişdir.

Addım 3: Kitabxanaları yükləyin

Kitabxanaları yükləyin
Kitabxanaları yükləyin
Kitabxanaları yükləyin
Kitabxanaları yükləyin

Şəkildə göstərildiyi kimi Arduino ide -də SD1306 kitabxanalarını yüklədiyinizə və Adafruit GFX kitabxanasına malik olduğunuza əmin olun, əgər bu iki kitabxananı quraşdırmasanız.

Arduino IDE -də Kitabxanalar menecerinə gedin və NTP axtarın və yüklədiyim kimi NTP müştəri kitabxanasını yükləyin, əlavə kömək üçün görüntüyə baxın.

Addım 4: NTP nədir

NTP nədir
NTP nədir

NTP, kompüter şəbəkələri arasında saatı sinxronizasiya etmək üçün ən qədim şəbəkə İnternet Protokollarından biridir. 1981 -ci ildə Delaver Universitetindən David L. Mills tərəfindən hazırlanmışdır. Bu protokol bir çox şəbəkələri bir neçə milisaniyə ərzində Koordinasiya olunmuş Universal Zamanla (UTC) sinxronizasiya etmək üçün istifadə edilə bilər. UTC, dünyanın saat və saatı tənzimlədiyi əsas vaxt standartıdır. UTC fərqli coğrafi yerlərdə dəyişmir və dəyişir. NTP, vaxt istinadı olaraq UTC -dən istifadə edir və İnternet boyunca dəqiq və sinxron vaxt təmin edir.

NTP iyerarxik müştəri-server modeli üzərində işləyir. Top model, peykdən vaxt alan atom saatı, radio dalğaları, GPS, GSM kimi "stratum0" kimi tanınan istinad saatlarına malikdir. Stratum0 -dan vaxt alan serverlərə "stratum1" və stratum1 -dən vaxt alan serverlərə "stratum2" və s. Bu davam edir və hər dəqiqədən sonra zamanın dəqiqliyi azalmağa davam edir. NTP, sinxronizasiya etmək üçün bir neçə mövcud vaxt mənbəyinin ən yaxşısını avtomatik olaraq seçir, bu da onu qüsurlara dözümlü protokola çevirir. Beləliklə, bu layihədə ESP8266 NodeMCU istifadə edərək NTP serverindən vaxt alırıq və bunu OLED ekranda göstəririk. Eyni növ İnternet saatı əvvəlki dərslikdə ESP32 istifadə edərək qurulmuşdur.

Addım 5: Kodlaşdırma Bölməsi

Kodlaşdırma Bölməsi
Kodlaşdırma Bölməsi

Tarix və vaxt tələb etmək üçün NTP serverlərinin ünvanı ilə vaxt müştərisini işə salın. Daha yaxşı dəqiqlik üçün coğrafi bölgənizə yaxın olan NTP serverlərinin ünvanını seçin. Burada dünyanın hər yerindən serverlər verən "pool.ntp.org" dan istifadə edirik. Asiyadan server seçmək istəyirsinizsə, "asia.pool.ntp.org" dan istifadə edə bilərsiniz. timeClient, vaxt zonanızın milisaniyələrində UTC vaxtını da alır. Məsələn, Hindistan üçün UTC ofseti +5: 30 -dur, buna görə də bu ofisi 5*60*60 +30*60 = 19800 -ə bərabər olan milisaniyələrə çeviririk.

Sahə. UTC vaxtı ofset (saat və dəqiqə). UTC vaxtı ofset (saniyə)

Hindistan +5: 30 19800

LONDON 0:00. 0

NEW YORK -5: 00 -18000

Zəhmət olmasa aşağıdakı kodu kopyalayın və kodunuza wifi və şifrənizi daxil edin və vaxta görə ofseti daxil edin, sonra esp8266 lövhələrinizə yükləyin.:

#include "NTPClient.h" #include "ESP8266WiFi.h" //, şəbəkəyə qoşulmaq üçün zəng etdiyimiz ESP8266 xüsusi Wi-Fi prosedurlarını təmin edir #include "WiFiUdp.h" // UDP paketlərinin göndərilməsini və qəbul edilməsini idarə edir.

#NodeMCu ilə OLED ilə əlaqə yaratmaq üçün "SPI.h" // SPI daxil edin

#"Adafruit_GFX.h" daxil edin

#"Adafruit_SSD1306.h" daxil edin

#define SCREEN_WIDTH 128 // OLED ekran genişliyi, piksellərlə

#define SCREEN_HEIGHT 64 // OLED ekran hündürlüyü, piksellərlə

#OLED_RESET -1 təyin edin

Adafruit_SSD1306 ekranı (SCREEN_WIDTH, SCREEN_HEIGHT, & Wire, OLED_RESET);

constchar *ssid = "yourwifissid";

const char *parol = "sənin wifipass";

WiFiUDP ntpUDP;

NTPClient timeClient (ntpUDP, "pool.ntp.org", 19800, 60000);

String arr_days = {"Bazar", "Bazar ertəsi", "Çərşənbə axşamı", "Çərşənbə", "Cümə axşamı", "Cümə", "Şənbə"};

String date_time; // Vaxt server hovuzunu və ofseti təyin edə bilərsiniz (saniyələr ərzində // sonradan setTimeOffset () ilə dəyişdirilə bilər). Əlavə olaraq // yeniləmə aralığını təyin edə bilərsiniz (milisaniyələrdə, setUpdateInterval () istifadə edərək dəyişdirilə bilər).

boş quraşdırma ()

{

Serial.begin (115200);

WiFi.begin (ssid, parol);

isə (WiFi.status ()! = WL_CONNECTED)

{

gecikmə (500);

Serial.print (".");

}

əgər (! display.begin (SSD1306_SWITCHCAPVCC, 0x3C))

{

Serial.println (F ("SSD1306 ayrılması uğursuz oldu"));

üçün (;;); // Davam etmə, sonsuza qədər dön

}

display.clearDisplay ();

display.setTextSize (2); // 2X ölçülü mətn çəkin

display.setTextColor (BEYAZ);

display.setCursor (5, 2);

display.println ("HOŞ GELDİNİZ");

display.println ("göstərişli");

display.println ("Layihə");

display.display ();

gecikmə (3000);

timeClient.begin ();

}

boşluq döngəsi ()

{

timeClient.update ();

display.clearDisplay ();

Serial.println (timeClient.getFormattedTime ());

display.setTextSize (2); // 2X ölçülü mətn çəkin

display.setTextColor (MAVİ);

display.setCursor (0, 2);

int hh = timeClient.getHours ();

int mm = timeClient.getMinutes ();

int ss = timeClient.getSeconds ();

əgər (ss> 12)

{

ss = ss-12;

ekran. çap (hh);

display.print (":");

ekran çapı (mm);

display.print (":");

display.print (ss);

display.println ("PM");

}

başqa

{

ekran. çap (hh);

display.print (":");

ekran çapı (mm);

display.print (":");

display.print (ss);

display.println ("AM");

}

int gün = timeClient.getDay ();

display.println ("'"+arr_days [gün]+"'");

date_time = timeClient.getFormattedDate ();

int index_date = date_time.indexOf ("T");

String tarixi = date_time.substring (0, index_date);

Serial.println (tarix);

display.println (tarix);

display.display ();

// İlkin mətni göstər}

Addım 6: Tarix və Saat əldə edin

Tarix və Saat Alınması
Tarix və Saat Alınması

Hər şeyi düzgün bir şəkildə bağlasanız və kodu düzgün yükləsəniz, nedp saatınızın oled ekranda işlədiyini, mənim kimi oled ekranda işlədiyini görə biləcəksiniz. Çıxış üçün görüntüyə baxın.

Tövsiyə: