DS3231: ໂມງກົງເວລາແລະປະຕິທິນ ສຳ ລັບ Arduino ຂອງທ່ານ

DS3231

ໃນບາງໂຄງການມັນ ຈຳ ເປັນຕ້ອງມີຫຼັກຖານສະແດງເວລາ, ຊົ່ວໂມງ, ຫລືວັນທີ. ບໍ່ວ່າຍ້ອນຄວາມ ຈຳ ເປັນໃນການປະຕິບັດ ໜ້າ ທີ່ບາງຢ່າງໂດຍອີງຕາມເວລາ, ການຮັກສາປະຕິທິນຂອງເຫດການຫລືການລົງທະບຽນ, ການຮັກສາເວລາໃນລະບົບ, ຫຼືພຽງແຕ່ສ້າງໂມງດິຈິຕອນ ກັບ Arduino. ກັບ the DS3231 ທ່ານສາມາດໄດ້ຮັບມັນ, ຂອງອື່ນ ສ່ວນປະກອບ ທີ່ພວກເຮົາເພີ່ມເຂົ້າໃນບັນຊີ.

DS3231 ແມ່ນໂມດູນທີ່ທ່ານ ກຳ ລັງຊອກຫາ, ແລະນີ້ທ່ານຈະພົບທຸກຢ່າງທີ່ທ່ານຕ້ອງການ ສຳ ລັບການຄວບຄຸມຂອງມັນແລະຂ້ອຍຍັງຈະສະແດງຕົວຢ່າງຂອງວິທີການ ເຊື່ອມໂຍງມັນກັບ Arduino ມີຕົວຢ່າງພາກປະຕິບັດ ...

DS3231 ແມ່ນຫຍັງ?

DS3231

ກ່ອນອື່ນ ໝົດ, ທ່ານຄວນຮູ້ວ່າກ RTC (ໂມງຕາມເວລາຈິງ), ຫຼືໂມງເວລາຈິງ. ຊິບເຫລົ່ານີ້ມີຢູ່ເລື້ອຍໆໃນຫລາຍໆໂປແກຼມໃຊ້, ໃນຄວາມເປັນຈິງ, ຄອມພິວເຕີຂອງທ່ານມີມັນຢູ່ໃນເມນບອດຂອງທ່ານ, ແລະມັນຍັງຖືກຂັບເຄື່ອນດ້ວຍເຄື່ອງຈັກ ໝໍ້ ໄຟ CR2032 ຍັງ. ມັນແມ່ນຜູ້ທີ່ຮັກສາເວລາແລະການຕັ້ງຄ່າໃນ BIOS / UEFI ແລະຈາກລະບົບປະຕິບັດການທີ່ໃຊ້ເວລາບູດໃຫ້ທັນເວລາ (ເຖິງແມ່ນວ່າດຽວນີ້ກັບອິນເຕີເນັດ, ການປະສົມປະສານກັບເຊີຟເວີກໍ່ສາມາດໃຊ້ໄດ້ຄວາມແມ່ນຍໍາສູງກວ່າ, ແຕ່ວ່ານີ້ ເປັນອີກເລື່ອງ ໜຶ່ງ …).

ສິ່ງທີ່ RTC ເຮັດແມ່ນໄດ້ຮັບການວັດແທກເວລາ, ນັ້ນງ່າຍດາຍ. ຄວາມແຕກຕ່າງຈາກໂມງອີເລັກໂທຣນິກປະເພດອື່ນແມ່ນວ່າມັນງ່າຍດາຍ ວັດເວລາ, ແລະມັນກໍ່ເຮັດໄດ້ໂດຍການນັບ ກຳ ມະຈອນສັນຍານໂມງ, ຮູ້ຄວາມຖີ່ແລະໄລຍະເວລາຂອງມັນ. ນອກເຫນືອຈາກເວລາ, RTC ຍັງຊ່ວຍໃຫ້ທ່ານສາມາດບັນຊີວັນ, ອາທິດ, ເດືອນແລະປີ. ນັ້ນແມ່ນ, ວັນທີເຕັມທີ່ ...

ເພື່ອສິ່ງນີ້ຈະເປັນໄປໄດ້, RTC ຕ້ອງໄດ້ຮັບການປະກອບໂດຍ a ໄປເຊຍ Xtal ຫຼື quartz ເຊິ່ງຈະເຮັດ ໜ້າ ທີ່ເປັນຕົວແທນສຽງ, ເຊິ່ງສະ ໜອງ ຄວາມຖີ່. ນອກຈາກນັ້ນ, ທ່ານຍັງຕ້ອງການວົງຈອນເອເລັກໂຕຣນິກທີ່ມີຄວາມສາມາດໃນການນັບແລະເກັບຮັກສາວັນທີໄວ້ໃນຄວາມຊົງ ຈຳ. ວົງຈອນຕ້ອງມີຄວາມສາມາດນັບວິນາທີ, ນາທີ, ຊົ່ວໂມງ, ມື້, ອາທິດ, ເດືອນແລະປີ.

