آموزش راه اندازی ماژول ساعت فوق دقیق DS3231 با آردوینو

فهرست مطالب

ویژگی های ماژول ساعت دقیق DS3231

ماژول ساعت دقیق DS3231 بسیار دقیق و دارای توان مصرفی پایین می‌­باشد. به کمک این ماژول می­‌توان اطلاعات ثانیه، دقیقه، ساعت، روز، تاریخ، ماه و سال را به دقت نگهداری کرد. تاریخ در انتهای هر ماه بر اساس 29، 30 یا 31 روزه بودن ماه و همچنین در پایان سال بر اساس کبیسه بودن یا نبودن، تنظیم می­شود. همچنین این ماژول را می­توان در دو فرمت 12ساعته و 24ساعته تنظیم کرد.

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

معرفی پایه ها (Pinout) ماژول ساعت فوق دقیق DS3231

یک نوع ماژول ساعت فوق دقیق DS3231 دارای 6 پایه به شرح زیر است:

  • INT: خروجی وقفه
  • COT: خروجی کلاک
  • SCL: ورودی سریال Serial Clock Input برای پروتکل I2C
  • SDA: ورودی داده Serial Data Input/Output برای پروتکل I2C
  • VCC: تغذیه ماژول –5 ولت
  • GND: زمین

پین اوت (Pinout) این ماژول را می توانید در تصویر زیر مشاهده کنید.

نوع دیگر ماژول ساعت دقیق DS3231 دارای 5 پایه به شرح زیر است:

  • VCC: تغذیه ماژول – 5 ولت
  • SCL: ورودی سریال Serial Clock Input برای پروتکل I2C
  • SDA: ورودی داده Serial Data Input/Output برای پروتکل I2C
  • NC: به جایی متصل نمی­شود
  • GND: زمین

پین اوت (Pinout) این ماژول را می توانید در تصویر زیر مشاهده کنید.

لوازمی که به آن احتیاج دارید

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

آردوینو UNO R3 × 1
ماژول ساعت فوق دقیق DS3231 × 1
ماژول ساعت دقیق DS3231 مناسب برای رسپری پای و آردوینو × 1
سیم جامپر × 1

نرم افزارهای مورد نیاز

آردوینو IDE

راه اندازی ماژول ساعت دقیق DS3231

گام اول: سیم بندی

مطابق یکی از دو مدار زیر، ماژول را به آردوینو وصل کنید.

گام دوم: نصب کتابخانه

از این قسمت به بعد، مراحل برای هر دو نوع ماژول یکسان است. کتابخانه DS3231 را از لینک زیر دانلود کنید. سپس به قسمت Include Library رفته و کتابخانه را نصب کنید.

توجه

اگر برای نصب کتابخانه نیاز به راهنمایی بیشتر دارید، به اینجا مراجعه کنید.

گام سوم: کد

کد زیر را روی برد آردوینو آپلود کنید. پس از آپلود کد، پنجره ی Serial Monitor را باز کنید.

   /*  
modified on Nov 22, 2020
Modified by MehranMaleki from Arduino Examples
Home
*/ #include <Wire.h> #include <ds3231.h> struct ts t; void setup() { Serial.begin(9600); Wire.begin(); DS3231_init(DS3231_CONTROL_INTCN); /*---------------------------------------------------------------------------- In order to synchronise your clock module, insert timetable values below ! ----------------------------------------------------------------------------*/ t.hour=3; t.min=0; t.sec=0; t.mday=14; t.mon=11; t.year=2020; DS3231_set(t); } void loop() { DS3231_get(&t); Serial.print("Date : "); Serial.print(t.mday); Serial.print("/"); Serial.print(t.mon); Serial.print("/"); Serial.print(t.year); Serial.print("\t Hour : "); Serial.print(t.hour); Serial.print(":"); Serial.print(t.min); Serial.print("."); Serial.println(t.sec); delay(1000); }

در کد بالا، ابتدا اطلاعات ثانیه، دقیقه، ساعت، روز، ماه و سال به عنوان نقطه شروع به ماژول داده می‌­شود. سپس ماژول شروع به کار کرده و هر ثانیه آپدیت می‌­شود. در ادامه، در هر ثانیه اطلاعات از ماژول گرفته شده و در پنجره ­ی Serial Monitor نمایش داده می­‌شود.

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

