İçindekiler:

İnternet Saati: NTP Protokolüyle ESP8266 NodeMCU Kullanan OLED İle Tarih ve Saati Görüntüleme: 6 Adım
İnternet Saati: NTP Protokolüyle ESP8266 NodeMCU Kullanan OLED İle Tarih ve Saati Görüntüleme: 6 Adım

Video: İnternet Saati: NTP Protokolüyle ESP8266 NodeMCU Kullanan OLED İle Tarih ve Saati Görüntüleme: 6 Adım

Video: İnternet Saati: NTP Protokolüyle ESP8266 NodeMCU Kullanan OLED İle Tarih ve Saati Görüntüleme: 6 Adım
Video: Led Saat v2 - NodeMCU ile Online Saat ve Wifi Alarm Kontrolü 2024, Haziran
Anonim
İnternet Saati: NTP Protokolüyle ESP8266 NodeMCU Kullanan OLED İle Tarih ve Saati Görüntüleme
İnternet Saati: NTP Protokolüyle ESP8266 NodeMCU Kullanan OLED İle Tarih ve Saati Görüntüleme

Merhaba arkadaşlar, bu talimatta internetten zaman alacak bir internet saati oluşturacağız, böylece bu projenin çalışması için herhangi bir RTC'ye ihtiyacı olmayacak, sadece çalışan bir internet bağlantısına ihtiyacı olacak.

Ve bu proje için bir esp8266'ya ihtiyacınız var, bu da internet erişimi için bir wifi'ye ve üzerindeki zamanı gösterecek bir ekrana sahip olacak ve esp8266, NTP protokolünü kullanarak internetten zaman alacak, ntp, ağ zaman protokolü anlamına gelir, yani temelde ntp sunucuları vardır. bilgisayar saatlerini senkronize etmek için kullanılan web'de ve projemizde zaman almak için bu sunucuları kullanacağız.

Adım 1: İhtiyacınız Olan Şeyler

İhtiyacın olan şeyler
İhtiyacın olan şeyler
İhtiyacın olan şeyler
İhtiyacın olan şeyler
İhtiyacın olan şeyler
İhtiyacın olan şeyler

bu proje için aşağıdaki şeylere ihtiyacınız olacak:

Esp8266/nodemcu

Oled ssd1306 0.96"

Atlama telleri

ekmek tahtası

USB kablosu

2. Adım: Bağlantılar

Bağlantılar
Bağlantılar

Bu 4 pinli OLED ekran, I2C protokolünü kullanarak ESP8266 modülü ile iletişim kurar, aşağıda OLED I2C pinlerini NodeMCU ile İnternet saatini görüntülemek için bağlamak için devre şeması ve bağlantı tablosu bulunmaktadır.

3. Adım: Kitaplıkları İndirin

Kitaplıkları İndir
Kitaplıkları İndir
Kitaplıkları İndir
Kitaplıkları İndir

Arduino ide'nize SD1306 kitaplıklarını resimde gösterildiği gibi indirdiğinizden emin olun ve Adafruit GFX kitaplığını da yüklediğinizden emin olun, değilse bu iki kitaplığı kurun.

Arduino IDE'nizde Kitaplıklar yöneticisine gidin ve NTP'yi arayın ve indirdiğim gibi NTP istemci kitaplığını indirin, daha fazla yardım için resme bakın.

Adım 4: NTP Nedir?

NTP Nedir?
NTP Nedir?

NTP, bilgisayar ağları arasında saatleri senkronize etmek için kullanılan en eski ağ İnternet Protokollerinden (IP) biridir. 1981 yılında Delaware Üniversitesi'nden David L. Mills tarafından tasarlanmıştır. Bu protokol, birçok ağı birkaç milisaniye içinde Eşgüdümlü Evrensel Zamana (UTC) eşitlemek için kullanılabilir. UTC, dünyanın saati ve zamanı düzenlediği birincil zaman standardıdır. UTC değişmez ve farklı coğrafi konumlar için farklılık gösterir. NTP, UTC'yi zaman referansı olarak kullanır ve İnternet üzerinden doğru ve senkronize zaman sağlar.

NTP, hiyerarşik bir istemci-sunucu modeli üzerinde çalışır. Üst model atom saatleri, radyo dalgaları, GPS, GSM gibi uydudan zaman alan “stratum0” olarak bilinen referans saatlere sahiptir. stratum0'dan zaman alan sunuculara “stratum1”, stratum1'den zaman alan sunuculara “stratum2” vb. denir. Bu devam eder ve her aşamadan sonra zamanın doğruluğu azalmaya devam eder. NTP, senkronizasyon için mevcut birkaç zaman kaynağının en iyisini otomatik olarak seçer ve bu da onu hataya dayanıklı protokol haline getirir. İşte bu projede, ESP8266 NodeMCU kullanarak NTP sunucusundan zaman alıyoruz ve OLED ekranda gösteriyoruz. Bu aynı tür İnternet saati, önceki öğreticide ESP32 kullanılarak oluşturulmuştur.

