DS3231: revèy tan reyèl ak kalandriye pou Arduino ou

DS3231

Nan kèk pwojè li nesesè pou gen prèv sou lè a, lè a, oswa dat la. Swa akòz bezwen nan fè sèten fonksyon ki baze sou tan, yo kenbe yon kalandriye nan evènman oswa enskripsyon, kenbe tan an nan yon sistèm, oswa tou senpleman yo kreye yon revèy dijital avèk Arduino. Avèk DS3231 la ou ka jwenn li, yon lòt nan la konpozan ke nou ajoute nan lis la.

DS3231 la se modil la ou te kap chèche, ak isit la ou pral jwenn tout bagay ou bezwen pou kontwòl li yo ak mwen pral montre w tou yon egzanp sou kouman entegre li ak Arduino ak yon egzanp pratik ...

Ki sa ki DS3231 la?

DS3231

Premye a tout, ou ta dwe konnen ki sa yon RTC (revèy tan reyèl), oswa revèy tan reyèl. Sa yo bato yo trè souvan nan yon foul moun nan aplikasyon yo, an reyalite, PC ou gen youn nan yo sou mèr ou, epi li se tou patrone pa yon CR2032 batri tou. Li se youn nan ki kenbe tan an ak konfigirasyon an nan BIOS la / UEFI ak ki soti nan ki sistèm nan fonksyone pran li lè konn bwote machin yo dwe sou tan (byenke kounye a, ak entènèt la, senkronizasyon ak serveurs ka itilize pou pi gwo presizyon, men sa a se yon lòt istwa ...).

Ki sa RTC a fè se jwenn mezi tan, ki senp. Diferans ki genyen nan lòt kalite mont elektwonik se ke yo senpleman mezire tan an, epi li fè sa pa konte pulsasyon siyal revèy, konnen frekans li yo ak peryòd. Anplis de sa nan tan an, yon RTC tou pèmèt ou kenbe yon kontablite nan jou yo, semèn, mwa ak ane. Sa se, dat la plen ...

Pou sa posib, RTC a dwe akonpaye pa yon Xtal oswa kristal kwatz ki pral aji kòm yon resonator, yon sèl la ki bay frekans lan. Anplis de sa, ou bezwen sikwi elektwonik ki kapab konte ak estoke dat la nan yon memwa. Sikwi a dwe kapab konte segonn, minit, èdtan, jou, semèn, mwa ak ane.

Esa memwa temètSe poutèt sa li bezwen batri a, yo gen pouvwa konstan. Si ou pa gen yon batri oswa li fini, li pral efase ... Se sa k ap pase nan PC yo lè batri a fini, yo bay yon tan kòrèk. Si ou configured li pandan ke PC a se sou, tan an ap kenbe, depi RTC a se ke yo te mache, men li se pandan pwosesis yo pandan ki li se koupe lè sa a ki batri ki nesesè ...

Pou pwojè brikoleur, mizisyen anjeneral itilize de chips RTC komen, ki se la DS1307 ak DS3231. Tou de yo te fè pa Maxim (ansyen Dallas Semiconductor), ak DS3231 a se pi egzak la nan de la, menm jan li pa tankou afekte pa varyasyon tanperati tankou ansyen an fè. Se poutèt sa, li pa sezite anpil depann sou tanperati a, epi li kenbe tan an plis jisteman.

Pafwa, ak diferans tanperati aparan, DS1307 a ta ka kòm dekalaj kòm 1 oswa 2 min chak jou. Yon bagay entolerab pou kèk aplikasyon.

DS3231 a se pa ke li pa afekte pa varyasyon, men ke li te bati-an mezi tanperati ak sistèm konpansasyon asire yon presizyon nan 2ppm, ki ta dwe ekivalan a yon lag tan nan sou 172ms yon jou, se sa ki, yon ti kras plis pase 1 dezyèm yon semèn nan pifò. Ak nan pratik yo, yo anjeneral varye sèlman 1 oswa 2 segonn nan yon mwa.

Kòm pou wout la kominike avèk RTC la DS3131 jwenn valè yo dat li vin, li se fè pa I2C otobis. Ak pou pouvwa, ou ka itilize 2.3 a 5.5v pou DS3231 a, ki se yon ti jan pi ba pase 4.5 a 5.5v pou DS1307 a, kidonk li ka plis enèji efikas epi fè batri a dire pi lontan.

Epitou, ou ta dwe konnen ke modil sa yo anjeneral gen yon ipron siplemantè AT24C32 nan magazen kèk dosye ak mezi anvan yo, ki se byen pratik.

aplikasyon

Kòm pou aplikasyon yo, mwen te deja mansyone kèk, tankou aplike yon revèy ak Arduino, yo kreye yon sistèm ki aji ki baze sou Tan an Kèlkeswa sa, kenbe tan an sou ekipman tankou PC yo ak anpil lòt aparèy elektwonik ak aparèy ki gen tan, elatriye.

Kapab itilize tou nan pwojè yo kreye time pou ekleraj, sistèm irigasyon, datalogger, elatriye. Aplikasyon yo ka pi anpil ...

Achte yon RTC DS3231

Modil la DS3131 se bon mache, epi ou ka jwenn li nan kèk magazen elektwonik espesyalize oswa nan gwo magazen tankou eBay, AliExpress, Amazon, elatriye. Si ou enterese nan gen yon sèl, isit la gen kèk rekòmandasyon:

DS3231 Arduino Entegrasyon

D 'Arduino IDE

Si ou vle entegre DS3231 ou ak tablo Arduino ou e kòmanse kreye pwojè "kwonometre", ou dwe premye fè koneksyon ki apwopriye yo. Pou kapab konekte li, li se senp tankou:

  • PIN SLC tablo DS3231 la dwe konekte ak A5 nan ou Arduino UNO.
  • SDA nan DS3231 la konekte ak A4 nan Arduino.
  • Vcc soti nan modil la pral ale nan 5V soti nan Arduino.
  • GND pou GND.
Sonje enstale bibliyotèk la pou itilize RTC DS3231 nan IDE Arduino ou oswa kòd la pap mache ...

Koulye a, ou gen sistèm lan konekte, bagay la pwochen se yo ekri nan trase kòd sous pou pwogram li. Ou ka modifye kòd yo epi adapte yo a bezwen ou, men ou ta ka kòmanse pa senpleman ap resevwa dat ki soti nan yon RTC DS3231 ki konekte ak 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
}

Ak yo nan lòd yo sèvi ak dat RTC la planifye kèk travay, tankou pou vire limyè limen oswa etenn, pou awozaj otomatik, oswa pou yon alam son, elatriye. Sonje ke pou okipe pi wo aparèy vòltaj ou ka itilize tranzistò oswa relè:

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


Kontni an nan atik la respekte prensip nou yo nan etik editoryal. Pou rapòte yon erè klike sou isit la.

Se pou premye a fè kòmantè

Kite kòmantè ou

Adrès imèl ou pa pral dwe pibliye. Jaden obligatwa yo make ak *

*

*

  1. Responsab pou done yo: Miguel Ángel Gatón
  2. Objektif done yo: Kontwòl SPAM, jesyon kòmantè.
  3. Lejitimasyon: konsantman ou
  4. Kominikasyon nan done yo: done yo pa pral kominike bay twazyèm pati eksepte pa obligasyon legal.
  5. Done depo: baz done anime pa rezo Occentus (Inyon Ewopeyen)
  6. Dwa: Nenpòt ki lè ou ka limite, refè ak efase enfòmasyon ou yo.