آموزش های مشابه

Comments (12)

  • هاتف Reply

    اگه اردوینو خاموش بشه و مجدد روشن بشه تایم به حالت های که ما تعریف کردیم برمیگرده و از نو شروع به شمارش میکنه؟!

    نوامبر 1, 2021 at 3:21 ق.ظ
    • مهران ملکی Reply

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

      نوامبر 1, 2021 at 9:41 ق.ظ
  • محسن Reply

    سلام و خسته نباشید.
    باتری هم داخلش گذاشتم ولی ساعت را از همون مقدار اولیه بارگذاری میکنه!

    ژانویه 18, 2022 at 8:57 ق.ظ
    • مهران ملکی Reply

      سلام.
      هر بار که Serial Monitor را باز میکنید، عملا مثل این هست که برد آردوینو رو ریست کرده باشید. در نتیجه ساعت دوباره از مقدار اولیه بارگذاری میشه. در عمل که با باز و بسته کردن Serial Monitor سروکار ندارید، با گذاشتن باتری، دیگه ماژول ریست نمیشه و زمان رو موقعی که تغذیه خارجی هم قطع میشه نگه میداره.

      ژانویه 18, 2022 at 9:32 ق.ظ
  • محمدرضا گرامی Reply

    سلام میشه تنظیم کرد که در فلان تاریخ یه دستوری را اجرا کند؟

    فوریه 7, 2022 at 5:04 ب.ظ
    • مهران ملکی Reply

      سلام.
      بله، میشه این کار رو انجام داد. با گذاشتن یه جمله شرطی if تو کد و چک کردن مداوم زمان، میتونید تنظیم کنید که وقتی به یه زمان مورد نظر رسید یه دستوری رو اجرا کنه.

      فوریه 8, 2022 at 8:58 ق.ظ
  • علی Reply

    کتابخانه و توابع را باید توضیح دهید که متوجه بشن

    می 7, 2022 at 6:44 ق.ظ
    • مهران ملکی Reply

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

      می 14, 2022 at 10:51 ب.ظ
  • مجید Reply

    سلام من نصب کردم و برنامه اجرا شد ولی همش یک ساعت رو نشون میده و هی تکرار میکنه ساعت جلو نمیره اصن چیکار کنم

    می 25, 2022 at 10:13 ب.ظ
    • مهران ملکی Reply

      سلام.
      به احتمال زیاد مشکل نمیتونه از نحوه اتصالتون باشه چون در این صورت در Serial Monitor هیچ ساعتی رو نشون نمیداد. با توجه به این موضوع، امکانش هست که مشکل از خود ماژول ساعت باشه.

      ژوئن 10, 2022 at 12:19 ب.ظ
  • علیرضا Reply

    سلام.وقتتون بخیر.ممنون از سایت خوبتون
    میخواستم ببینم اگه صدم ثانیه رو هم بخوام نمایش بده باید چه قسمتهای کد رو تغییر بدم؟ البته با وجود اینکه توی دیتاشیت آی سی گفته امکان نمایش داره

    ژانویه 4, 2023 at 11:20 ب.ظ
    • علی عبدالملکی Reply

      سلام وقت شما بخیر
      ممنون از توجهتون
      ببینید آی سی DS3231 نمیتونه زمان کمتر از 1 ثانیه رو اندازه گیری کنه، شما برای این کار میتونید از پایه خروجی ماژول که موج مربعی با فرکانس های مختلف تولید میکنه و capture کردن اون توسط وقفه آردینواستفاده کنی و زمان 10 میلی ثانیه رو بسازی
      حالا برای این کار شما باید از طریق برد ، فرکانس موج مربعی خروجی ماژول رو ست کنی که طبق دیتا شیت فرکانس های مختلفی داره از 1 هرتز تا 1کیلوهرتز ، که شما اگر روی 1 کیلوهرتز ست کنی میتونی زمان با رزولوشن 1 میلی ثانیه تنظیم کنی

      فوریه 27, 2023 at 4:44 ب.ظ

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

نشانی ایمیل شما منتشر نخواهد شد.