ماژول ساعت فوق دقیق DS3231M با رابط I2C
ماژول ساعت فوق دقیق DS3231M
ماژول DS3231M یک ماژول ساعت حرفهای با دقت بالا است که برای برنامههایی که نیاز به زمان دقیق دارند، استفاده میشود. این ماژول دارای یک ساعت داخلی با دقت بالا و توانایی نگهداری تا یک سال در صورت از کار افتادن باتری است. همچنین، ماژول DS3231M دارای ویژگیهایی مانند ساعت، دقیقه، ثانیه، تاریخ، روز هفته، و قابلیت تنظیم زمان تابستانی و ساعت جهانی است.از مزایای استفاده از ماژول DS3231M میتوان به دقت بالای آن، توانایی نگهداری تا یک سال در صورت قطع برق، اندازه کوچک و طراحی ساده و مقرون به صرفه آن اشاره کرد. این ماژول در برنامههایی مانند ردیابی زمان، سیستمهای کنترلی صنعتی، سیستمهای امنیتی، سیستمهای خودرویی و بسیاری از برنامههای الکترونیکی دیگر استفاده میشود.
مشخصات فنی ماژول DS3231M
- ولتاژ کاری: ۳٫۳ تا ۵ ولت
- رزولوشن زمانی: ۱ ثانیه
- دمای کاری: -۴۰ تا ۸۵ درجه سانتیگراد
- دقت زماندهی: حداکثر ۲ دقیقه در سال
- پشتیبانی از تقویم شمسی و میلادی
- امکان تنظیم ساعت به صورت دستی
- حافظه EEPROM داخلی برای ذخیره سازی اطلاعات زمان و تاریخ در صورت قطع برق
- قابلیت اتصال به میکروکنترلر و بردهای الکترونیکی با پروتکل I2C
پایههای PinOut ماژول DS3231M ساعت فوق دقیق
VCC: این پایه به ولتاژ منبع تغذیه وصل میشود. معمولاً ولتاژ مورد استفاده برای این ماژول ۳٫۳ ولت است.
GND: این پایه به زمین وصل میشود.
SDA: این پایه برای ارتباط با میکروکنترلر یا برد الکترونیکی به پایهی دادهی سریال (SDA) وصل میشود. این پایه برای ارسال و دریافت دادهها استفاده میشود.
SCL: این پایه برای ارتباط با میکروکنترلر یا برد الکترونیکی به پایهی ساعت (SCL) وصل میشود. این پایه برای ارسال سیگنالهای ساعت استفاده میشود.
SQW/OUT: این پایه برای خروجی سیگنال مربوط به مربع خروجی (SQW/OUT) میباشد. میتوان با تغییر تنظیمات، فرکانس و فرم سیگنال خروجی را تغییر داد.
32K: این پایه به عنوان خروجی یک سیگنال مربوط به یک کریستال با فرکانس 32.768 کیلوهرتز مورد استفاده قرار میگیرد. این سیگنال معمولاً برای تولید سیگنالهای ساعت و کار با ماژولهای دیگر مورد استفاده قرار میگیرد. برای استفاده از این پایه، معمولاً باید یک مقاومت با ارزش 1 مگااهم به زمین متصل شود. به عنوان حالت پیشفرض، این پایه از طریق پین SQW/OUT در ماژول DS3231 قابل تنظیم است.
به همراه ماژول DC3231M چه اقلامی باید خریداری شود؟
برد میکروکنترلر از جمله برد Arduino، برد ESP32، برد رزبری پای پیکو یا هر بردی که دارای رابط I2c باشد.
یک کریستال 32.768 کیلوهرتز و یک مقاومت با ارزش 1 مگااهم برای استفاده از پایه 32K، در صورت استفاده از ماژول DS3231 نیاز خواهید داشت.
منبع تغذیه با ولتاژ مناسب برای تغذیه ماژول RTC DS3231M و میکروکنترلر، معمولاً 3.3 ولت یا 5 ولت است.
لازم به ذکر است که در بعضی از موارد، برای اتصال ماژول DS3231M به میکروکنترلر، از ماژولهای تبدیل مانند ماژول تبدیل منطق سطح پایین به منطق سطح بالا (Level shifter) استفاده میشود تا سطح ولتاژ متناسب با دستگاههای مختلف میکروکنترلر ایجاد شود.
مزیتهای ماژول ساعت DS3231M
- دقت بالا: ماژول DS3231M دارای دقت بالایی است که تا یک دقیقه در سال میتواند خطا داشته باشد. این دقت بالا از آن مهم است که در برنامههایی که نیاز به زمان دقیق دارند مانند برنامههای کنترلی، ردیابی زمان و سایر برنامههای مشابه، بسیار مهم است.
- نگهداری زمان در صورت از کار افتادن باتری: DS3231M دارای باتری داخلی است که در صورت قطع برق، امکان نگهداری زمان و تاریخ وجود دارد تا برای دستگاههایی که باید به صورت مداوم زمان دقیق داشته باشند، همواره این اطلاعات در دسترس باشد.
- سازگاری با میکروکنترلرهای مختلف: DS3231M سازگار با انواع میکروکنترلرها است و به راحتی میتوان آن را به میکروکنترلرهای مختلف متصل کرد.
- اندازه کوچک: DS3231M دارای اندازه کوچکی است و به راحتی در بردهای الکترونیکی قرار میگیرد.
- مصرف کم: DS3231M مصرف بسیار کمی دارد که این امر برای برنامههایی که باید مداوم در حال اجرا باشند، بسیار مهم است.
راه اندازی ماژول DC3231M با آردوینو
برای راه اندازی ماژول RTC DS3231M با آردوینو، می توانید مراحل زیر را دنبال کنید. اتصال مدار: ابتدا، پایههای VCC و GND ماژول RTC DS3231M را به منبع تغذیه متصل کنید. سپس پایه SDA ماژول را به پایه SDA آردوینو و پایه SCL را به پایه SCL آردوینو متصل کنید. کتابخانه RTClib: برای استفاده از ماژول RTC DS3231M با آردوینو، باید کتابخانه RTClib را به آردوینو اضافه کنید. این کتابخانه را می توانید از آدرس زیر دانلود کنید: https://github.com/adafruit/RTClib کد برنامه: حالا می توانید کد زیر را در برنامه آردوینو خود قرار دهید تا ماژول RTC DS3231M را با استفاده از آردوینو کنترل کنید.
#include <Wire.h>
#include "RTClib.h"
RTC_DS3231 rtc;
void setup () {
Serial.begin(9600);
Wire.begin();
rtc.begin();
}
void loop () {
DateTime now = rtc.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
delay(1000);
}
این برنامه ابتدا کتابخانه Wire را اضافه کرده و سپس کتابخانه RTClib را فراخوانی می کند. سپس در تابع setup، ارتباط با ماژول RTC برقرار شده و در تابع loop، تاریخ و زمان فعلی را از ماژول RTC خوانده و آن را به کامپیوتر متصل به آردوینو ارسال می کند. بارگذاری برنامه: حالا می توانید برنامه را بر روی برد آردوینو خود بارگذاری کنید و تاریخ و زمان را در ماژول RTC DS3231M تنظیم کنید.
راه اندازی ماژول DS3231M با میکروپایتون
لطفا توجه داشته باشید که برای اجرای این کد باید کتابخانه smbus2 را نصب کنید. برای نصب این کتابخانه میتوانید از دستور pip install smbus2 در ترمینال استفاده کنید. سپس کد زیر را میتوانید برای راهاندازی ماژول DS3231M با استفاده از میکروپایتون استفاده کنید.
import smbus2
import time
bus = smbus2.SMBus(1) # تعریف شیء SMBus با استفاده از پورت 1
address = 0x68 # آدرس ماژول
# تعیین ساعت و تاریخ
# شماره روز در هفته: 0-یک شنبه، 1-دو شنبه و غیره
second = 0x00
minute = 0x45
hour = 0x12
day = 0x05
date = 0x09
month = 0x05
year = 0x23
# تنظیم ساعت و تاریخ
bus.write_byte_data(address, 0x00, second) # ثانیه
bus.write_byte_data(address, 0x01, minute) # دقیقه
bus.write_byte_data(address, 0x02, hour) # ساعت
bus.write_byte_data(address, 0x03, day) # روز در هفته
bus.write_byte_data(address, 0x04, date) # تاریخ
bus.write_byte_data(address, 0x05, month) # ماه
bus.write_byte_data(address, 0x06, year) # سال
# خواندن ساعت و تاریخ
while True:
# خواندن ساعت و تاریخ و چاپ آنها در کنسول
# با توجه به نحوه پیادهسازی DS3231M، دادههایی که از پایه 0x11 به بعد خوانده میشوند، اطلاعات دما هستند و ما برای گرفتن ساعت و تاریخ از پایههای 0x00 تا 0x06 استفاده میکنیم.
second = bus.read_byte_data(address, 0x00)
minute = bus.read_byte_data(address, 0x01)
hour = bus.read_byte_data(address, 0x02)
day = bus.read_byte_data(address, 0x03)
date = bus.read_byte_data(address, 0x04)
month = bus.read_byte_data(address, 0x05)
year = bus.read_byte_data(address, 0x06)
print(f"{
در چه صورتی بایستی از کریستال به همراه Ds3231 استفاده کنیم؟
استفاده از کریستال جداگانه برای RTC DS3231 لزوماً نیازی به داشتن ندارد، اما برای بعضی از پروژهها ممکن است نیاز به کریستال جداگانه باشد. به طور کلی، کریستالهای جداگانه برای پروژههایی مفیدند که نیاز به دقت بالاتری در ساعت و توابع زمانی دارند. به عنوان مثال، در برخی پروژههای ارتباطی، میتوان از کریستال جداگانه برای ایجاد سیگنالهای با دقت بالاتری استفاده کرد. همچنین در پروژههایی که نیاز به دقت زمانی در حدود 1 ثانیه دارند، استفاده از کریستالهای جداگانه معمولاً ضروری است.
توسط همین ماژول هم میتوانید اقدام به اجرای درخواستتان کنید. البته اگر فقط بخواهید یک سلول باتری لیتیومی را مدیریت شارژ کنید، همان گزینه ماژول TP4056 مناسب خواهد بود.
امکان راه اندازی چند سنسور DHT با ESP8266 با استفاده از MicroPython وجود دارد. سنسورهای DHT با پروتکل دیجیتال و از طریق پایههای GPIO قابل اتصال به میکروکنترلرها هستند.
برای ساخت یک سیستم کنترل دما با برد میکروکنترلر ESP32، به موارد زیر نیاز دارید:
یک برد میکروکنترلر ESP32
یک سنسور دما مثل DHT DS18B20
یک المان سرد کننده
با استفاده از کتابخانه DHT.h، میتوانید از سنسور دما برای خواندن دمای محیط استفاده کنید. سپس، میتوانید از این دما برای کنترل المان گرمایشی یا سرمایشی استفاده کنید.
در خصوص برنامه نویسی از کتابخانه DHT و در صورت نیاز کتابخانه وای فای برای ارسال دادهها به پلتفرم IoT باید استفاده کنید.