DS3231: ساعت و تقویم در زمان واقعی برای آردوینو شما

DS3231

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

DS3231 ماژولی است که به دنبال آن بودید ، و در اینجا هر آنچه برای کنترل آن نیاز دارید را پیدا خواهید کرد و همچنین مثالی از نحوه آن را با آردوینو ادغام کنید با یک مثال عملی ...

DS3231 چیست؟

DS3231

اول از همه ، شما باید بدانید که چه RTC (ساعت واقعی)، یا ساعت واقعی این تراشه ها در بسیاری از برنامه ها بسیار مکرر هستند ، در حقیقت ، رایانه شما یکی از آنها را روی مادربرد شما دارد و همچنین توسط باتری CR2032 همچنین. این یکی است که زمان و پیکربندی را در BIOS / UEFI حفظ می کند و سیستم عامل هنگام بوت شدن از آن استفاده می کند تا به موقع باشد (اگرچه اکنون با اینترنت ، از هماهنگی با سرورها می توان برای دقت بیشتر استفاده کرد ، اما این داستان دیگری است ...).

کاری که RTC انجام می دهد بدست آوردن اندازه گیری زمان است ، به همین سادگی. تفاوت آن با سایر ساعتهای الکترونیکی این است که به سادگی زمان را اندازه گیری کنید، و این کار را با شمردن پالس های سیگنال ساعت ، با دانستن فرکانس و دوره های آن ، انجام می دهد. علاوه بر زمان ، RTC به شما این امکان را می دهد که روزها ، هفته ها ، ماه ها و سال ها را نیز حساب کنید. یعنی تاریخ کامل ...

برای این امکان RTC باید با a همراه باشد کریستال Xtal یا کوارتز که به عنوان تشدیدکننده عمل می کند ، فرکانس ارائه دهنده علاوه بر این ، شما به مدارهای الکترونیکی نیاز دارید که بتوانند تاریخ را در یک حافظه محاسبه و ذخیره کنند. مدارها باید بتوانند ثانیه ها ، دقیقه ها ، ساعت ها ، روزها ، هفته ها ، ماه ها و سال ها را بشمارند.

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

برای پروژه های DIY ، سازندگان معمولاً از دو تراشه رایج RTC استفاده می کنند که DS1307 و DS3231. هر دو توسط ماکسیم (نیمه هادی دالاس سابق) ساخته شده اند و DS3231 از این دو دقیق تر است ، زیرا تحت تأثیر تغییرات درجه حرارت مانند نمونه قبلی نیست. بنابراین ، بسته به دما آنقدر نوسان ندارد و زمان را دقیق تر نگه می دارد.

در بعضی مواقع ، با اختلاف دما قابل توجه ، DS1307 می تواند تا 1 یا 2 دقیقه در روز از فاز خارج شود. چیزی غیر قابل تحمل برای برخی از برنامه ها.

DS3231 به این دلیل نیست که تحت تأثیر تغییرات قرار نمی گیرد ، بلکه دارای سیستم اندازه گیری و جبران دمای داخلی برای اطمینان از دقت 2ppm است که معادل یک اختلاف زمانی حدود 172 میلی ثانیه در روز ، یعنی حداکثر کمی بیشتر از 1 ثانیه در هفته. و در عمل ، آنها معمولاً فقط 1 یا 2 ثانیه در ماه تغییر می کنند.

در مورد راه با RTC ارتباط برقرار کنید DS3131 برای بدست آوردن مقادیر تاریخی که بدست می آورد توسط این کار انجام می شود اتوبوس I2C. و برای تأمین نیرو ، می توانید از 2.3 تا 5.5 ولت برای DS3231 استفاده کنید که تا حدی کمتر از 4.5 تا 5.5 ولت برای DS1307 است ، بنابراین می تواند از نظر انرژی کارآمدتر باشد و باتری را طولانی تر کند.

همچنین ، باید بدانید که این ماژول ها معمولاً دارای a EEPROM AT24C32 اضافی برای ذخیره برخی از سوابق و اندازه گیری های قبلی ، که کاملا عملی است.

برنامه های کاربردی

در مورد برنامه ها ، من قبلاً به مواردی اشاره کردم ، مانند اجرای یک ساعت با آردوینو ، برای ایجاد سیستمی که بر اساس زمان به هر حال ، صرف وقت در وسایلی مانند رایانه های شخصی و بسیاری دیگر از وسایل الکترونیکی و لوازم خانگی که وقت دارند و

همچنین می تواند در استفاده شود پروژه ها برای ایجاد تایمر برای روشنایی ، سیستم های آبیاری ، ثبت اطلاعات و غیره برنامه ها می توانند بیشترین تعداد ...

RTC DS3231 بخرید

ماژول DS3131 ارزان است، و می توانید آن را در برخی از فروشگاه های الکترونیکی تخصصی یا فروشگاه های بزرگ مانند eBay ، AliExpress ، Amazon و غیره پیدا کنید. اگر علاقه مند به داشتن آن هستید ، در اینجا چند توصیه وجود دارد:

ادغام آردوینو DS3231

عکس صفحه Arduino IDE

