DS3231 ile Arduino tabanlı çalar saat nasıl yapılır?

Projeye Genel Bakış

Bu proje, DS3231 gerçek zamanlı saat modülünü kullanarak Arduino tabanlı bir çalar saat yapmakla ilgilidir. Bu tür bir proje, proje için gerekli tüm donanım dahil olmak üzere çok ucuzdur. Bu, okul öğrencileri, üniversite seminerleri ve elektronik aletler yapma hobisi olanlar için iyi bir proje. Gerçek zamanlı saat modülünün kendisi çok ucuzdur ve I2C iletişimi ile çalışır, böylece aynısını mikrodenetleyicilerle birlikte diğer projelerde de kullanabilirsiniz. Dava açtığımız özel modül bize yalnızca zamanı söylemekle kalmaz, aynı zamanda sıcaklığı da söyler ve ayrıca önceden ayarlanmış her zaman için bir sinyal gönderir; bu sinyal, zamanı söylemek için bağlı bir zili tetiklemek için kullanılabilir.

Donanım/ekipman gerekli

  • Ana bileşen olarak Arduino UNO önerilir.
  • Buzzer modülü olmazsa olmazdır
  • Bir adet 10K potansiyometre gereklidir
  • Bağlantı kabloları ve atlama telleri elbette gereklidir
  • Kablo montajı için devre tahtası
  • Saati görüntülemek için bir adet 16X2 LCD modül
  • DS3231 RTC Modülü (Gerçek Zaman Saati Modülü olarak da adlandırılır)
  • 220 ohm direnç gerekli

Arduino tabanlı çalar saatin çalışma prensibi

  • DS3231 gerçek zamanlı saat modülü yerleşik bir 3V pil içerdiğinden, cihaz harici olarak güç verilmediğinde bile zamanı tutar. Modülden gelen zaman datasını kullanmak ve çalar saat olarak çalışmasını sağlamak için Arduino IDE’nin kütüphane fonksiyonlarını kullanacağız ve daha sonra programı zaman datasını programda belirlediğimiz alarm zamanı ile karşılaştıracak şekilde ayarlayacağız. .
  • Kusursuz çalışması için, mevcut saat alarm saatiyle (kodda önceden ayarlanmış) eşleştiğinde sesli uyarıcı bip sesi çıkarmaya başlayacaktır. Biz kodumuzda bip süresini 2 dakika olarak ayarlayacaktık ama değişken değerler kullanıcıya göre değişir siz kendi isteğinize göre ayarlayabilirsiniz. Aynı zamanda, LCD ekranda saat ve tarih görüntülenir.
  2021'de emrinize amade en çok kullanılan 10 Gadget

Devre Toplantısı


Tüm ekipmanı doğru bir şekilde monte etmek için aşağıdaki talimatları izleyin:

  • Şimdi LCD modülün tüm data pinlerini (D4-D7) Arduino üzerindeki 4, 5, 6, 7 numaralı pinlere karşılık gelen Arduino data pinlerine bağlamanız gerekiyor.
  • Arduino’daki 5V pini için olan pin #15’i 220 ohm’luk direnç üzerinden pozitif arka ışık pini olarak belirleyin
  • Bir sonraki pim, pim #16, negatif arka ışık pimi olarak Arduino’daki topraklama içindir, bu nedenle uygun şekilde bağlayın.
  • LCD modülündeki sol Pim # 1’den başlamak, Arduino’daki topraklama içindir.
  • LCD modülündeki bir sonraki pim #2, Arduino’ya 5V bağlantı içindir.
  • LCD modülündeki bir sonraki 3 numaralı pimin, 10K potansiyometre üzerindeki orta pime bağlanması amaçlanmıştır.
  • LCD modülündeki Pin #4, Arduino’daki dijital pin #2 içindir, bu nedenle uygun şekilde bağlayın.
  • Şimdi LCD modülündeki 5 numaralı pim Arduino’nun toprağı içindir. Bu, LCD ekranı okuma moduna alır.
  • LCD modülündeki 6 numaralı pin ise Arduino’nun 3 numaralı pinine bağlanmak içindir.

Şimdi talimatları izleyerek DS3231 Gerçek Zamanlı Saat Modülünü Arduino’ya bağlayın:

  • Şimdi DS3231’deki GND’yi Arduino’daki GND’ye bağlayın
  • Ardından DS3231’deki VCC’yi Arduino’daki 5V pinine bağlayın
  • Şimdi DS3231’deki SCL’yi Arduino’daki A5’e bağlamanız gerekiyor
  • Son olarak, DS3231’deki SDA’yı Arduino’daki A4’e bağlamanız gerekir.

Son olarak buzzerın pozitif pinini Arduino üzerindeki 11 nolu pine ve ayrıca buzzerın negatif pinini Arduino üzerindeki GND pinine bağlayın.

Devre şeması CGI


Arduino IDE için Arduino tabanlı çalar saat kodu

