آردوینو آردوینو Arduino Uno آموزش آردوینو

تنظیم ماژول ساعت DS3231 و نگهداری زمان محاسبه شده در حافظه

set-up-ds3231-clock-module-with-arduino-digispark
نوشته شده توسط پریسا پوربلورچیان

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

 


کتابخانه RTClib


کتابخانه پرطرفدار RTC جهت تست و راه اندازی ساعت Realtime طراحی و توسعه یافته است. با استفاده از کتابخانه RTC ماژول هایی مانند DS1307, PCF8523, DS3231 راه اندازی می‌شود. در این آموزش با ماژول ساعت DS3231 ساعت و تاریخ را محاسبه خواهیم کرد. RTC قابلیت ذخیره زمان را در خود دارد و به همین دلیل در پروژه ها بسیار کاربردی است. حتما این سوال برای شما هم پیش می‌آید که با قطع برق چه اتفاقی برای ماژول می‌افتد. جواب بسیار ساده است. RTC زمان را در خود نگه داشته و پس از اتصال دوباره برق به مدار، ساعت از لحظه جدید زمان را محاسبه می‌کند. اما سوال بعدی این است که اکثر میکروکنترلرها مانند Arduino،  به تنهایی قابلیت ذخیره زمان را دارند، پس چرا باید از ماژول RTC استفاده کنیم؟ تابع milis در واقع زمان شروع برنامه را محاسبه کرده و به عبارتی مدت زمات شروع برنامه را بر حسب میکروثانیه برمی‌گرداند و این عدد تقریبا پس از ۵۰ روز به بازه ۰ بر میگردد. حال اگر زمان را از طریق Arduino ذخیره کنید با هر بار قطع شدن برق مدار، از زمان ۰ ( زمان اولیه ) شروع به محاسبه آن خواهد کرد و یک ضعف بزرگ به شمار می‌آید.

 


ماژول ساعت DS3231


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

  • شمارش ساعت، دقیقه و ثانیه
  • روز هفته، روز و ماه و سال
  • دارای ولتاژ کاری بین ۳٫۳ تا ۵ ولت
  • دارای پروتکل ارتباطی I2C

اتصال ماژول ساعت به آردوینو

  • پایه SDA ماژول ساعت DS3231 را به پایه A4 آردوینو اتصال دهید.
  • پایه SCL ماژول ساعت DS3231 را به پایه A5 آردوینو اتصال دهید.
  • پایه VCC ماژول ساعت DS3231 را به پایه ۳٫۳ ولت آردوینو اتصال دهید.
  • پایه GND ماژول ساعت DS3231 را به پایه GND آردوینو اتصال دهید.

 

 


نصب کتابخانه Library


جهت تست ماژول ساعت به دو کتابخانه ساعت و Wire نیاز داریم. جهت دسترسی به کتابخانه DS3231 تنها بایستی کتابخانه RTClib نصب گردد. همچنین از کتابخانه wire جهت برقراری ارتباط استفاده خواهیم کرد. لینک دانلود کتابخانه در صفحه محصول کالا در قسمت دانلود قرار گرفته شده است، آن را دانلود و فراخوانی کنید. همچنین کتابخانه Wire به صورت پیشفرض در لیست کتابخانه های آردوینو قرار گرفته شده است. آن را فراخوانی کنید.

  • RTClib

  • wire

 


تنظیم ساعت RTC


جهت نمایش زمان و ساعت بایستی دستور آن در کد برنامه اضافه گردد. از دستور زیر استفاده خواهیم کرد:

 در این مرحله می‌توانید هیچ دیتایی در خط ننوشته و ساعت اندازه گیری شده دقیقا از زمان اتصال به سیتسم شروع به شمارش خواهد کرد. در صورتیکه بخواهید در یک روز و ساعت مشخص برنامه شروع به شمارش کند، این خط را تکمیل نمایید. جهت فراخوانی کتابخانه DS3231 از دستور زیر استفاده می‌کنیم:

 

خواندن زمان

در این مرحله پس از تنظیم ساعت، زمان محاسبه شده خوانده و نمایش داده می‌شود. از دستور زیر استفاده خواهیم کرد.

 