اگر می خواهید DS3231 خود را با برد Arduino خود ادغام کنید و شروع به ایجاد پروژه های "بهنگام" کنید ، ابتدا باید ارتباطات مناسب را برقرار کنید. برای اینکه بتوانید آن را متصل کنید ، ساده است:

  • پین SLC برد DS3231 باید به A5 مورد نظر شما متصل شود Arduino UNO.
  • SDA DS3231 به A4 آردوینو متصل است.
  • Vcc از ماژول از آردوینو به 5 ولت می رود.
  • GND به GND.
فراموش نکنید که برای استفاده از RTC DS3231 در Arduino IDE خود کتابخانه را نصب کنید در غیر این صورت کد کار نمی کند ...

حالا شما سیستم را متصل کرده اید ، نکته بعدی نوشتن آن است کد منبع طرح برای برنامه ریزی آن. می توانید کدها را اصلاح کرده و متناسب با نیازهای خود تنظیم کنید ، اما می توانید با گرفتن تاریخ از RTC DS3231 متصل به آردوینو شروع کنید:

#include <Wire.h>
#include "RTClib.h"
 
// RTC_DS1307 rtc;
RTC_DS3231 rtc;
 
String daysOfTheWeek[7] = { "Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado" };
String monthsNames[12] = { "Enero", "Febrero", "Marzo", "Abril", "Mayo",  "Junio", "Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre" };
 
void setup() {
   Serial.begin(9600);
   delay(1000); 
 
   if (!rtc.begin()) {
      Serial.println(F("No se encuentra el RTC"));
      while (1);
   }
 
   // Si se ha perdido el suministro eléctrico, fijar fecha y hora
   if (rtc.lostPower()) {
      // Fijar a fecha y hora (poner la de compilación del sketch)
      rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
      
      // Fijar a fecha y hora específica. En este ejemplo el 2021-01-01 a las 00:00:00
      // rtc.adjust(DateTime(2020, 1, 1, 0, 0, 0));
   }
}
//Imprimir completa obtenida la fecha en decimal
void printDate(DateTime date)
{
   Serial.print(date.year(), DEC);
   Serial.print('/');
   Serial.print(date.month(), DEC);
   Serial.print('/');
   Serial.print(date.day(), DEC);
   Serial.print(" (");
   Serial.print(daysOfTheWeek[date.dayOfTheWeek()]);
   Serial.print(") ");
   Serial.print(date.hour(), DEC);
   Serial.print(':');
   Serial.print(date.minute(), DEC);
   Serial.print(':');
   Serial.print(date.second(), DEC);
   Serial.println();
}
 
void loop() {
   // Obtener fecha actual y mostrar por Serial
   DateTime now = rtc.now();
   printDate(now);
 
   delay(3000);    //Espera 3 segundos
}

و به منظور استفاده از تاریخ RTC به برنامه ریزی برخی از کارها، مانند روشن یا خاموش کردن چراغ ها ، برای آبیاری خودکار ، یا برای زنگ هشدار و غیره به یاد داشته باشید که برای اداره دستگاه های ولتاژ بالاتر می توانید از ترانزیستورها یا رله:

#include <Wire.h>
#include "RTClib.h"
 
const int outputPin = LED_BUILTIN;
bool state = false;
 
// RTC_DS1307 rtc;
RTC_DS3231 rtc;
 
void setup() {
   Serial.begin(9600);
   delay(1000);
 
   if (!rtc.begin()) {
      Serial.println(F("Couldn't find RTC"));
      while (1);
   }
 
   if (rtc.lostPower()) {
      rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
   }
}
 
// Se comprueba si está programado el encendido
bool isScheduledON(DateTime date)
{
   int weekDay = date.dayOfTheWeek();
   float hours = date.hour() + date.minute() / 60.0;
 
   // Configuración de horas de 08:30 a 9:30 y de 22:00 a 23:00 (usando decimal)
   bool hourCondition = (hours > 8.50 && hours < 9.50) || (hours > 22.00 && hours < 23.00);
 
   // Configuración del día Lunes, Sábado y Domingo con números (recuerda que en inglés comienza la semana en Domingo=0, Lunes=1,...
   bool dayCondition = (weekDay == 1 || weekDay == 6 || weekDay == 0); 
   if (hourCondition && dayCondition)
   {
      return true;
   }
   return false;
}
 
void loop() {
   DateTime now = rtc.now();
 
   if (state == false && isScheduledON(now))      // Apagado
   {
      digitalWrite(outputPin, HIGH);
      state = true;
      Serial.print("Activado");
   }
   else if (state == true && !isScheduledON(now))  // Encendido
   {
      digitalWrite(outputPin, LOW);
      state = false;
      Serial.print("Desactivado");
   }
 
   delay(3000);
}


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

اولین کسی باشید که نظر

نظر خود را بگذارید

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

*

*

  1. مسئول داده ها: میگل آنخل گاتون
  2. هدف از داده ها: کنترل هرزنامه ، مدیریت نظرات.
  3. مشروعیت: رضایت شما
  4. ارتباط داده ها: داده ها به اشخاص ثالث منتقل نمی شوند مگر با تعهد قانونی.
  5. ذخیره سازی داده ها: پایگاه داده به میزبانی شبکه های Occentus (EU)
  6. حقوق: در هر زمان می توانید اطلاعات خود را محدود ، بازیابی و حذف کنید.