Diğerleri gibi kodlama konusunda rahat değilseniz, aşağıdaki kodu Arduino IDE’nize kopyalayın ve kaydedin, ardından derlemeye çalışın, kod zaten tarafımdan test edildiğinden hatasız çalışacağını umarız. Arduino IDE kodlamasında rahatsanız, aşağıdaki kodu gerektiği gibi değiştirin. Arduino IDE’de olduğu gibi bir seminerde kodu göndermek üzereyseniz ve GitHub’ı kullanıyorsanız, telif hakkı veya intihal konusunda endişelenmeyin, bunların hepsi tıpkı Arduino IDE’nin kendisi gibi açık kaynak kodlardır.

#include <DS3231.h>
#include <Wire.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
DS3231  rtc(SDA, SCL);
Time  t;
#define buz 11

int Hor;
int Min;
int Sec;


void setup()

{ 

  Wire.begin();
  rtc.begin();
  Serial.begin(9600);
  pinMode(buz, OUTPUT);
  lcd.begin(16,2);    
  lcd.setCursor(0,0);
  lcd.print("DIYHacking.com");
  lcd.setCursor(0,1);
  lcd.print("Arduino Alarm ");

  // The following lines can be uncommented to set the date and time
  //rtc.setDOW(WEDNESDAY);     // Set Day-of-Week to SUNDAY
  //rtc.setTime(12, 0, 0);     // Set the time to 12:00:00 (24hr format)
  //rtc.setDate(1, 1, 2014);   // Set the date to January 1st, 2014

  delay(2000);
}
void loop()
{
  t = rtc.getTime();
  Hor = t.hour;
  Min = t.min;
  Sec = t.sec;
  lcd.setCursor(0,0);
  lcd.print("Time: ");
  lcd.print(rtc.getTimeStr());
  lcd.setCursor(0,1);
  lcd.print("Date: ");
  lcd.print(rtc.getDateStr());

 if( Hor == 11 &&  (Min == 32 || Min == 33)) //Comparing the current time with the Alarm time

{
Buzzer();
Buzzer();
lcd.clear();
lcd.print("Alarm ON");
lcd.setCursor(0,1);
lcd.print("Alarming");
Buzzer();
Buzzer();
}
delay(1000);
}

void Buzzer()
{
digitalWrite(buz,HIGH);
delay(500);
digitalWrite(buz, LOW);
delay(500);
}

  2020'de Satın Alabileceğiniz En İyi Performanslı Dizüstü Bilgisayarlar

Kod Açıklama ve Çalışma Başlığı

  • Başlangıçta DS3231 gerçek zamanlı saat ve LCD kitaplıklarından oluşuyorduk. iş parçacığı kitaplığı DS3231 ve Arduino mikro denetleyicisi arasındaki I2C iletişimini sağlamak içindir. Gerçek zamanlı saat DS3231, Arduino ile I2C iletişimi yoluyla iletişim kurar, bu nedenle kablolu kitaplığı standart olarak dahil ettik.
#include <DS3231.h>
#include <Wire.h>
#include <LiquidCrystal.h>
  • Daha sonra bu kodda kullanacağımız değişkenleri başlatıyoruz.
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
DS3231  rtc(SDA, SCL);
Time  t;
#define buz 11
int Hor;
int Min;
int Sec;
  • Aşağıdaki kod satırı aslında kodda zaten yorumlanmıştır. Bu izler, RTC modülü için tarih ve saati ayarlamak içindir. Her kullanışınızda tarih ve saati ayarlamak zorunda değilsiniz çünkü RTC modülü, modüle her zaman güç verilmese bile çalışmaya devam eden bir pile sahiptir.
//rtc.setDOW(WEDNESDAY);     // Set Day-of-Week to SUNDAY
//rtc.setTime(12, 0, 0);     // Set the time to 12:00:00 (24hr format)
//rtc.setDate(1, 1, 2014);   // Set the date to January 1st, 2014
  • Döngü fonksiyonunda, zamanı modülden çıkarır ve değişkenlerde saklarız. Ayarlamak istediğimiz alarm zamanı ile bu değişkenleri daha sonra inceleyeceğiz.
t = rtc.getTime();
Hor = t.hour;
Min = t.min;
Sec = t.sec;
  • Ardından LCD ekrana saat ve tarihi yazdırıyoruz.
lcd.setCursor(0,0);
lcd.print("Time: ");
lcd.print(rtc.getTimeStr());
lcd.setCursor(0,1);
lcd.print("Date: ");
lcd.print(rtc.getDateStr());
  • Ardından alarm saati ile o anki saati kontrol ediyoruz ve saat eşleşirse buzzer çalmaya başlıyor. Zil iki dakika boyunca biplemeye devam edecek, ancak siz dilerseniz bip süresini artırabilir veya azaltabilirsiniz.
if( Hor == 11 &&  (Min == 32 || Min == 33)) //Comparing the current time with the Alarm time
{
Buzzer();
Buzzer();
lcd.clear();
lcd.print("Alarm ON");
lcd.setCursor(0,1);
lcd.print("Alarming");
Buzzer();
Buzzer();
}


Çözüm

Arduino ile oluşturulmuş, öğrenmek ve eğlenmek için onunla oynayın.