آموزش, پروژه, پروژه آردوینو, توصیه شده, مقاله های سیسوگ

راه‌اندازی ماژول DS3231 با آردوینو + لینک دانلود کتابخانه DS3231.h

DS3231 Madule with Arduino

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

اما مطمئنا اگر در پروژه هایتان با موارد بالا برخورد کرده باشید. حتما با سوالاتی همچون موارد زیر برخورد کرده اید.

  • از چه آیسی باید استفاده کنیم؟ که قابلیت دریافت همزمان تاریخ، زمان و دما را داشته باشد؟
  • چطور باید آن‌را راه‌اندازی کنیم؟

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

از چه آیسی باید استفاده کنیم؟ که قابلیت دریافت همزمان تاریخ، زمان و دما را داشته باشد؟

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

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

حال مرحله بعد نیاز به بررسی دیتاشیت این ماژول داریم. که ببینیم قابلیت هایی که مدنظر ما است را دارد یا خیر؟

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

  • تنظیم سال
  • تنظیم ماه
  • تنظیم روز
  • تنظیم روزهای هفته
  • تنظیم ساعت
  • تنظیم دقیقه
  • تنظیم ثانیه
  • داشتن یک سنسور داخلی که قابلیت اندازه گیری دما از -40 تا 85 درجه سانتی‌گراد را دارد.

خب پس از اینکه موفق به انتخاب آیسی موردنظر شدیم. باید آن‌را راه‌اندازی کنیم.

نحوه راه‌اندازی ماژول DS3231

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

نحوه صحیح دیتاشیت خوانی چیست؟

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

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

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

شماتیک DS3231

دومین مرحله یادگیری پروتکل I2C است که دقیقا چه عملیاتی را باید جهت برقراری ارتباط با میکروکنترلر انجام داد.

پروتکل I2C چیست؟

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

آدرس دهی I2C

 

پروتکل I2C را با پین های زیر می‌شناسند.

  • (SDA (Serial Data: برای ارسال و دریافت داده بین master و slave
  • (SCL (Serial Clock: خطی که حامل سیگنال کلاک می باشد.

نحوه عملکرد پروتکل I2C

در I2C داده ها به صورت پیام هایی فرستاده می‌شود که خود این پیام ها خود به چند بخش تقسیم می شوند. هر پیام شامل یک بخش آدرس است، که همان آدرس باینری مربوط به slave موردنظر است. یک یا دو بخش مربوط به دیتا هم در پیام های ارسالی نیز وجود دارد. پیام همچنین شامل شرایط اولیه و پایانی(دستور شروع و پایان پروتکل)، بیت های read/write و بیت های ACK / NACK بین هربخش از پیام است.

حال پس از اینکه یک دید کلی نسبت به پروتکل پیدا کردیم نیاز است که دستورات ماژول DS3231 را مطالعه کنیم و ببینیم که هر دستور دقیقا چه کاربردی دارد و دقیقا کجا مورد استفاده قرار می‌گیرد.

رجیسترهای DS3231

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

در واقع روندی که توضیح داده شد یک حالت کاملا کلی از خواندن دیتاشیت بود که در ادامه نحوه کدنویسی ماژول DS3231 را مورد مطالعه قرار می‌دهیم.

کدنویسی ماژول DS3231

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

کتابخانه نوشته شده ماژول DS3231

در واقع یکی از مزیت هایی که می‌تواند بررسی کتابخانه ها داشته باشد. نحوه اصولی کدنویسی است که خود می‌تواند بسیار در کدنویسی موثر واقع شود.

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

راه‌اندازی ماژول DS3231 با آردوینو

خب این بخش به دو قسمت شماتیک و کدنویسی تقسیم می‌شود.

شماتیک راه‌اندازی ماژول DS3231 با آردوینو

شماتیک برد آردوینو با DS3231

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

ابتدا باید کتابخانه مربوطه را نصب کنیم، که برای اینکار باید طبق شکل‌هایی که در ادامه می‌گذاریم عمل نمایید.

نصب کتابخانه در آردوینو

نصب کتابخانه در آردوینو

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

کدنویسی DS3231

خب همونطوری که می‌بینید این کتابخانه دارای 4 نمونه کد راه‌انداز است که می‌خواهیم کد NOW را امتحان و در نهایت روی سریال مانیتور اطلاعات را نمایش دهیم.

کد مثال NOW

در نهایت اگر تمامی مراحلی که توضیح دادیمبه درستی انجام شده باشد باید خروجی سربال مانیتور مطابق اطلاعاتی که در ادامه قرار می‌دهیم، باشد.

امیدوارم که این آموزش هم برای شما مفید واقع شده باشد.

 

 

 

 

author-avatar

درباره BLO OM

«السَّلَامُ عَلَیْکَ یَا أَبَا عَبْدِ اللَّهِ، السَّلَامُ عَلَیْکَ وَ رَحْمَهُ اللَّهِ وَ بَرَکَاتُهُ».

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

14 دیدگاه در “راه‌اندازی ماژول DS3231 با آردوینو + لینک دانلود کتابخانه DS3231.h

  1. Avatar for امیرحسین آقاجانی امیرحسین آقاجانی گفت:

    ممنون از آموزش خوب و مفیدتون..
    چطوری از حالت 12 ساعته به 24 ساعته یا برعکس تنظیم کنیم؟
    با سپاس

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز – دقیقا صفحه ۱۲ دیتاشیت این مطلب رو نوشته
      Bit 6 of the hours register is defined as the 12- or 24-hour mode select bit
      در واقع شما ست و ریست بیت ۶ ام از ریجیستر ۲ حالت های ۱۲ ساعته یا ۲۴ ساعته رو انتخاب کنید.

      1. Avatar for امیرحسین آقاجانی امیرحسین آقاجانی گفت:

        ممنون از پاسختون..
        اما من متوجه نشدم..
        امکانش هست کمی بیشتر توضیح بدین؟
        خیلی ممنون میشم.

        1. Avatar for زئوس Zeus زئوس Zeus گفت:

          دوست من اگر دیتاشیت رو باز میکردید و اون صفحه ای که اشاره کردم و مطالعه می کردید مشکلتون زودتر حل میشد.
          ببینید یه بیت توی یکی از رجیسترها وجود داره که با یک کردن اون بیت به آیسی میگید چطور زمان رو محاسبه (۱۲ ساعته یا ۲۴ ساعته )کنه به همین سادگی

          1. Avatar for امیرحسین آقاجانی امیرحسین آقاجانی گفت:

            با تشکر،
            اما من چون رشتم الکترونیک نیست، خیلی سر در نمیارم..

  2. Avatar for محمد محمد گفت:

    باسلام و تشکر از توضیحات خوبتون
    در صورت امکان نحوه تبدیل تاریخ به شمسی هم به برنامتون اضافه کنید .

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      ممنونم دوست عزیز
      پیشنهاد بدی نیست بررسی میکنیم

      1. Avatar for امیرحسین آقاجانی امیرحسین آقاجانی گفت:

        امکان‌پذیر هست؟

        1. Avatar for Zeus Zeus گفت:

          امم، امکان پذیر که هست ولی بذارید بررسی کنم

  3. Avatar for سینا سینا گفت:

    سلام سوالی برام پیش اومده که تو کامنت ها و دیتا شیت هم نتونستم پیدا کنم جوابش رو (البته ممکنه هم بی دقت خونده باشم). سوال این هست که برای ساعت این ماژول (نه پروتکول I2C) نیازی به کلاک خارجی (کریستال های 32 کیلو) وجود داره یا نه؟! اگه کریستال داخلی داره آیا به اندازه کافی دقیق هست و اگر نیست تا چه حد خطا ایجاد میکنه؟!

    1. Avatar photo BLO OM گفت:

      سلام دوست عزیزم

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

      1. Avatar for سینا سینا گفت:

        سلام! تشکر بسیار از پاسخگوییتون!

  4. Avatar for َAmir َAmir گفت:

    سلام
    ماژول جالب و کاربردی ای معرفی کردید…
    ممنون .

    1. Avatar photo BLO OM گفت:

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

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

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