DS3231: agogo na ainihi da kalanda don Arduino

DS3231

A wasu ayyukan ya zama dole a sami tabbacin lokaci, lokaci, ko kwanan wata. Ko dai saboda buƙatar aiwatar da wasu ayyuka dangane da lokaci, don kula da kalandar abubuwan da suka faru ko rajista, don adana lokaci a cikin tsarin, ko don ƙirƙirar agogon dijital tare da Arduino. Tare da da DS3231 zaka iya samun sa, wani na aka gyara cewa mun ƙara zuwa jerin.

DS3231 shine samfurin da kuke nema, kuma anan zaku sami duk abin da kuke buƙata don sarrafa shi kuma zan kuma nuna muku misalin yadda hade shi tare da Arduino tare da misali mai amfani ...

Menene DS3231?

DS3231

Da farko dai, ya kamata ka san menene a RTC (Agogon Lokaci), ko agogo na ainihi. Waɗannan kwakwalwan suna da yawa a aikace-aikace da yawa, a zahiri, kwamfutarka tana da ɗayansu a kan katakon katako, kuma ana amfani da shi ta hanyar CR2032 baturi ma. Shine wanda ke kula da lokaci da daidaitawa a cikin BIOS / UEFI kuma daga abin da tsarin aiki ke ɗauka yayin farawa don kasancewa akan lokaci (kodayake yanzu, tare da Intanit, aiki tare tare da sabobin ana iya amfani dasu don mafi daidaituwa, amma wannan wani labari ne…).

Abin da RTC ke yi shine samun matakan lokaci, mai sauki. Bambanci da sauran nau'ikan agogon lantarki shine cewa kawai auna lokaci, kuma yana yin hakan ne ta hanyar kirga bugun siginar agogo, da sanin yawan lokuta da lokutan sa. Baya ga lokaci, RTC yana ba ku damar adana bayanan ranaku, makonni, watanni da shekaru. Wato, cikakken kwanan wata ...

Don wannan ya yiwu, RTC dole ne ya kasance tare da a Xtal ko ma'adini lu'ulu'u wanda zai yi aiki azaman maɗaukaki, wanda ke ba da mitar. Ari, kuna buƙatar kewaya na lantarki wanda zai iya kirgawa da adana kwanan wata a ƙwaƙwalwar ajiya. Kewaya dole ne ya iya kirga sakan, mintuna, awoyi, kwanaki, makonni, watanni da shekaru.

Esa memorywa memorywalwar ajiya mai iya canzawaWannan shine dalilin da ya sa yake buƙatar baturi, don samun ƙarfi koyaushe. Idan baka da batir ko kuma ya ƙare, za'a goge shi ... Abinda yake faruwa kenan ga PC idan batirin ya ƙare, suna bada lokacin da bai dace ba. Idan kun saita ta yayin PC ɗin a kunne, za a kiyaye lokacin, tunda ana amfani da RTC, amma yana cikin ayyukan lokacin da yake kashe lokacin da ake buƙatar batirin ...

Don ayyukan DIY, masu yin galibi suna amfani da kwakwalwan RTC guda biyu, waɗanda sune DS1307 da DS3231. Dukansu Maxim ne (tsohon Dallas Semiconductor) ya kera su, kuma DS3231 ya fi dacewa da su biyun, saboda ba sa shafar yanayin sauyin yanayi kamar yadda tsohon yake yi. Sabili da haka, baya canzawa sosai gwargwadon yanayin zafi, kuma yana kiyaye lokacin daidai.

Wasu lokuta, tare da bambance-bambancen zafin jiki sananne, DS1307 na iya zama ba tare da lokaci ba har zuwa 1 ko 2 min a kowace rana. Wani abu da baza a iya jure wa wasu aikace-aikace ba.

DS3231 ba wai rashin bambance-bambance ne yake damunsa ba, amma yana da tsarin auna yanayin zafi da kuma tsarin biyan diyya don tabbatar da daidaiton 2ppm, wanda zai yi daidai da jinkirta lokaci na kusan 172ms a rana, ma'ana, sama da 1 daƙiƙa a sati mafi yawa. Kuma a aikace, galibi suna bambanta sakan 1 ko 2 a wata.