Esa ຄວາມຊົງຈໍາແມ່ນບໍ່ປ່ຽນແປງນັ້ນແມ່ນເຫດຜົນທີ່ມັນຕ້ອງການແບດເຕີລີ່, ເພື່ອໃຫ້ມີພະລັງງານຄົງທີ່. ຖ້າທ່ານບໍ່ມີແບດເຕີລີ່ຫລືມັນ ໝົດ, ມັນຈະຖືກລົບລ້າງ ... ນັ້ນແມ່ນສິ່ງທີ່ເກີດຂື້ນກັບ PC ໃນເວລາທີ່ແບດເຕີລີ່ຫມົດ, ພວກເຂົາໃຫ້ເວລາທີ່ບໍ່ຖືກຕ້ອງ. ຖ້າທ່ານຕັ້ງຄ່າມັນໃນຂະນະທີ່ຄອມພິວເຕີ ກຳ ລັງເປີດ, ເວລາຈະຖືກເກັບຮັກສາໄວ້, ເພາະວ່າ RTC ກຳ ລັງຖືກ ນຳ ໃຊ້, ແຕ່ມັນແມ່ນໃນລະຫວ່າງຂັ້ນຕອນທີ່ມັນປິດໃນເວລາທີ່ແບດເຕີລີ່ຕ້ອງການ ...

ສຳ ລັບໂຄງການ DIY, ຜູ້ຜະລິດມັກຈະໃຊ້ຊິບ RTC ສອງລຸ້ນ ທຳ ມະດາ, ເຊິ່ງແມ່ນ DS1307 ແລະ DS3231. ທັງສອງແມ່ນຜະລິດໂດຍ Maxim (ໃນເມື່ອກ່ອນແມ່ນ Dallas Semiconductor), ແລະ DS3231 ແມ່ນຖືກຕ້ອງກວ່າສອງຢ່າງ, ຍ້ອນວ່າມັນບໍ່ໄດ້ຮັບຜົນກະທົບຈາກການປ່ຽນແປງຂອງອຸນຫະພູມຄືກັບເກົ່າ. ສະນັ້ນ, ມັນບໍ່ ເໜັງ ຕີງຫຼາຍຂື້ນກັບອຸນຫະພູມ, ແລະມັນເຮັດໃຫ້ເວລາມີຄວາມຊັດເຈນຫຼາຍຂື້ນ.

ໃນຊ່ວງເວລາ, ດ້ວຍຄວາມແຕກຕ່າງອຸນຫະພູມທີ່ສັງເກດເຫັນ, DS1307 ສາມາດຢູ່ໃນໄລຍະທີ່ສູງເຖິງ 1 ຫຼື 2 ນາທີຕໍ່ມື້. ບາງສິ່ງບາງຢ່າງ intolerable ສໍາລັບບາງຄໍາຮ້ອງສະຫມັກ.

DS3231 ບໍ່ແມ່ນວ່າມັນຈະບໍ່ໄດ້ຮັບຜົນກະທົບຈາກການປ່ຽນແປງ, ແຕ່ວ່າມັນມີລະບົບວັດແທກອຸນຫະພູມແລະລະບົບການຊົດເຊີຍທີ່ຖືກສ້າງຂື້ນເພື່ອຮັບປະກັນຄວາມຖືກຕ້ອງຂອງ 2ppm ເຊິ່ງຈະເທົ່າກັບ a lag ທີ່ໃຊ້ເວລາ ປະມານ 172ms ຕໍ່ມື້, ນັ້ນແມ່ນ ໜ້ອຍ ທີ່ສຸດ 1 ວິນາທີຕໍ່ອາທິດທີ່ສຸດ. ແລະໃນພາກປະຕິບັດຕົວຈິງ, ພວກມັນມັກຈະແຕກຕ່າງກັນພຽງແຕ່ 1 ຫຼື 2 ວິນາທີຕໍ່ເດືອນ.

ໃນຖານະເປັນວິທີການ ຕິດຕໍ່ສື່ສານກັບ RTC DS3131 ເພື່ອໃຫ້ໄດ້ມູນຄ່າວັນທີທີ່ມັນໄດ້ຮັບ, ມັນຖືກເຮັດໂດຍ ລົດເມ I2C. ແລະ ສຳ ລັບພະລັງງານ, ທ່ານສາມາດໃຊ້ 2.3v ສຳ ລັບ DS5.5, ເຊິ່ງບາງສ່ວນແມ່ນຕໍ່າກ່ວາ 3231 ເຖິງ 4.5v ສຳ ລັບ DS5.5, ສະນັ້ນມັນສາມາດມີປະສິດທິພາບດ້ານພະລັງງານຫຼາຍແລະເຮັດໃຫ້ແບັດເຕີຣີໃຊ້ໄດ້ດົນ.

ນອກຈາກນີ້, ທ່ານຄວນຮູ້ວ່າໂມດູນເຫລົ່ານີ້ມັກຈະມີ EEPROM AT24C32 ເພີ່ມເຕີມ ເພື່ອເກັບຮັກສາບັນທຶກບາງອັນແລະການວັດແທກກ່ອນ ໜ້າ ນີ້, ເຊິ່ງເປັນການປະຕິບັດທີ່ຂ້ອນຂ້າງ.

