I-DS3231: iwotshi yexesha lokwenyani kunye nekhalenda yeArduino yakho

DS3231

Kwezinye iiprojekthi kubalulekile ukuba nobungqina bexesha, ixesha, okanye umhla. Kungenxa yesidingo sokwenza imisebenzi ethile ngokusekwe kwixesha, ukugcina ikhalenda yeziganeko okanye ukubhaliswa, ukugcina ixesha kwinkqubo, okanye ukwenza iwotshi yedijithali kunye noArduino. Kunye I-DS3231 ungayifumana, enye ye- zixhobo ukuba sidibanisa kuluhlu.

I-DS3231 yimodyuli obuyikhangela, kwaye apha uyakufumana yonke into oyifunayo kulawulo lwayo kwaye ndiza kukubonisa nomzekelo wendlela ukudibanisa neArduino ngomzekelo osebenzayo ...

Yintoni i DS3231?

DS3231

Okokuqala, kuya kufuneka uyazi ukuba yintoni a RTC (Ixesha langempela leXesha), okanye iwotshi yexesha lokwenyani. Ezi chip zihlala rhoqo kuninzi lwezicelo, enyanisweni, iPC yakho inayo enye yazo kwibhodi yakho yomama, kwaye ikwaxhotyiswe yi Ibhetri ye-CR2032 kanjalo. Yeyona igcina ixesha kunye noqwalaselo kwi-BIOS / UEFI kwaye apho inkqubo yokusebenza iyithatha xa iqalisa ukuba ngexesha (nangona ngoku, kwi-Intanethi, ungqamaniso kunye neeseva zinokusetyenziselwa ukuchaneka okukhulu, kodwa oku lelinye ibali…).

Into eyenziwa yi-RTC kukufumana ixesha, oko kulula. Umahluko kwezinye iintlobo zeewotshi ze-elektroniki kukuba zilula linganisa ixesha, kwaye ikwenza oko ngokubala ukubetha kweempawu zewotshi, isazi ubude bayo kunye namaxesha. Ukongeza ixesha, i-RTC ikwavumela ukuba ugcine ingxelo yeentsuku, iiveki, iinyanga kunye neminyaka. Oko kukuthi, umhla opheleleyo ...

Ukuze oku kwenzeke, i-RTC kufuneka ikhatshwe yi I-Xtal okanye i-quartz crystal eya kuthi isebenze njenge-resonator, leyo ibonelela ngobuninzi. Ukongeza, udinga isekethe ye-elektroniki ekwaziyo ukubala nokugcina umhla kwimemori. Isekethe kufuneka ikwazi ukubala imizuzwana, imizuzu, iiyure, iintsuku, iiveki, iinyanga kunye neminyaka.

Oko Imemori iguquguqukayoKungenxa yoko le nto ifuna ibhetri, ukuze ibe namandla rhoqo. Ukuba awunayo ibhetri okanye iyaphela, iyakucinywa ... Yiloo nto eyenzekayo kwiiPC xa ibhetri iphela, zinika ixesha elingalunganga. Ukuba uyayilungiselela ngelixa iPC ivuliwe, ixesha liya kugcinwa, kuba i-RTC ixhotyiswa, kodwa ngexesha leenkqubo apho icinyiwe xa kufuneka ibhetri ...

Kwiiprojekthi ze-DIY, abenzi bahlala besebenzisa iitshipsi ezimbini eziqhelekileyo ze-RTC, ezizizo DS1307 kunye DS3231. Zombini zenziwe nguMaxim (owayesakuba yiDallas Semiconductor), kwaye i-DS3231 ichanekile ngakumbi kwezi zimbini, njengoko ingachaphazeleki ngumahluko wobushushu njengangaphambili. Ke ngoko, ayitshintshi kakhulu kuxhomekeke kubushushu, kwaye igcina ixesha ngokuchanekileyo.

Ngamanye amaxesha, umahluko obonakalayo weqondo lobushushu, i-DS1307 inokubekwa njenge-1 okanye i-2 min ngosuku. Into enganyamezelekiyo kwezinye izicelo.

I-DS3231 ayisiyiyo ukuba ayichaphazeki ngokwahluka, kodwa ikwakhelwe kumlinganiso wobushushu kunye neenkqubo zembuyekezo ukuqinisekisa ukuchaneka kwe-2ppm, enokulingana ne ukusilela kwexesha malunga ne-172ms ngosuku, oko kukuthi, ngaphezulu komzuzwana omnye ngeveki ubuninzi. Ukuziqhelanisa, zihlala zihluka kwimizuzwana eyi-1 okanye 1 ngenyanga.

