DS3231: ezigbo oge elekere na kalenda maka Arduino gị

DS3231

Na ụfọdụ oru ọ dị mkpa ịnwe ihe akaebe nke oge, oge awa, ma ọ bụ ụbọchị. Ma ọ bụ n'ihi mkpa ọ dị ịrụ ụfọdụ ọrụ dabere na oge, iji jigide kalenda nke ihe omume ma ọ bụ ndebanye aha, ịdebe oge na usoro, ma ọ bụ naanị ịmepụta elekere dijitalụ ya na Arduino. Na ndi DS3231 ị nwere ike nweta ya, ọzọ nke components na anyị tinye na ndepụta.

DS3231 bụ modul ị na-achọ, ebe a ị ga-ahụ ihe niile ịchọrọ maka njikwa ya, m ga-egosikwa gị ihe atụ nke otu iwekota ya na Arduino na ihe atụ bara uru ...

Kedu ihe bụ DS3231?

DS3231

Nke mbu, i kwesiri ima ihe a RTC (Oge Oge), ma ọ bụ ezigbo oge elekere. Mpekere ndị a na-adịkarị n'ọtụtụ ngwa, n'eziokwu, PC gị nwere otu n'ime ha na motherboard gị, ọ na-ejikwa ya CR2032 batrị Ọzọkwa. Ọ bụ nke na-echekwa oge na nhazi na BIOS / UEFI na nke sitere na sistemụ arụmọrụ na-ewe ya mgbe ị na-ebido ịnọ n'oge (ọ bụ ezie na ugbu a, na Internetntanetị, enwere ike ịmekọrịta mmekọrịta na sava maka nkenke ka ukwuu, mana nke a bụ akụkọ ọzọ…).

Ihe RTC na-eme bụ inweta nhọta oge, nke dị mfe. Ihe dị iche na ụdị elektrọnik ndị ọzọ bụ na ọ dị mfe tụọ oge, na ọ na-eme nke a site na ịgụta ihe mgbaàmà elekere, na-ama ugboro ole na oge ya. Na mgbakwunye na oge, RTC na-enyekwa gị ohere ịme ndekọ ụbọchị, izu, ọnwa na afọ. Nke ahụ bụ, ụbọchị zuru ezu ...

Maka nke a, enwere ike iso RTC yana a Xtal ma ọ bụ quartz kristal nke ga - eme ihe dị ka resonator, nke na - enye ugboro ole. Na mgbakwunye, ịchọrọ okirikiri elektrọnik nke nwere ike ịgụta ma chekwaa ụbọchị na ebe nchekwa. Egwuregwu sekit ahụ ga-enwe ike ịgụta sekọnd, nkeji, oge, ụbọchị, ụbọchị, izu, ọnwa na afọ.

Esa ncheta na-agbanwe agbanweỌ bụ ya mere o ji chọọ batrị, inwe ike mgbe niile. Ọ bụrụ na ịnweghị batrị ma ọ bụ na ọ gafere, a ga-ehichapụ ya ... Nke ahụ bụ ihe na-eme PC mgbe batrị ahụ gwụrụ, ha na-enye oge na-ezighi ezi. Ọ bụrụ na ị hazie ya mgbe PC dị, a ga-edebe oge ahụ, ebe ọ bụ na a na-akwado RTC, mana ọ bụ n'oge usoro mgbe ọ na-apụ mgbe batrị ahụ chọrọ ...

Maka ọrụ Mee N'onwe Gị, ndị na-eme ihe na-ejikarị ibe abụọ RTC ibe, nke bụ DS1307 na DS3231. Ha abụọ bụ Maxim (nke a na-akpọbu Dallas Semiconductor), DS3231 bụ nke ziri ezi karịa ha abụọ, ebe ọ bụ na ọnọdụ okpomọkụ anaghị adị ka nke mbụ na-emetụta. Ya mere, ọ naghị agbanwe agbanwe nke ukwuu dabere na ọnọdụ okpomọkụ, ọ na-edebekwa oge ahụ karịa.

Mgbe ụfọdụ, site na esemokwu ọnọdụ dị egwu, DS1307 nwere ike ịbụ mbibi dịka 1 ma ọ bụ 2 nkeji kwa ụbọchị. Ihe inagidere maka ụfọdụ ngwa.

DS3231 abụghị na enweghị mmetụta site na ọdịiche, kama na ọ wulitere usoro sistemụ na usoro nkwụghachi ụgwọ iji hụ na 2ppm ziri ezi, nke ga-adaba na oge na-aga nke ihe dịka 172ms kwa ụbọchị, ya bụ, obere karịa 1 sekọnd n'izu kachasị. Na omume, ha na-adịkarị naanị 1 ma ọ bụ 2 sekọnd n'otu ọnwa.

Dị ka ụzọ ikwurịta okwu na RTC DS3131 iji nweta ụbọchị ụkpụrụ ọ na-akawanye, ọ na-eme site na I2C ụgbọ ala. Maka ike, ịnwere ike iji 2.3 ruo 5.5v maka DS3231, nke pere mpe karịa 4.5 ka 5.5v maka DS1307, yabụ ọ nwere ike ịdị ike karịa ma mee batrị ahụ ogologo oge.

Ọzọkwa, ịmara na modul ndị a na-enwekarị a EEPROM agbakwunye AT24C32 ịchekwa ụfọdụ ihe ndekọ na nha ndị gara aga, nke bara ezigbo uru.

Aplicaciones

Banyere ngwa ndị a, ekwuola m ụfọdụ, dị ka iji mejuputa elekere na Arduino, iji mepụta usoro nke dabere na Oge Ihe ọ bụla, iji debe oge na akụrụngwa dịka PC na ọtụtụ ngwaọrụ elektrọnik na ngwa ndị ọzọ nwere oge, wdg.

Enwekwara ike iji ya oru ngo imepụta ngụ oge maka ọkụ, usoro mmiri, datalogger, wdg. Ngwa nwere ike ịbụ ọtụtụ ...

Zụta ihe RTC DS3231

Ihe ngosi ahụ DS3131 dị ọnụ ala, ma ị nwere ike ịchọta ya na ụfọdụ ụlọ ahịa elektrọnik pụrụ iche ma ọ bụ nnukwu ụlọ ahịa dịka eBay, AliExpress, Amazon, wdg. Ọ bụrụ na ị nwere mmasị inwe otu, lee ụfọdụ aro:

DS3231 Arduino Mwekota

Nseta ihuenyo nke Arduino IDE

Ọ bụrụ na ịchọrọ iwekota gị DS3231 na gị Arduino osisi ma malite ịmepụta ọrụ "oge", ị ga-ebu ụzọ mee njikọ ndị kwesịrị ekwesị. Iji nwee ike ijikọ ya, ọ dị mfe dịka:

  • The SLC pin nke DS3231 osisi ga-jikọọ na A5 gị Arduino UNO.
  • SDA nke DS3231 jikọtara A4 nke Arduino.
  • Vcc site na modul ahụ ga-aga 5V site na Arduino.
  • GND ka GND.
Cheta ịwụnye ọba akwụkwọ iji RTC DS3231 na Arduino IDE gị ma ọ bụ koodu ahụ agaghị arụ ọrụ ...

Ugbu a ị nwere sistemụ ejikọrọ, ihe ọzọ bụ ide ya osise koodu ịhazi ya. Nwere ike gbanwee koodu ma gbanwee ha maka mkpa gị, mana ị nwere ike ịmalite site na ịnweta ụbọchị site na RTC DS3231 jikọtara na Arduino:

#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
}

Na iji jiri RTC ụbọchị na- - hazie ụfọdụ ọrụ, dị ka ịgbanwu ọkụ ma ọ bụ gbanyụọ, maka ịgbara mmiri akpaka, ma ọ bụ maka mkpu na-ada ụda, wdg. Cheta na aka elu voltaji ngwaọrụ i nwere ike iji transistors ma ọ bụ ọsọ agba anọ:

#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);
}


Ọdịnaya nke isiokwu agbaso ụkpụrụ anyị nke ụkpụrụ nduzi. Kpesa mmejọ pịa ebe a.

Bụrụ onye mbụ ịza ajụjụ

Hapu okwu gi

Adreesị email gị agaghị bipụtara. Chọrọ ubi na-akara na *

*

*

  1. Rụ ọrụ maka data: Miguel Ángel Gatón
  2. Nzube nke data: Nchịkwa SPAM, njikwa okwu.
  3. Ikike: Nkwenye gị
  4. Nkwurịta okwu nke data: Agaghị agwa ndị ọzọ data ahụ ma ọ bụghị site na iwu.
  5. Nchekwa data: Ebe nchekwa data nke Occentus Networks (EU) kwadoro
  6. Ikike: Oge obula inwere ike igbachi, weghachite ma hichapụ ihe omuma gi.