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

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

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

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

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

 

 

 

 


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

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

 
BLO OM

درباره BLO OM

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

نوشته های مشابه

پاسخی بگذارید

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

5 دیدگاه

  1. Avatar سینا گفت:

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

    1. BLO OM BLO OM گفت:

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

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

      1. Avatar سینا گفت:

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

  2. Avatar َAmir گفت:

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

    1. BLO OM BLO OM گفت:

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