Ngokuphathelele indlela Nxibelelana ne-RTC I-DS3131 ukufumana amaxabiso omhla ayifumanayo, yenziwa ngu I2C ibhasi. Ngamandla, ungasebenzisa i-2.3 ukuya kwi-5.5v ye-DS3231, ethe ngcembe kune-4.5 ukuya kwi-5.5v ye-DS1307, ukuze ibe namandla ngakumbi kwaye ibhetri ihlale ixesha elide.

Kwakhona, kuya kufuneka uyazi ukuba ezi modyuli zihlala zinefayile ye- EEPROM eyongezelelweyo AT24C32 ukugcina ezinye iirekhodi kunye nemilinganiselo yangaphambili, esebenzayo.

Izicelo

Ngokuphathelene nezicelo, sele ndikhankanyile ezinye, ezinje ngokufaka iwotshi kunye neArduino, ukwenza inkqubo esebenza ngokusekwe Ixesha Nokuba yeyiphi, ukugcina ixesha kwizixhobo ezinje ngeePC kunye nezinye izixhobo zombane ezinezixhobo ezinexesha, njl.

Inokusetyenziswa kwakhona kwi iiprojekthi ukwenza ixesha lokukhanyisa, iinkqubo zokunkcenkceshela, uluhlu lweenkcukacha, njl. Izicelo zinokuba zezona zininzi ...

Thenga i-RTC DS3231

Imodyuli DS3131 ixabiso eliphantsi, kwaye ungayifumana kwezinye iivenkile ezikhethekileyo ze-elektroniki okanye iivenkile ezinkulu ezinje nge-eBay, AliExpress, Amazon, njl. Ukuba unomdla wokuba unayo, nazi ezinye zeengcebiso:

DS3231 Arduino Umdibaniso

Iscreen seArduino IDE

Ukuba ufuna dibanisa i-DS3231 yakho nebhodi yakho yeArduino kwaye uqale ukwenza iiprojekthi "ezibekelwe ixesha", kufuneka uqale wenze unxibelelwano olufanelekileyo. Ukuze ukwazi ukudibanisa, kulula nje ngolu hlobo:

  • I-pin ye-SLC yebhodi ye-DS3231 kufuneka iqhagamshelwe kwi-A5 yakho Arduino UNO.
  • I-SDA yeDS3231 iqhagamshelwe kwi-A4 yeArduino.
  • I-Vcc kwimodyuli iya kwi-5V ukusuka eArduino.
  • GND ukuya kwi-GND.
Khumbula ukufaka ilayibrari ukuze usebenzise i-RTC DS3231 kwi-IDE yakho yeArduino okanye ikhowudi ayizukusebenza ...

Ngoku unenkqubo exhunyiwe, into elandelayo kukubhala sketch ikhowudi yemvelaphi ukuyicwangcisa. Ungaziguqula iikhowudi kwaye uzilungelelanise neemfuno zakho, kodwa ungaqala ngokufumana nje umhla kwi-RTC DS3231 exhunywe kwiArduino:

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

Kwaye ukusebenzisa umhla we-RTC ukuya Cwangcisa umsebenzi othileNjengokuvula okanye ukucima izibane, ukunkcenkceshela okuzenzekelayo, okanye ialam yokukhala, njl. Khumbula ukuba ukuphatha izixhobo zombane eziphezulu ungasebenzisa i-transistors okanye edlulisiweyo:

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


Yiba ngowokuqala ukuphawula

Shiya uluvo lwakho

Idilesi yakho ye email aziyi kupapashwa. ezidingekayo ziphawulwe *

*

*

  1. Uxanduva lwedatha: UMiguel Ángel Gatón
  2. Injongo yedatha: Ulawulo lwe-SPAM, ulawulo lwezimvo.
  3. Umthetho: Imvume yakho
  4. Unxibelelwano lwedatha: Idatha ayizukuhanjiswa kubantu besithathu ngaphandle koxanduva lomthetho.
  5. Ukugcinwa kweenkcukacha
  6. Amalungelo: Ngalo naliphi na ixesha unganciphisa, uphinde uphinde ucime ulwazi lwakho.