Adım 5: Kodlama Bölümü

Kodlama Bölümü
Kodlama Bölümü

Tarih ve saat istemek için, zaman istemcisini NTP sunucularının adresiyle başlatın. Daha iyi doğruluk için coğrafi bölgenize yakın olan NTP sunucularının adresini seçin. Burada dünya çapından sunucular veren “pool.ntp.org” kullanıyoruz. Asya'dan sunucu seçmek isterseniz “asia.pool.ntp.org” adresini kullanabilirsiniz. timeClient ayrıca UTC zaman farkını sizin saat diliminizin milisaniyesi olarak alır. Örneğin, Hindistan için UTC ofseti +5:30 olduğundan, bu ofseti 5*60*60+30*60 = 1800'e eşit olan milisaniye cinsinden dönüştürürüz.

Alan. UTC zaman farkı (saat ve dakika). UTC zaman farkı(saniye)

HİNDİSTAN +5:30 1800

LONDRA 0:00. 0

NEW YORK -5:00 -18000

Lütfen aşağıdaki kodu kopyalayın ve koda wifi ve şifrenizi girin & Koddaki zaman farkını girin ve ardından esp8266 panolarınıza yükleyin.:

#include "NTPClient.h"#include "ESP8266WiFi.h" // ağa bağlanmak için çağırdığımız ESP8266'ya özgü Wi-Fi rutinlerini sağlar #include "WiFiUdp.h" //UDP paketlerinin gönderilmesini ve alınmasını yönetir

#include "SPI.h" // OLED'i NodeMCu ile arayüzlemek için SPI

#include "Adafruit_GFX.h"

#include "Adafruit_SSD1306.h"

#define SCREEN_WIDTH 128 // OLED ekran genişliği, piksel olarak

#define SCREEN_HEIGHT 64 // OLED ekran yüksekliği, piksel olarak

#define OLED_RESET -1

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

constchar *ssid = "wifissid";

const char *şifre = "wifipass";

WiFiUDP ntpUDP;

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

String arr_days={"Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi"};

Dize tarih_saati; // Zaman sunucusu havuzunu ve ofseti belirtebilirsiniz (saniye cinsinden, // daha sonra setTimeOffset() ile değiştirilebilir). Ek olarak // güncelleme aralığını belirtebilirsiniz (milisaniye olarak setUpdateInterval() kullanılarak değiştirilebilir).

geçersiz kurulum()

{

Seri.başla(115200);

WiFi.begin(ssid, şifre);

while (WiFi.status() != WL_CONNECTED)

{

gecikme (500);

Seri.baskı (".");

}

if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))

{

Serial.println(F("SSD1306 tahsisi başarısız"));

için(;;); // Devam etme, sonsuza kadar döngü yap

}

display.clearDisplay();

display.setTextSize(2); // 2X ölçekli metin çiz

display.setTextColor(BEYAZ);

display.setCursor(5, 2);

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

display.println("talimatlar");

display.println("Proje");

display.display();

gecikme(3000);

timeClient.begin();

}

boşluk döngüsü()

{

timeClient.update();

display.clearDisplay();

Serial.println(timeClient.getFormattedTime());

display.setTextSize(2); // 2X ölçekli metin çiz

display.setTextColor(MAVİ);

display.setCursor(0, 2);

int hh = timeClient.getHours();

int mm = timeClient.getMinutes();

int ss = timeClient.getSeconds();

eğer(ss>12)

{

hh=hh-12;

display.print(hh);

display.print(":");

ekran.baskı(mm);

display.print(":");

display.print(ss);

display.println(" PM");

}

Başka

{

display.print(hh);

display.print(":");

ekran.baskı(mm);

display.print(":");

display.print(ss);

display.println("ÖÖ");

}

int gün = timeClient.getDay();

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

date_time = timeClient.getFormattedDate();

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

Dize tarihi = tarih_zaman.substring(0, index_date);

Seri.println(tarih);

display.println(tarih);

display.display();

// İlk metni göster }

Adım 6: Tarih ve Saati Alma

Tarih ve Saat Alma
Tarih ve Saat Alma

Her şeyi doğru bir şekilde bağladıysanız ve kodu da doğru yüklediyseniz, o zaman ntp saatinizin oled ekranda çalışırken benimki gibi çalıştığını görebileceksiniz. Lütfen çıktı için resme bakın.

Önerilen: