İçindekiler:
Video: Arduino ile Gerçek Zamanlı Saat: 3 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Bu projemizde Arduino ve RTC modülü yardımı ile saat yapacağız. Arduino'nun gerçek zamanı gösteremeyeceğini bildiğimiz için, LCD'de doğru zamanı görüntülemek için RTC modülünü kullanacağız. Tüm adımı dikkatlice okuyun, saatin işleyişini yapmanıza çok yardımcı olacaktır.
DS3231 Arduino kodu, DS1307 kodu gibidir ve her iki RTC yongası ile çalışır.
Aşağıdaki Arduino kodu, DS3231 RTC için herhangi bir kitaplık kullanmaz, Wire kitaplığı, I2C kuralını kullanan Arduino ve DS3231 arasındaki yazışmalar içindir.
Evet! Birçok elektronik mühendisi, zamana dayalı projeleri için buna güvenir, ancak RTC tamamen güvenilir değildir. Pille çalışır ve er ya da geç değiştirilmesi gerekir. IoT projelerine gelince, değerli SPI (Seri Çevre Birimi) pinlerini işgal eder ve etrafta dolaşan kablolarla dağınık hale gelir. Çözüm…. İşte kahramanımız NTP(Ağ zaman protokolü) geliyor. NTP internetten zaman aldığı için çok doğru. Bu protokolü bir istemci-sunucu modu kullanarak çalıştıracağız. işlem o kadar basittir ki Nodemcu bir istemci gibi davranır ve UDP kullanarak sunucudan bir NTP paketi ister. Karşılığında sunucu, istemciye verileri ayrıştıran bir paket gönderir. NTP, evrensel zaman senkronizasyon protokolüdür. Şimdi laboratuvar çalışma istasyonumuzu aydınlatalım
Adım 1: Gerekli Bileşenler
- Arduino kurulu
- DS3231 RTC kartı
- 16x2 LCD ekran
- 2 x basma düğmesi
- 10K ohm değişken direnç (veya potansiyometre)
- 330-ohm direnç
- 3V düğme pil
- ekmek tahtası
- Atlama telleri
RTC molekülü DS3231
Zaman, insanların bu hızlı tempolu dünyasında gerekli olan temel bir duyudur. Gerçek zamanlı projede
RTC (A. K. A Gerçek zamanlı saat) kullanıyoruz
RTC Gerçek zamanlı saat (RTC), mevcut zamanı takip eden bir entegre devredir (IC). RTC, gerçek modda zamanı önemser. RTC genellikle bilgisayar anakartlarında ve gömülü sistemlerde bulunur ve zamanında erişim gerektirir.
Adım 2: Arduino Saatinin Bağlantısı
- SCL pinini RTC modülüne Arduino A5'e bağlayın
- SDA pinini RTC modülüne Arduino A4'e bağlayın
- VCC'yi 5v'ye ve GND'yi GND'ye bağlayın
- Pim 8'e bir buton bağlayın
- Pin 9'a başka bir buton bağlayın
- LCD'nin RS'sini Arduino'nun pin 2'sine bağlayın
- LCD'nin E'sini Arduino'nun 3. pinine bağlayın
- LCD'nin D7'sini Arduino'nun 7 numaralı pinine bağlayın
- LCD'nin D6'sını Arduino'nun 6 numaralı pinine bağlayın
- LCD'nin D5'ini Arduino'nun 5 numaralı pinine bağlayın
- LCD'nin D4'ünü Arduino'nun 4 numaralı pinine bağlayın
- VSS & K'yi GND'ye bağlayın
- VDD ve A'yı 5v'ye bağlayın
- vo'yu potansiyometre çıkış pinine bağlayın
Adım 3: RTC ile Arduino Saati Kodu
DS3231 yalnızca BCD formatı ile çalışır ve BCD'yi ondalık sayıya dönüştürmek ve tam tersi için aşağıdaki 2 satırı kullandım (dakika için örnek):// BCD'yi ondalık dakikaya dönüştür = (dakika >> 4) * 10 + (dakika ve 0x0F);
// Ondalık sayıyı BCDdakika'ya çevir = ((dakika / 10) << 4) + (dakika % 10); void DS3231_display(): zamanı ve takvimi görüntülemeden önce zamanı ve takvimi görüntüler ve takvim verileri BCD'den ondalık formata dönüştürülür.void blur_parameter():
// DS3231 ve Arduino kullanarak set butonları ile gerçek zamanlı saat ve takvim // LCD kütüphane kodunu içerir #include // Wire kütüphane kodunu içerir (I2C protokol cihazları için gereklidir) #include // LCD modül bağlantıları (RS, E, D4, D5), D6, D7) LiquidCrystal lcd(2, 3, 4, 5, 6, 7); geçersiz kurulum() { pinMode(8, INPUT_PULLUP); // button1 pin 8 pinMode(9, INPUT_PULLUP)'a bağlı; // button2 pin 9'a bağlı // LCD'nin sütun ve satır sayısını ayarla lcd.begin(16, 2); Wire.begin(); // i2c bus'a katıl } char Time = "TIME::: "; char Takvim = "TARİH: / /20"; bayt i, saniye, dakika, saat, tarih, ay, yıl; void DS3231_display(){ // BCD'yi saniyeye çevir = (saniye >> 4) * 10 + (saniye & 0x0F); dakika = (dakika >> 4) * 10 + (dakika ve 0x0F); saat = (saat >> 4) * 10 + (saat & 0x0F); tarih = (tarih >> 4) * 10 + (tarih ve 0x0F); ay = (ay >> 4) * 10 + (ay ve 0x0F); yıl = (yıl >> 4) * 10 + (yıl & 0x0F); // Dönüştürmeyi Sonlandırma Süresi[12] = saniye % 10 + 48; Zaman[11] = saniye / 10 + 48; Zaman[9] = dakika % 10 + 48; Zaman[8] = dakika / 10 + 48; Zaman[6] = saat % 10 + 48; Zaman[5] = saat / 10 + 48; Takvim[14] = yıl % 10 + 48; Takvim[13] = yıl / 10 + 48; Takvim[9] = ay % 10 + 48; Takvim[8] = ay / 10 + 48; Takvim[6] = tarih % 10 + 48; Takvim[5] = tarih / 10 + 48; lcd.setCursor(0, 0); lcd.print(Zaman); // Zamanı göster lcd.setCursor(0, 1); lcd.print(Takvim); // Takvimi göster } void flash_parameter(){ byte j = 0; while(j 23) // Eğer saat > 23 ==> saat = 0 parametre = 0; if(i == 1 && parametre > 59) // Eğer dakika > 59 ==> dakika = 0 parametre = 0; if(i == 2 && parametre > 31) // Eğer tarih > 31 ==> tarih = 1 parametre = 1; if(i == 3 && parametre > 12) // Eğer ay > 12 ==> ay = 1 parametre = 1; if(i == 4 && parametre > 99) // Yıl > 99 ==> ise yıl = 0 parametre = 0; sprintf(metin, "%02u", parametre); lcd.setCursor(x,y); lcd.print(metin); gecikme(200); // 200ms bekle } lcd.setCursor(x,y); lcd.print(" "); // İki boşluk göster blur_parameter(); sprintf(metin, "%02u", parametre); lcd.setCursor(x,y); lcd.print(metin); yanıp sönen_parametre(); if(!digitalRead(8)){ // Düğmeye (pin #8) basılırsa i++; // Bir sonraki parametre dönüş parametresi için 'i' artırın; // Parametre değerini döndür ve çık } } } void loop() { if(!digitalRead(8)){ // Düğmeye (pin #8) basılırsa i = 0; saat = edit(5, 0, saat); dakika = edit(8, 0, dakika); tarih = edit(5, 1, tarih); ay = edit(8, 1, ay); yıl = edit(13, 1, yıl); // Ondalık sayıyı BCD'ye çevir dakika = ((dakika / 10) << 4) + (dakika % 10); saat = ((saat / 10) << 4) + (saat % 10); tarih = ((tarih / 10) << 4) + (tarih % 10); ay = ((ay / 10) << 4) + (ay % 10); yıl = ((yıl / 10) << 4) + (yıl % 10); // Dönüştürmeyi sonlandır // DS3231 RTC'ye veri yaz Wire.beginTransmission(0x68); // DS3231 adresi Wire.write(0) ile I2C protokolünü başlatın; // Kayıt adresini gönder Wire.write(0); // Sesleri sıfırla ve osilatörü başlat Wire.write(dakika); // Dakikayı yaz Wire.write(saat); // Saati yaz Wire.write(1); // Günü yaz (kullanılmıyor) Wire.write(tarih); // Tarih yaz Wire.write(ay); // Ay yaz Wire.write(yıl); // Yılı yazın Wire.endTransmission(); // İletimi durdur ve I2C veri yolu gecikmesini serbest bırak(200); // 200ms bekle } Wire.beginTransmission(0x68); // DS3231 adresi Wire.write(0) ile I2C protokolünü başlatın; // Kayıt adresini gönder Wire.endTransmission(false); // I2C Wire.requestFrom(0x68, 7); // DS3231'den 7 bayt iste ve ikinci okumanın sonunda I2C veri yolunu serbest bırak = Wire.read(); // Kayıttan saniyeleri oku 0 dakika = Wire.read(); // Kayıttan dakikaları oku 1 saat = Wire.read(); // register 2 Wire.read(); // Kayıt 3'ten günü oku (kullanılmıyor) tarih = Wire.read(); // Kayıttan okuma tarihi 4 ay = Wire.read(); // Kayıttan ayı oku 5 yıl = Wire.read(); // yılı register 6'dan oku DS3231_display(); // Diaplay zamanı ve takvim gecikmesi(50); // 50ms bekle }
Önerilen:
DS1307 ve DS3231 Gerçek Zamanlı Saat Modüllerini Arduino İle Kullanmak: 3 Adım
Arduino ile DS1307 ve DS3231 Gerçek Zamanlı Saat Modüllerini Kullanma: Çeşitli kaynaklardan DS1307 ve DS3231 gerçek zamanlı saat modüllerinin Arduino ile nasıl kullanılacağına dair istekler almaya devam ediyoruz - bu yüzden bu, bunların nasıl kullanılacağına dair iki bölümlük bir eğitimin ilki. Bu Arduino dersi için bize iki gerçek zamanlı saat modülümüz var
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ı
NODEMCU Lua ESP8266, Gerçek Zamanlı Saat (RTC) ve EEPROM ile: 7 Adım
NODEMCU Lua ESP8266 Gerçek Zamanlı Saat (RTC) ve EEPROM ile: 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. Yapabilirsin, kendi dahili RTC'si var (Gerçek Zamanlı