aplicacion

ສຳ ລັບ ຄຳ ຮ້ອງສະ ໝັກ ຕ່າງໆ, ຂ້າພະເຈົ້າໄດ້ກ່າວມາແລ້ວບາງຢ່າງ, ເຊັ່ນວ່າການປະຕິບັດໂມງກັບ Arduino, ເພື່ອສ້າງລະບົບທີ່ເຮັດ ໜ້າ ທີ່ໂດຍອີງໃສ່ ເວ​ລາ ເຖິງຢ່າງໃດກໍ່ຕາມ, ເພື່ອຮັກສາເວລາໃນອຸປະກອນຕ່າງໆເຊັ່ນ: ເຄື່ອງຄອມພີວເຕີ້ແລະອຸປະກອນອີເລັກໂທຣນິກແລະເຄື່ອງໃຊ້ອື່ນໆທີ່ມີເວລາເປັນຕົ້ນ.

ຍັງສາມາດໃຊ້ໃນ ໂຄງການ ເພື່ອສ້າງເຄື່ອງຈັບເວລາ ສຳ ລັບການເຮັດໃຫ້ມີແສງ, ລະບົບຊົນລະປະທານ, ເຄື່ອງເກັບຂໍ້ມູນ, ແລະອື່ນໆ ຄໍາຮ້ອງສະຫມັກສາມາດເປັນຈໍານວນຫລາຍທີ່ສຸດ ...

ຊື້ RTC DS3231

ໂມດູນ DS3131 ລາຄາຖືກ, ແລະທ່ານສາມາດຊອກຫາມັນໄດ້ໃນບາງຮ້ານເອເລັກໂຕຣນິກທີ່ມີຄວາມຊ່ຽວຊານຫລືຮ້ານໃຫຍ່ເຊັ່ນ eBay, AliExpress, Amazon, ແລະອື່ນໆ. ຖ້າທ່ານສົນໃຈຢາກມີ, ນີ້ແມ່ນ ຄຳ ແນະ ນຳ ບາງຢ່າງ:

DS3231 ການເຊື່ອມໂຍງ Arduino

ພາບ ໜ້າ ຈໍຂອງ Arduino IDE

ຖ້າທ່ານຕ້ອງການ ເຊື່ອມໂຍງ DS3231 ຂອງທ່ານກັບຄະນະ Arduino ຂອງທ່ານ ແລະເລີ່ມຕົ້ນສ້າງໂຄງການ "ໄລຍະເວລາ", ທຳ ອິດທ່ານຕ້ອງສ້າງການເຊື່ອມຕໍ່ທີ່ ເໝາະ ສົມ. ເພື່ອຈະສາມາດເຊື່ອມຕໍ່ມັນ, ມັນງ່າຍດາຍຄື:

  • ເຂັມ SLC ຂອງກະດານ DS3231 ຕ້ອງເຊື່ອມຕໍ່ກັບ A5 ຂອງທ່ານ Arduino UNO.
  • SDA ຂອງ DS3231 ແມ່ນເຊື່ອມຕໍ່ກັບ A4 ຂອງ Arduino.
  • Vcc ຈາກໂມດູນຈະໄປ 5V ຈາກ Arduino.
  • GND ຫາ GND.
ຈືຂໍ້ມູນການຕິດຕັ້ງຫ້ອງສະຫມຸດເພື່ອໃຊ້ RTC DS3231 ໃນ Arduino IDE ຂອງທ່ານຫຼືລະຫັດຈະບໍ່ເຮັດວຽກ ...

ດຽວນີ້ທ່ານມີລະບົບເຊື່ອມຕໍ່ແລ້ວ, ສິ່ງຕໍ່ໄປແມ່ນການຂຽນປື້ມ ລະຫັດແຫຼ່ງ sketch ການຈັດຕາຕະລາງມັນ. ທ່ານສາມາດດັດແປງລະຫັດແລະດັດແປງມັນຕາມຄວາມຕ້ອງການຂອງທ່ານ, ແຕ່ທ່ານສາມາດເລີ່ມຕົ້ນໄດ້ໂດຍການໄດ້ຮັບວັນທີຈາກ RTC DS3231 ທີ່ເຊື່ອມຕໍ່ກັບ 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
}

ແລະໃນຄໍາສັ່ງທີ່ຈະໃຊ້ວັນທີ RTC ກັບ ຈັດຕາຕະລາງວຽກງານບາງຢ່າງ, ເຊັ່ນ: ເປີດຫລືປິດໄຟ, ສຳ ​​ລັບຫົດນ້ ຳ ແບບອັດຕະໂນມັດ, ຫຼື ສຳ ລັບສຽງປຸກ. ຈົ່ງຈື່ໄວ້ວ່າເພື່ອຈັດການກັບອຸປະກອນແຮງດັນທີ່ສູງຂື້ນທ່ານສາມາດໃຊ້ transistor ຫຼື relay:

#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 Networks (EU)
  6. ສິດ: ໃນທຸກເວລາທີ່ທ່ານສາມາດ ຈຳ ກັດ, ກູ້ຄືນແລະລຶບຂໍ້ມູນຂອງທ່ານ.