Amma ga hanya sadarwa tare da RTC DS3131 don samun ƙimar kwanan wata da ta samu, ana yin ta Motar I2C. Kuma don ƙarfi, zaku iya amfani da 2.3 zuwa 5.5v don DS3231, wanda ya ɗan rage ƙasa da 4.5 zuwa 5.5v na DS1307, saboda haka zai iya zama mai aiki da ƙarfi kuma ya sa batirin ya daɗe.

Hakanan, ya kamata ku sani cewa waɗannan matakan yawanci suna da EEPROM ƙarin AT24C32 don adana wasu bayanan da ma'aunai na baya, wanda yake da amfani sosai.

Aplicaciones

Game da aikace-aikacen, na riga na ambata wasu, kamar aiwatar da agogo tare da Arduino, don ƙirƙirar tsarin aiki bisa Lokaci Ko menene, don kiyaye lokaci akan kayan aiki kamar su PC da sauran kayan lantarki da yawa da kayan aikin da suke da lokaci, da dai sauransu.

Hakanan za'a iya amfani dashi a ciki ayyukan don ƙirƙirar lokaci don haske, tsarin ban ruwa, mai ba da bayanai, da sauransu. Aikace-aikacen na iya zama mafi yawa ...

Sayi RTC DS3231

Matakan DS3131 bashi da arha, kuma zaka iya samun sa a wasu shagunan lantarki na musamman ko a manyan shaguna kamar su eBay, AliExpress, Amazon, da sauransu. Idan kuna sha'awar samun ɗaya, ga wasu shawarwari:

DS3231 Arduino Haɗuwa

Screenshot na Arduino IDE

Idan kana so hade DS3231 dinka tare da hukumar Arduino kuma fara ƙirƙirar ayyukan "lokaci", dole ne da farko kuyi haɗin da ya dace. Don samun damar haɗa shi, yana da sauƙi kamar:

  • Dole ne a haɗa pin na SLC na allon DS3231 zuwa A5 na ku Arduino UNO.
  • SDA na DS3231 an haɗa shi zuwa A4 na Arduino.
  • Vcc daga koyaushe zai tafi 5V daga Arduino.
  • GND zuwa GND.
Ka tuna shigar da laburaren don amfani da RTC DS3231 a cikin Arduino IDE ko lambar ba zata yi aiki ba ...

Yanzu kun haɗa tsarin, abu na gaba shine rubuta rubutaccen lambar tushe shirya shi. Kuna iya canza lambobin kuma daidaita su zuwa bukatunku, amma kuna iya farawa ta hanyar samun kwanan wata kawai daga RTC DS3231 da aka haɗa da 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
}

Kuma domin amfani da kwanan wata RTC zuwa tsara wani aiki, kamar don kunna ko kashe wuta, don shayarwa ta atomatik, ko don ƙararrawa don yin sauti, da dai sauransu. Ka tuna cewa don ɗaukar na'urori masu ƙarfin lantarki mafi girma zaka iya amfani da transistors ko gudun ba da sanda:

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


Abubuwan da ke cikin labarin suna bin ka'idodinmu na ka'idojin edita. Don yin rahoton kuskure danna a nan.

Kasance na farko don yin sharhi

Bar tsokaci

Your email address ba za a buga. Bukata filayen suna alama da *

*

*

  1. Mai alhakin bayanan: Miguel Ángel Gatón
  2. Dalilin bayanan: Gudanar da SPAM, gudanar da sharhi.
  3. Halacci: Yarda da yarda
  4. Sadarwar bayanan: Ba za a sanar da wasu bayanan ga wasu kamfanoni ba sai ta hanyar wajibcin doka.
  5. Ajiye bayanai: Bayanin yanar gizo wanda Occentus Networks (EU) suka dauki nauyi
  6. Hakkoki: A kowane lokaci zaka iyakance, dawo da share bayanan ka.