DS3231: သင်၏ Arduino အတွက်အချိန်နှင့်ပြက္ခဒိန်

DS3231

အချို့သောစီမံကိန်းများတွင်အချိန်၊ အချိန်၊ နေ့စွဲတို့ကိုသက်သေပြရန်လိုအပ်သည်။ အချိန်ပေါ် မူတည်၍ အချို့သောလုပ်ဆောင်မှုများကိုလုပ်ဆောင်ရန်၊ ဖြစ်ရပ်များသို့မဟုတ်မှတ်ပုံတင်ခြင်းပြက္ခဒိန်ကိုထိန်းသိမ်းရန်၊ စနစ်အတွင်းရှိအချိန်ကိုစောင့်ရှောက်ရန်သို့မဟုတ်ဒစ်ဂျစ်တယ်နာရီကိုဖန်တီးရန်လိုအပ်ခြင်းကြောင့်ဖြစ်စေ Arduino နှင့်အတူ။ နှင့် အဆိုပါ DS3231 မင်းနောက်တစ်ခုရနိုင်တယ် အစိတ်အပိုင်းများ ကျနော်တို့စာရင်းထဲသို့ထည့်ပါ။

DS3231 သည်သင်ရှာဖွေနေသည့် module တစ်ခုဖြစ်သည်။ ဤနေရာတွင်၎င်းကိုသင်ထိန်းချုပ်ရန်သင်လိုအပ်သည့်အရာအားလုံးကိုတွေ့လိမ့်မည်။ Arduino နဲ့ပေါင်းစပ်ပါ လက်တွေ့ဥပမာတစ်ခုဖြင့် ...

DS3231 ဆိုတာဘာလဲ။

DS3231

ပထမ ဦး စွာသင်ဘာသိသင့်သလဲ RTC (အချိန်မှန်နာရီ)သို့မဟုတ်အချိန်မှန်နာရီ။ ထိုချစ်ပ်များကိုများစွာသော application များတွင်မကြာခဏတွေ့လေ့ရှိသည်။ အမှန်မှာသင်၏ PC တွင်သင်၏ motherboard တစ်ခုသည်သင်၏ motherboard တွင်ရှိပြီး၎င်းသည်လည်း CR2032 ဘက်ထရီ ဒါ့အပြင်။ ၎င်းသည် BIOS / UEFI အတွင်းရှိအချိန်နှင့်ဖွဲ့စည်းမှုကိုထိန်းသိမ်းထားသည်။ ၎င်းသည်အချိန်မီဖွင့်သောအခါ operating system က၎င်းကိုယူသည် (ယခုအင်တာနက်ဖြင့်သော်လည်းဆာဗာများနှင့်ထပ်တူပြုခြင်းကိုပိုမိုတိကျစွာအသုံးပြုနိုင်သည်။ နောက်ထပ်ဇာတ်လမ်းတစ်ပုဒ် ... ) ။

RTC လုပ်တဲ့အရာကအချိန်တိုင်းတာမှု၊ ရိုးရိုးလေးပဲ။ အခြားအီလက်ထရွန်နစ်နာရီများမှကွာခြားချက်မှာ၎င်းတို့သည်ရိုးရိုးရှင်းရှင်းဖြစ်သည် အချိန်ကိုတိုင်းတာ, ထိုသို့ကြိမ်နှုန်းနှင့်ကာလကိုသိ, နာရီ signal ကိုသွေးခုန်နှုန်းရေတွက်ခြင်းဖြင့်အဲဒီလို။ ထိုအချိန်အပြင် RTC ကလည်းသင့်အားရက်များ၊ ရက်သတ္တပတ်များ၊ လများနှင့်နှစ်များကိုစာရင်းပြုစုရန်လည်းခွင့်ပြုသည်။ ဆိုလိုသည်မှာနေ့စွဲအပြည့်အစုံ ...

ယင်းသို့ဖြစ်ရန် RTC နှင့်အတူလိုက်ပါရမည် Xtal သို့မဟုတ်လင်းကျောက်ကြည်လင် သောကြိမ်နှုန်းကိုထောက်ပံ့သောတစ် ဦး ပဲ့တင်ရိုက်ခတ်မှု, ပြုမူလိမ့်မည်။ ထို့အပြင်သင်မှတ်ဉာဏ်ထဲရှိရက်စွဲကိုရေတွက်။ သိုလှောင်နိုင်သည့်အီလက်ထရောနစ်တိုက်နယ်လိုအပ်သည်။ မိနစ်၊ နာရီ၊ ရက်၊ ရက်၊ လ၊ နှစ်တို့ကိုရေတွက်နိုင်ရမည်။