کد آردوینو ماژول DS3231


کدهای زیر نمونه راه اندازی با ماژول ساعت DS3231 و برد آردوینو هستند. برای استفاده کافیست آن‌ها را در IDE آردوینو روی سیستم خودتان، کپی کنید. سپس روی برد آردوینو با رعایت اتصالات آپلود کنید.

 

جهت دسترسی به این بخش از پروژه، اسپارکر پلاس شوید.

 


رفع عیب شمارش ساعت


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

  • در روش اول در دستور زیر ساعت و تاریخ دقیق سیستم خود را وارد کرده و برنامه را آپلود نمایید. ساعت را خوانده و پس از گذشت چند دقیقه ارتباط برق را قطع کنید. مجدد ارتباط را برقرار کرده و بدون آپلود کردن برنامه سریال مانیتور را باز کنید. ساعت از زمان حال شروع به شمارش خواهد کرد.
  • دو روش دوم ابتدا ساعت و تاریخ را در دستور وارد کرده و سپس برنامه را آپلود نمایید. سپس دستور را کامنت کرده و مجدد برنامه را آپلود نمایید. ساعت در هر لحظه با ساعت سیستم هماهنگ خواهد بود.
 

 


وسایل مورد نیاز


آردوینو Arduino UNO

ماژول ساعت DS3231

کابل فلت نری به مادگی

 

 

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

 


پروژه و دریافت بن ارسال رایگان


برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکه‌های اجتماعی از جمله آپارات و اینستگرام، با هشتگ‌های دیجی_اسپارک   دانشجوکیت    digispark    daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.

 

 

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

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۸ دیدگاه

  • متوجه نشدم مهندس یکم واضح تر توضیح میدید ببینید الان من با دستور

    float t = dht.redTemperature();

    دارم دما رو دریافت میکنم میخوام این متغیر رو بفرستم داخل ربات چطور این کار رو انجام بدم؟

    به این شکل مینویسم خطا میده

    bot.sendMessage (chat_id,t);

    • با سلام
      کاربر گرامی سوال شما شفاف نیست و کاملا بی ارتباط با موضوع این آموزش می‌باشد. جهت دریافت راهنمایی می‌بایست توضیحات کامل ارائه دهید.

  • سلام
    کتابخانه RTC رو از قسمت محصولات گرفتم ولی رو خط RTC_DS3231 rtc; خطا میده
    ضمنا این پیغام خطا رو میده
    Arduino: 1.8.10 (Windows 8.1), Board: “Arduino/Genuino Uno”

    ARDUINO-saaat:4:1: error: ‘RTC_DS3231’ does not name a type; did you mean ‘DS3231’?

    RTC_DS3231 rtc;

    ^~~~~~~~~~

    DS3231

    D:\ARDUINO-saaat\ARDUINO-saaat.ino: In function ‘void setup()’:

    ARDUINO-saaat:14:4: error: ‘rtc’ was not declared in this scope

    rtc.begin();

    ^~~

    D:\ARDUINO-saaat\ARDUINO-saaat.ino:14:4: note: suggested alternative: ‘getc’

    rtc.begin();

    ^~~

    getc

    D:\ARDUINO-saaat\ARDUINO-saaat.ino: In function ‘void loop()’:

    ARDUINO-saaat:32:18: error: ‘rtc’ was not declared in this scope

    DateTime now = rtc.now();

    ^~~

    D:\ARDUINO-saaat\ARDUINO-saaat.ino:32:18: note: suggested alternative: ‘getc’

    DateTime now = rtc.now();

    ^~~

    getc

    Multiple libraries were found for “Wire.h”
    Used: C:\Program
    Multiple libraries were found for “RTClib.h”
    Used: C:\Users\User\Documents\Arduino\libraries\libraries\RTCLib_by_NeiroN
    exit status 1
    ‘RTC_DS3231’ does not name a type; did you mean ‘DS3231’?

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    که فکر کنم مشکل نصب کتابخانه داره
    لطفا راهنمایی کنید
    متشکرم