İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-23 15:13
Bir veri günlüğü tutmak istiyorsanız doğru zamanı almak çok önemlidir. İnternetteki kaynaklardan zaman almanın çeşitli yolları vardır.
Size zaman ayırmak için neden ESP8266'yı kullanmadığınızı sorabilirsiniz. Yapabilirsiniz, kendi dahili RTC'si (Gerçek Zamanlı Saat) vardır, ancak ESP8266'nın 3 farklı çalışma saat frekansı vardır - önyükleme yaparken 52MHz, normal çalışma sırasında 80MHz ve artırılmışsa 160MHz. Özellikle daha uzun periyotlarda daha doğru zaman tutmaya ihtiyacınız varsa, harici bir RTC bir çözüm sağlayabilir. Bu modüllerde ayrıca elektrik kesintisi durumunda yedek pil bulunur. Bir RTC, kurulduğundan beri geçen süreyi saydığından ve çoğu uygulama için geçerli olmasına rağmen, kritik zaman tutma için yeterince iyi olmayabilir. Gerekirse, RTC'nin düzenli aralıklarla güncellenebileceği bir SNTP zaman sunucusundan doğru bir zaman almak mümkündür.
DS1307 Tiny RTC I2C Modülü (yukarıda) bu öğelere bir örnektir ve Ebay'den ve diğer tedarikçilerden 2 sterlinin altına satın alınabilir. DS1302 ve DS3231 gibi benzer şekilde çalışan ve 99p'den yukarıya mal olan başkaları da var.
DS1307 modülü bir I2C arayüzü kullanır ve bir ESP-01 için şu şekilde bağlanmalıdır:
Vcc - 3.3v, Gnd - Gnd, SDA - D3, SCL - D4
SDA ve SCL, daha büyük ESP8266'lardaki I/O pinlerinden herhangi birine bağlanabilir (kodu buna göre değiştirin). Bu modüle sadece sol taraftaki pinlerin bağlanması gerekir.
1. Adım: Google Saati
Google'dan zaman almanın ve bunun gibi görünmenin birçok örneği var. GoogleTime.lua programını çalıştırdığınızda şöyle bir sonuç alırsınız:
dofile("GoogleTime.lua")> Saat: Cuma, 15 Aralık 2017 11:19:45 GMT
Bu yöntemle ilgili sorun, zamanı dize biçiminde almanız ve dizeyi saat, dakika, saniye vb. için ayrı bitlerine bölmeniz gerekmesidir. RTC, zamanı özel bir biçimde, yani UNIX zaman damgasında kabul eder. Layman'ın terimleriyle bu, 1 Ocak 1970 Perşembe gününden günümüze ve zamana kadar geçen saniye sayısıdır. UNIX Epoch (1970/01/01 00:00:00) çoğu bilgisayar işletim sistemi tarafından kullanılır ve geçen süre, imzalı 32 bitlik bir sayı olarak saklanır. Bu, bu sistemin, sayının bu şekilde depolanamayacak kadar büyük olacağı 19 Ocak 2038'e kadar çalışacağı anlamına gelir. Bir çözüm, sayıyı 64 bit olarak saklamaktır, ancak şimdilik 32 bit yöntemi yeterli olacaktır.
Dahili RTC'de saati 2015 9 Temmuz 18:29:49 olarak ayarlamak için şu kod satırını kullanırsınız:
rtctime.set(1436430589, 0)
2 parametre saniye ve mikro saniyedir.
NodeMCU Belgelerini okuyarak daha fazla bilgi bulabilirsiniz.
Adım 2: SNTP Zaman Sunucuları
Basit Ağ Zaman Protokolü (SNTP), İnternet'teki birçok kaynaktan sağlanmaktadır ve dünyadaki birçok ülke bu hizmete sahiptir.
SNTPTime2.lua programı, dahili RTC'deki zamanı ayarlar. ESP8266'nızı flaş ettiğinizde yapınızda rtctime & sntp modüllerinin olması gerekir. Program sunucudan zamanı saniye ve mikro saniye olarak alır ve dahili RTC'yi rtctime.set(sec, usec) ile ayarlar.
Program daha sonra tarih ve saati farklı formatlarda görüntüler.
Dünya çapında birçok SNTP Sunucusu vardır ve bazıları aşağıdaki gibidir:
- sntp.sync({"216.239.35.0"},
- sntp.sync({"0.uk.pool.ntp.org", "0.uk.pool.ntp.org"},
- sntp.sync({"3.uk.pool.ntp.org", "143.210.16.201"},
- sntp.sync({"0.uk.pool.ntp.org", "1.uk.pool.ntp.org", "3.uk.pool.ntp.org"},
Yukarıdaki tüm kod satırları, SNTPTime2.lua programına ikame edilebilir.
Aşağıdaki adreslerde yine programda kullanılabilecek daha fazla SNTP Sunucusu bulunmaktadır.
93.170.62.252, 130.88.202.49, 79.135.97.79, ntp.exnet.com
Google ayrıca şu adreslerde zaman sunucuları sağlar:
216.239.35.0, 216.239.35.4, 216.239.35.8, 216.239.35.12
Bulunduğunuz ülkeden saati almayı hatırlamanız gerekir, aksi takdirde farklı dünya saat dilimleri için değiştirmeniz gerekebilir. Ayrıca bazı ülkelerde yaz saati uygulaması vardır, bu nedenle bununla da ilgilenmeniz gerekebilir.
Adım 3: RTC Modülünden Zamanı Alma
GetRTCTime.lua programı, dahili RTC'den zamanı okur.
İlk kısım zamanı okur ve saniye ve mikrosaniye cinsinden görüntüler.
İkinci kısım, onu daha insan tarafından okunabilir bir biçime dönüştürür.
tm = rtctime.epoch2cal(rtctime.get()) çağrılırken şunu döndürür:
- yıl - 1970 ~ 2038
- pazartesi - cari yılda 1 ~ 12 ay
- gün - mevcut ayda 1 ~ 31. gün
- saat
- dk
- saniye
- gün - cari yılda 1 ~ 366 gün
- wday - geçerli haftadaki 1 ~ 7. gün (Pazar 1'dir)
Her öğeye tm["gün"], tm["yıl"]… şeklinde erişilebilir.
NodeMCU Belgelerini okuyarak daha fazla bilgi bulabilirsiniz.
DisplaySNTPtime.lua, kolayca bağlanabildiğinden ve bu programlarla kullanılabildiğinden, LCD 128 x 64 OLED ekranda tarih ve saati göstermenin daha ayrıntılı bir yoludur.
Adım 4: RTC Kullanıcı Belleği
ESP8266'daki dahili RTC'nin, programcı tarafından erişilebilen 128 x 32 bit bellek adreslerine sahip olması, zaman tutmadan küçük bir sapmadır. ESP8266'nın derin uyku döngüsünde hayatta kalabildikleri için özellikle yararlıdırlar. Kullanımlarını kontrol etmek ve yanlışlıkla üzerine yazılmamasını sağlamak programcıya kalmıştır.
Kullanımını gösteren basit bir program olan RTCmem.lua'yı ekledim. Derlemenizde rtcmem modülünün olması gerekir.
Adım 5: Harici RTC Modülleri
Harici RTC modülleri, ESP8266'ya yalnızca iki G/Ç pini kullanan I2C arabirimi aracılığıyla bağlanır ve bu nedenle ESP-01 ve diğer ESP8266 cihazlarının çoğuyla çalışır.
RTC modülü adresi 0x68'dir ve normal I2C komutları kullanılarak erişilir. Ancak akılda tutulması gereken bir şey var, RTC kayıtlarındaki veriler BCD formatında (taban 16) saklanır, dolayısıyla programlarınız bununla ilgilenmek zorundadır. Saat ve tarih, RTC içindeki 7 kayıtta saklanır. Dahili RTC'de, BCD dönüşümleri rtctime modülü tarafından halledilir.
SetExtRTC.lua, verileri BCD'ye dönüştürür ve zamanı ayarlar.
ReadExtRTC.lua zaman verilerini okur ve yazdırır. NOT: veriler onaltılı olarak yazdırılır.
Tarih ve saatle ne yapmak istediğiniz konusunda kendi fikirleriniz olabileceğinden, ekranı biçimlendirmek için çok fazla zaman harcamadım. Bu, en basit haliyle temel motordur, böylece isterseniz daha da geliştirebilirsiniz.
6. Adım: Veri Kaydı
RTC modüllerine yakından bakarsanız, içlerinde yerleşik bir AT24C32 EEPROM IC veya benzeri olduğunu fark edeceksiniz veya yukarıdaki gibi bir 24C256 kartı kullanabilirsiniz. Bu EEPROM IC'lerin çoğu, yukarıdaki ile benzer pin çıkışlarına sahiptir. Çeşitli miktarlarda depolama ile gelirler, ancak hepsine aynı şekilde erişilir. AT24C32 zaten karta lehimlendiğinden, doğrudan harici RTC'nin I2C'sinden kullanılabilir.
Yalnızca 24C256 IC veya benzerine sahipseniz, bunu bir breadboard'a kurabilir, A1, A2 ve A3'ü Gnd'ye, Vcc'yi 3.3V'a ve SDA AND SCL'yi I2C'ye bağlayabilirsiniz, WP yüzer halde bırakılabilir. Bazı EEPROM IC'ler yalnızca 5V'de çalışır, bu nedenle önce ilgili veri sayfasını kontrol edin.
ByteWR.lua, EEPROM'un 0x00 bellek konumuna 1 bayt veri yazar ve geri okur.
Desiderata.lua, ünlü metinden EEPROM'a birkaç satır yazar.
eeRead.lua, EEPROM'dan verileri okur ve yazdırır.
NOT: Bu programlar diğer EEPROM kartlarıyla da çalışmalıdır.
7. Adım: Sonuç
Veri kaydı için RTC ve EEPROM'un nasıl çalıştığını göstermeye çalıştım. Bu, daha fazla gelişmeniz için sadece bir başlangıç. Işık sensörleri, barometrik basınç sensörleri, sıcaklık ve nem sensörleri gibi çeşitli cihazları I2C bus'a bağlayabilir ve verileri EEPROM'a kaydedebilirsiniz.
Önerilen:
Java Kullanarak DS3231 RTC'yi (Gerçek Zamanlı Saat) Doğru, Hızlı ve Otomatik Olarak Ayarlama (+-1s): 3 Adım
Java Kullanarak DS3231 RTC'yi (Gerçek Zamanlı Saati) Doğru, Hızlı ve Otomatik Olarak Ayarlama (+-1s): Bu Talimat, bir Arduino ve kullanan küçük bir Java uygulaması kullanarak bir DS3231 Gerçek Zamanlı Saatte saati nasıl ayarlayacağınızı gösterecektir. Arduino'nun seri bağlantısı.Bu programın temel mantığı:1. Arduino bir seri istek gönderir
DS1307 Arduino ile Gerçek Zamanlı Saat RTC: 4 Adım
DS1307 Arduino ile Gerçek Zamanlı Saat RTC: Bu Eğitimde, Gerçek Zamanlı Saat (RTC) ve Arduino & Gerçek Zamanlı Saat IC DS1307, bir zamanlama cihazı olarak bir araya getirilmiştir. Gerçek Zamanlı Saat (RTC), zamanı izlemek ve bir takvimin bakımını yapmak için kullanılır. Bir RTC kullanmak için, w
DS1307 Gerçek Zamanlı Saat (RTC) Modülü ve 0.96: 5 Adım Kullanan Arduino Tabanlı Saat
DS1307 Gerçek Zamanlı Saat (RTC) Modülü & 0.96 Kullanan Arduino Tabanlı Saat: Merhaba arkadaşlar bu dersimizde DS1307 gerçek zamanlı saat modülü & OLED ekranlar.Bu yüzden zamanı DS1307 saat modülünden okuyacağız. Ve OLED ekranına yazdırın
Arduino IDE Kullanarak M5stick C İle Saat Yapımı - M5stack M5stick-C ile RTC Gerçek Zamanlı Saat: 4 Adım
Arduino IDE Kullanarak M5stick C İle Saat Yapımı | M5stack M5stick-C ile RTC Gerçek Zamanlı Saat: Merhaba arkadaşlar bu talimatta Arduino IDE kullanarak m5stick-C m5stack geliştirme kartı ile saat yapmayı öğreneceğiz. Ekranda ayın haftası
Arduino ve TFT Ekran Kullanarak Gerçek Zamanlı Saat Nasıl Yapılır-3,5 İnç TFT Ekranlı Arduino Mega RTC: 4 Adım
Arduino ve TFT Ekran Kullanarak Gerçek Zamanlı Saat Nasıl Yapılır|3,5 İnç TFT Ekranlı Arduino Mega RTC: Youtube Kanalımı Ziyaret Edin.Giriş:- Bu yazımda 3,5 inç TFT dokunmatik LCD, Arduino Mega kullanarak "Gerçek Zamanlı Saat" yapacağım. 2560 ve DS3231 RTC modülü….Başlamadan önce…YouTube kanalımdaki videoyu kontrol edin..Not:- Arduin kullanıyorsanız