آردوینو, پروژه آردوینو

ساخت ساعت زنگ دار با آردوینو و ماژول DS3231

ساخت ساعت زنگ دار با آردوینو و ماژول DS3231

در این پروژه می‌خواهیم در مورد نحوه ساخت ساعت زنگ دار با آردوینو با استفاده از ماژول DS3231 صحبت کنیم. ماژول نامبرده قیمت کمی دارد و به پروتکل ارتباطی I2C مجهز است. این یعنی به راحتی می‌توان آن را با میکروکنترلرها به کار برد. شما با بهره‌گیری از این ماژول قادر خواهید بود هم زمان را مشاهده و هم با یک بازر، برای خود زنگ هشدار تنظیم کنید. لازم به ذکر است که ماژول DS3231 توانایی اعلام دما را نیز دارد.

فهرست مطالب

ساعت زنگ دار با آردوینو چگونه کار می‌کند؟

ماژول اعلام زمان DS3231 حتی در زمانی که به برق وصل نیست نیز زمان را ثبت می‌کند. این ماژول برای فعالیت به یک باتری 3 ولت نیاز خواهد داشت تا با استفاده از آن زمان را بروز نگه دارد. ما در این پروژه می‌خواهیم تاریخ و زمان را با ماژول RTC و چندین کتابخانه آردوینو، ثبت نماییم و سپس زمان را با ساعت هشداری که تنظیم کرده‌ایم، مقایسه کنیم.

اگر زمان فعلی با ساعت هشدار مطابقت داشت، بازر صدای بیپ خواهد داد. مدت زمان پخش زنگ هشدار در این پروژه 2 دقیقه است اما شما می‌توانید هر چه‌قدر دوست دارید آن را طولانی‌تر کنید. ضمناً، تاریخ و ساعت روی صفحه نمایش LCD پخش می‌شوند.

لوازم مورد نیاز برای ساخت ساعت زنگ دار با آردوینو

در ادامه می‌توانید لیست اقلام مورد نیاز برای ساخت ساعت زنگ دار با آردوینو را مشاهده کنید. با کلیک کردن روی دکمه هر کدام، امکان خرید کالای مدنظر را خواهید داشت.

نکته: برد استفاده شده در این پروژه آردوینو Uno می‌باشد.

دیاگرام مدار ساعت زنگ دار با آردوینو

LCD را مطابق راهنمای زیر به آردوینو وصل کنید:

  • پین 1 نمایشگر LCD به پین اتصال به زمین (GND)
  • پین 2 نمایشگر LCD به پین 5 ولت
  • پین 3 نمایشگر LCD به وسط پین پتانسیومتر 10 کیلو
  • پین 4 نمایشگر LCD به پین دیجیتالی شماره 2
  • پین 5 نمایشگر LCD به پین اتصال به زمین

نکته: با این کار نمایشگر LCD وارد حالت خواندن می‌شود.

  • پین 6 نمایشگر LCD به پین شماره 3
  • پین‌های داده (D4 تا D7) نمایشگر LCD به پین‌های 4، 5، 6 و 7
  • پین 15 نمایشگر LCD به پین 5 ولت از طریق مقاومت 220 اهم

نکته: این پین مثبت نمایشگر است.

  • پین 16 نمایشگر LCD به پین اتصال به زمین

نکته: این پین منفی نمایشگر است.

حالا ماژول اعلام زمان DS3231 را مطابق راهنمای زیر به آردوینو وصل کنید:

  • پین اتصال به زمین (GND) ماژول به پین اتصال به زمین (GND)
  • پین تأمین انرژی (VCC) ماژول به پین 5 ولت
  • پین SCL ماژول به پین A5
  • پین SDA ماژول به پین A4

در نهایت، پین مثبت بازر را به پین 11 آردوینو و پین منفی بازر را به پین اتصال به زمین (GND) آردوینو وصل کنید.

کد ساعت زنگ دار با آردوینو

				
					#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("behnamrobotic.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);

}
				
			

توضیح کد ساعت زنگ دار با آردوینو

واحد اندازه‌گیری رزیستور اهم است که معمولا با علامت Ω که یک حرف یونانی است نشان داده می‌شود. یک واحد از اهم مقدار بسیار اندکی از مقاومت است و معمولا در مدارات الکتریکی از مقاومت‌های بالاتر استفاده می‌شود که برای راحتی در خواندنشان، آن ها را در واحدهای هزارتایی و میلیونی که به ترتیب با کیلو اهم (KΩ) و مگا اهم (MΩ) نامیده می‌شوند، نمایش می‌دهند.

				
					#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;
				
			

خطوط زیر در کد قرار دارند. این خطوط برای تنظیم تاریخ و زمان ماژول RTC خواهند بود. این نکته را در نظر بگیرید که هر بار که از این ماژول استفاده می‌کنید، نیازی نیست تاریخ و ساعت را تنظیم نمایید زیرا در آن باتری قرار دارد که حتی در زمان وصل نبودن به منبع انرژی نیز فعالیت خواهد کرد.

				
					//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
				
			

در ادامه زمان را از ماژول دریافت و آن را در متغیرها ذخیره می‌کنیم. بعدها قرار است این دو مورد را با زمان ساعت هشداری که می‌خواهیم تنظیم کنیم، مقایسه نماییم.

				
					t = rtc.getTime();

 Â Hor = t.hour;

 Â Min = t.min;

 Â Sec = t.sec;
				
			

سپس تاریخ و ساعت را روی نمایشگر LCD پخش می‌کنیم.

				
					lcd.setCursor(0,0);

 Â lcd.print("Time: ");

 Â lcd.print(rtc.getTimeStr());

 lcd.setCursor(0,1);

 lcd.print("Date: ");

 lcd.print(rtc.getDateStr());
				
			

اینک به مقایسه زمان و ساعت هشدار می‌پردازیم. اگر با یکدیگر همخوانی داشتند، بازر صدای بیپ خواهد داد. همان‌طور که پیش‌تر گفتیم، بازر به مدت 2 دقیقه بیپ خواهد کرد اما می‌توانید آن را مطابق میل خود کم یا زیاد کنید

				
					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();

}
				
			

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *