آموزش ساخت ساعت و کار با آی سی DS1307 توسط آردوینو

طرح مسئله؟

در بسیاری از پروژه ها نیاز به دانستن زمان برای نمایش به کاربر و یا انجام کارهای زمانبندی شده در ساعات خاص در طول روز داریم. به عنوان مثال فرض کنید می خواهیم با استفاده از برد آردوینو Arduino یک پروژه تعریف کنیم که در آن سیستم روشنایی یک مکان اداری را در روزهای غیر تعطیل از ساعت 18 الی 20 به مدت دو ساعت روشن کنیم و در خارج از این ساعات و روزهای تعطیل سیستم روشنایی به صورت اتوماتیک خاموش شود. برای انجام این پروژه نیاز به یک ساعت و تقویم بسیار دقیق داریم که حتی در زمان قطع برق شبکه نیز برای طولانی مدت، عملیات محاسبه زمان متوقف نشود و زمان به صورت دقیق محاسبه شود.

شاید برای ساخت ساعت اولین فکری که به ذهنتان برسد نوشتن یک برنامه ساده برای آردوینو باشد که توسط آن با استفاده از تعریف چند متغیر و یک دستور تاخیری یک ساعت و تقویم بسازید، اما به احتمال بسیار زیاد در پایان کار با مشکلات زیر روبرو خواهید شد:

:: ساعت ساخته شده دقیق نیست و در طول روز چند ثانیه عقب یا جلو می ماند.

:: با قطع تغذیه از برد آردوینو ساعت صفر می شود.

:: در صورت استفاده از باتری پشتیبان، به علت جریان مصرفی بالا برد آردوینو، احتمالا باتری نتواند بیشتر از چند ساعت مدار را پشتیبانی کند.

:: کدهای نوشته شده برای محاسبه ساعت و تقویم بیشتر حافظه میکروکنترلر برد آردوینو را اشغال کرده و فضای زیادی برای نوشتن سایر کدها برای شما باقی نمانده.

لیست قطعات مورد نیاز

برد آردوینو Arduino UNO R3 مدل DIP1 عدد
LCD کاراکتری مدل 16×2 با Backlighting آبی1 عدد
آی سی شمارش و نگهداری ساعت و تقویم DS1307 مدل DIP1 عدد
تک سوئیچ 2 پایه DIP سایز 6x6x5 میلیمتر3 عدد
مقاومت 10 کیلو اهم با توان 0.25 وات و تلرانس 1 درصد3 عدد
کریستال ساعت 32.768KHz کیلوهرتز1 عدد
جاباتری سکه ای DIP سایز CR2032 مدل ایستاده1 عدد
برد بورد (پروجکت برد) مدل GL1 عدد
سیم جامپر برد بوردی مدل دو سر نری (سری 40تایی)1 عدد

آی سی ساعت DS1307

آی سی DS1307 در بازار به اسم آی سی ساعت مشهور است و دلیل این موضوع نیز این بوده که این آی سی به صورت اختصاصی با هدف محاسبه ساعت و تقویم طراحی شده است. آی سی DS1307 یک ساعت و تقویم BCD می باشد که توان مصرفی آن بسیار پایین می باشد به طوریکه می تواند با یک باتری ساعت 3 ولتی به مدت یکسال بدون وقفه به کار خود در مدار ادامه دهد. همچنین لازیم به ذکر است این تراشه دارای مدار داخلی تشخیص نقص تغذیه نیز می باشد و در صورت بروز قطع تغذیه، باطری پشتیبان را به طور خودکار در مدار قرار می دهد.

نقشه شماتیک راه اندازی آی سی ساعت DS1307

آی سی ساعت DS1307 را می توان به راحتی از طریق پروتکل ارتباطی I2C به برد آردوینو متصل کرد و به سادگی هر چه تمام فقط با ارسال یک خط دستور از ساعت و تقویم با خبر شد و یا مقدار آنرا تغییر داد. با استفاده از آی سی ساعت بسیار دقیق DS1307 می توان تمامی مشکلاتی که در قسمت قبلتر به آن اشاره گردید را حل نمود.

ویژگی های تراشه DS1307

:: توانایی شمارش ثانیه, دقیقه, ساعت, روز, ماه, سال, سال کبیسه تا سال 2100 میلادی

:: مصرف کمتر از 500nA در حالت استفاده از باتری پشتیبان

:: محدوده دمای صنعتی 40- تا 85+ درجه سانتی گراد

:: آشکار ساز خودکار نقص تغذیه و مدار کلید زنی باتری

:: 56 بایت حافظه NV RAM برای ذخیره اطلاعات

:: بسته بندی های 8 پایه PDIP و SOIC

:: سیگنال خروجی مربعی برنامه پذیر

:: ارتباط I2C

کتابخانه RTClib.h

کتابخانه RTClib.h یکی از کتابخانه های بسیار کامل و البته بهینه برای آردوینو جهت راه اندازی تراشه های سری DS1307 و DS3231 و PCF8523 می باشد. با استفاده از کتابخانه RTClib.h شما می توانید بدون اینکه خودتان را درگیر برنامه نویسی جهت برقراری ارتباط I2C با آی سی ساعت کنید به راحتی می توانید با نوشتن یک خط دستور مقدار ساعت و تقویم را بخوانید و یا مقدار آنرا تغییر دهید.

فراخوانی کتابخانه RTClib.h

برای استفاده از کتابخانه RTClib.h ابتدا باید آنرا از انتهای همین مطلب دانلود کنید و سپس کتابخانه را در قسمت libraries نزم افزار آردوینو خود اضافه کنید. برای این منظور می توانید مسیر زیر را از طریق منوی نوار ابزار در نرم افزار آردوینو طی کنید و سپس در پنجره نهایی فایل کتابخانه RTClib را که دانلود کرده اید، جهت افزودن انتخاب کنید.

Sketch > Include Library > Add .ZIP Library…

پس از افزودن کتابخانه RTClib.h به نرم افزار آردوینو، حال می توانید جهت استفاده از امکانات آن در برنامه خود از طریق کد دستوری زیر کتابخانه را در برنامه خود فراخوانی کنید.

تعریف آبجکت

پس از فراخوانی کتابخانه RTClib.h جهت ارتباط با آن و خواندن مقدار ساعت و تقویم نیاز به تعریف یک آبجکت با نام دلخواه داریم، تا در طول برنامه با آن نام آبجکت را فراخوانی کنیم. برای این منظور می توانیم از دستور زیر استفاده کنیم.

توجه : دستور زیر حتما باید قبل از زیر برنامه setup() نوشته شود.

rtc : در صورت تمایل به جای این کلمه می توانید از نام دلخواه مورد نظر خود استفاده کنید.

فعال سازی ارتباط آردوینو با آی سی ساعت

با استفاده از دستور زیر می توانیم ارتباط بین برد آردوینو و تراشه ساعت را فعال کنیم.

برگرداندن مقدار ساعت و تاریخ

برای این منظور ابتدا توسط دستور زیر یک متغیر از جنس زمان و تاریخ تعریف می کنیم :

now : به جای این کلمه می توانید نام مورد نظر خود را جهت تعریف نام متغیر وارد کنید.

حال پس از تعریف متغیر توسط دستور زیر مقدار ساعت و تاریخ را خوانده و در متغیر تعریف شده از جنس زمان و تاریخ وارد می کنیم.

 در پایان می توانیم با بکارگیری دستورات زیر به مقدار ساعت و تاریخ به صورت مجزا دسترسی داشته باشیم.

تنظیم ساعت و تاریخ

برای ویرایش ساعت و تاریخ می توانید از دستور زیر در برنامه خود استفاده کنید.

year : مقدار سال (سال باید به صورت میلادی وارد شود).

month : مقدار ماه (عددی در بازه 1 الی 12).

day : مقدار روز.

hour : مقدار ساعت (عددی در بازه 0 الی 23).

minute : مقدار دقیقه.

second : مقدار ثانیه.

پروژه: ساخت ساعت و تقویم دیجیتال با آردوینو و آی سی ساعت DS1307

در این پروژه آردوینو از مبحث آموزش آردوینو می خواهیم شما را با نحوه برنامه نویسی و ساخت یک ساعت و تقویم دیجیتال با آردوینو و آی سی ساعت DS1307 آشنا کنیم.

بعد قبل
پروژه ساخت ساعت و تقویم دیجیتال با آردوینو و آی سی ساعت DS1307
پروژه ساخت ساعت و تقویم دیجیتال با آردوینو و آی سی ساعت DS1307
پروژه ساخت ساعت و تقویم دیجیتال با آردوینو و آی سی ساعت DS1307
بعد قبل

نقشه شماتیک پروژه ساخت ساعت و تقویم دیجیتال با آردوینو

نقشه شماتیک پروژه ساخت ساعت و تقویم دیجیتال با آردوینو

برنامه آردوینو

ویدیو ضبط شده از نحوه راه اندازی و عملکرد پروژه

دانلود ویدئو با لینک مستقیم از سرورهای پرقدرت الکترونیک 98

 اطلاعات پروژه

 رمز فایل : www.electronics98.com

 حجم فایل : 760 کیلوبایت

 محیط برنامه نویسی : Arduino (IDE)

 برنامه نویسی شده به زبان : ترکیبی از برنامه نویسی به زبان سی (C) یا سی پلاس پلاس (++C)

 نویسنده : فرهاد اکبری

 تاریخ انتشار : 7 ژوئن 2019

21 دیدگاه

  1. با سلام و احترام
    برای این موضوع می توانید سه متغیر به صورت EEPROM در برنامه تعریف کنید و سپس با تعریف یک دستور شرطی ساده در حلقه Do…Loop که در صورت 1 یا 0 شدن یکی از ورودی های میکروکنترلر مقدار متغیرهای زمان در متغیرهای تعریف شده در حافظه ثبت شود.

  2. سلام ممنون از پروژه خوبتون ولی یه سوال
    اگه بخایم به این برنامه دماسنج ds18b20 رو وصل کنیم باید چی کنیم میتونید کمک کنید ؟

  3. با سلام و احترام
    ممنون از لطف و محبت شما
    می توانید با استفاده از کتابخانه های آماده که برای سنسور دما DS18B20 نوشته شده است بدون نیاز به کد نویسی، این سنسور را به برد آردوینو متصل نمایید.

  4. با سلام ببخشید چه جوری و با چه دستوری نام روز‌های هفته را بدست بیارم و در کنار تاریخ نام روز مثل شنبه یا یکشنبه هم نمایش داده شود

  5. با سلام و احترام
    توسط دستور زیر نام روز در هفته به صورت یک رشته برگردانده می شود:

  6. سلام خسته نبا شید لطفا یه کمکی میکنید
    من کتاب خانه این پروژه که نصب میکنم و بعدش میخوام او کی کنم خطا میده که فایل نادرست یا خالی است باید چی کار کنم خیلی ممنون کمک کنید

 شرایط و قوانین ثبت دیدگاه

 فارسی بنویسید و از کیبورد فارسی استفاده کنید.

 لطفاً بیش‌از‌حدِ معمول، شکلک یا ایموجی استفاده نکنید و از کشیدن حروف یا کلمات با صفحه‌کلید بپرهیزید.

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

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