ESA မှတ်ဥာဏ်ကမတည်ငြိမ်ဘူးထို့ကြောင့်သူသည်အမြဲတမ်းပါဝါရှိရန်ဘက်ထရီလိုအပ်သည်။ သင့်မှာဘက်ထရီမရှိရင်ဒါမှမဟုတ်ကုန်သွားရင်ဖျက်ပစ်လိမ့်မယ်။ ဒါဆိုရင်ဘက္ထရီကုန်သွားရင် PC တွေဘာဖြစ်သွားလဲ၊ သူတို့ကအချိန်မမှန်ပါဘူး။ အကယ်၍ သင် PC ကိုဖွင့်နေစဉ်၎င်းကို configure လုပ်ထားပါက RTC powered ဖြစ်သောကြောင့်အချိန်ကာလအတိုင်းအတာတစ်ခုကျန်လိမ့်မည်၊ သို့သော်၎င်းသည်ဘက်ထရီလိုအပ်ချိန်တွင်၎င်းသည် off လုပ်နေစဉ်အတွင်းဖြစ်သည်။

DIY စီမံကိန်းများအတွက်ထုတ်လုပ်သူများသည်များသောအားဖြင့် RTC ချစ်ပ်နှစ်ခုသုံးလေ့ရှိသည် DS1307 နှင့် DS3231။ နှစ်ခုလုံးကို Maxim (ယခင် Dallas Semiconductor) မှထုတ်လုပ်ခဲ့ပြီး DS3231 သည်အပူချိန်ပြောင်းလဲမှုနှင့်သက်ဆိုင်ခြင်းမရှိသကဲ့သို့၎င်းနှစ်ခုစလုံး၏ ပို၍ တိကျသည်။ ထို့ကြောင့်အပူချိန်ပေါ် မူတည်၍ ၎င်းကိုအတက်အကျမပြ သ၍ အချိန်ကို ပို၍ တိတိကျကျထိန်းသိမ်းထားသည်။

တစ်ခါတစ်ရံတွင်သိသာသောအပူချိန်ကွာခြားမှုများနှင့်အတူ DS1307 သည်တစ်နေ့လျှင် ၁ မိနစ်မှ ၂ မိနစ်ခန့်အထိနောက်ကျကျန်ခဲ့နိုင်သည်။ တချို့ application များအတွက်သည်းမခံနိုင်သောအရာတစ်ခုခု။

DS3231 သည်၎င်းကိုအပြောင်းအလဲများကမထိခိုက်စေခြင်းမဟုတ်ပါ၊ ၎င်းတွင် 2ppm ၏တိကျမှုသေချာစေရန်အတွက်အပူချိန်တိုင်းတာခြင်းနှင့်လျော်ကြေးပေးခြင်းစနစ်များပါ ၀ င်သည်။ အချိန် lag တစ်ရက်လျှင် ၁၇၂ မီလီယံခန့်ရှိပြီးတစ်ပါတ်လျှင် ၁ စက္ကန့်ထက်ပိုနည်းသည်။ လက်တွေ့တွင်၎င်းတို့သည်တစ်လလျှင် ၁ စက္ကန့်မှ ၂ စက္ကန့်သာကွာသည်။

လမ်းကို RTC နှင့်ဆက်သွယ်ပါ DS3131 ရရှိသောရက်စွဲတန်ဖိုးကိုရရှိရန်ပြုလုပ်သည် I2C ဘတ်စ်ကား။ စွမ်းအင်အတွက် DS2.3 အတွက် 5.5 to 3231v ကိုသုံးနိုင်သည်။ DS4.5 အတွက် ၄.၅ မှ ၅.၅v ထက်အနည်းငယ်နိမ့်သောကြောင့်၎င်းသည်စွမ်းအင်ပိုမိုထိရောက်ပြီးဘက်ထရီကိုကြာရှည်ခံစေနိုင်သည်။

ဒါ့အပြင်သင်ဒီ module တွေများသောအားဖြင့်ရှိသည်သောသင်သိသင့်ပါတယ် EEPROM အပိုဆောင်း AT24C32 အတော်လေးလက်တွေ့ကျသောအချို့မှတ်တမ်းများနှင့်ယခင်တိုင်းတာသိုလှောင်ရန်။

applications များ

လျှောက်လွှာများအနေဖြင့် Arduino နှင့်အတူနာရီတစ်ခုကိုအကောင်အထည်ဖော်ရန်၊ အခြေခံအပေါ် အခြေခံ၍ ဆောင်ရွက်သောစနစ်တစ်ခုဖန်တီးရန်အချို့ကိုဖော်ပြပြီးပြီ။ အချိန် မည်သို့ပင်ဖြစ်စေ၊ ထိုကဲ့သို့သောကွန်ပျူတာများနှင့်အချိန်ရှိသည့်အခြားအီလက်ထရွန်နစ်ပစ္စည်းကိရိယာများစသည်တို့ကဲ့သို့သောပစ္စည်းကိရိယာများပေါ်တွင်အချိန်ကိုသိမ်းထားရန်။

တွင်လည်းသုံးနိုင်သည် စီမံကိန်းများ အလင်းရောင်၊ ဆည်မြောင်းစနစ်များ၊ datalogger စသည်တို့အတွက်အချိန်ဇယားများကိုဖန်တီးရန်။ အပလီကေးရှင်းသည်များစွာသော ... ဖြစ်နိုင်သည်

တစ် ဦး RTC DS3231 ကိုဝယ်ပါ

အဆိုပါ module တစ်ခု DS3131 စျေးပေါသည်, ၎င်းကို eBay, AliExpress, Amazon စသည့်အထူးအီလက်ထရွန်နစ်ဆိုင်များသို့မဟုတ်စတိုးဆိုင်ကြီးများတွင်သင်တွေ့နိုင်ပါသည်။ သင်၌တစ်ခုရှိရန်စိတ်ဝင်စားပါကအကြံပြုချက်များမှာ -

DS3231 Arduino ပေါင်းစည်းမှု

Arduino IDE မျက်နှာပြင်

သငျသညျလိုလျှင် သင်၏ DS3231 ကိုသင်၏ Arduino ဘုတ်နှင့်ပေါင်းစပ်ပါ အချိန်ကုန်ဆုံးသောစီမံကိန်းများကိုစတင်ပါကသင့်တော်သောဆက်သွယ်မှုများကို ဦး စွာပြုလုပ်ရမည်။ ၎င်းကိုဆက်သွယ်နိုင်ရန်၎င်းသည်ရိုးရှင်းပါသည်။

  • DS3231 ဘုတ်၏ SLC pin သည်သင်၏ A5 နှင့်ချိတ်ဆက်ထားသင့်သည် Arduino UNO.
  • DS3231 ၏ SDA သည် Arduino ၏ A4 နှင့်ချိတ်ဆက်ထားသည်။
  • module တစ်ခုမှ Vcc သည် Arduino မှ 5V သို့သွားလိမ့်မည်။
  • GND သို့ GND ။
သင်၏ Arduino IDE တွင် RTC DS3231 ကိုအသုံးပြုရန်စာကြည့်တိုက်ကို install လုပ်ရန်သတိရပါသို့မဟုတ်ကုဒ်သည်အလုပ်မလုပ်ပါ။

ယခုတွင်သင်သည်စနစ်နှင့်ချိတ်ဆက်ပြီးနောက်တစ်ချက်မှာစာရေးခြင်းဖြစ်သည် အရင်းအမြစ်ကုဒ်ပုံကြမ်း အဲဒါကိုပရိုဂရမ်ရန်။ သင်ကုဒ်များကိုပြုပြင်ပြီးသင်၏လိုအပ်ချက်များနှင့်လိုက်လျောညီထွေဖြစ်အောင်လုပ်နိူင်သည်၊ သို့သော်သင် Arduino နှင့်ဆက်သွယ်ထားသော 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 ရက်စွဲသုံးစွဲဖို့ အလုပ်တချို့သတ်မှတ်ထားပါမီးဖွင့်ခြင်းသို့မဟုတ်ပိတ်ခြင်း၊ အလိုအလျှောက်ရေလောင်းခြင်း၊ ပိုမိုမြင့်မားသောဗို့အားကိရိယာများကိုကိုင်တွယ်ရန်သင်သည် transistor များသုံးနိုင်သည် ထပ်ဆင့်လွှင့်သူ:

#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. အချက်အလက်အတွက်တာဝန်ရှိသည် - Miguel ÁngelGatón
  2. အချက်အလက်များ၏ရည်ရွယ်ချက်: ထိန်းချုပ်ခြင်း SPAM, မှတ်ချက်စီမံခန့်ခွဲမှု။
  3. တရားဝင်: သင်၏ခွင့်ပြုချက်
  4. အချက်အလက်များ၏ဆက်သွယ်မှု - ဒေတာများကိုဥပဒေအရတာ ၀ န်ယူမှုမှ လွဲ၍ တတိယပါတီများသို့ဆက်သွယ်မည်မဟုတ်ပါ။
  5. ဒေတာသိမ်းဆည်းခြင်း: Occentus ကွန်ယက်များ (အီးယူ) မှလက်ခံသည့်ဒေတာဘေ့စ
  6. အခွင့်အရေး - မည်သည့်အချိန်တွင်မဆိုသင်၏အချက်အလက်များကိုကန့်သတ်၊