DS3231: aago gidi ati kalẹnda fun Arduino rẹ

DS3231

Ni diẹ ninu awọn iṣẹ akanṣe o jẹ dandan lati ni ẹri akoko, wakati, tabi ọjọ naa. Boya nitori iwulo lati ṣe awọn iṣẹ kan ti o da lori akoko, lati ṣetọju kalẹnda ti awọn iṣẹlẹ tabi iforukọsilẹ, lati tọju akoko ninu eto kan, tabi ni irọrun lati ṣẹda aago oni-nọmba kan pẹlu Arduino. Pẹlu awọn DS3231 o le gba, miiran ti awọn awọn irinše ti a fi kun si atokọ naa.

DS3231 ni module ti o n wa, ati nibi iwọ yoo wa ohun gbogbo ti o nilo fun iṣakoso rẹ ati pe Emi yoo tun fihan ọ ni apẹẹrẹ ti bii ṣepọ rẹ pẹlu Arduino pẹlu apẹẹrẹ iṣe ...

Kini DS3231?

DS3231

Ni akọkọ, o yẹ ki o mọ kini a RTC (Aago Akoko Gidi), tabi aago gidi. Awọn eerun wọnyi jẹ loorekoore ni ọpọlọpọ awọn ohun elo, ni otitọ, PC rẹ ni ọkan ninu wọn lori modaboudu rẹ, ati pe o tun jẹ agbara nipasẹ a CR2032 batiri tun. O jẹ ọkan ti o ṣetọju akoko ati iṣeto ni BIOS / UEFI ati lati eyiti ẹrọ ṣiṣe ngba nigba gbigba lati wa ni akoko (botilẹjẹpe ni bayi, pẹlu Intanẹẹti, amuṣiṣẹpọ pẹlu awọn olupin le ṣee lo fun titọ ti o tobi julọ, ṣugbọn eyi jẹ itan miiran…).

Kini RTC ṣe ni gba awọn wiwọn akoko, iyẹn rọrun. Iyatọ si awọn oriṣi miiran ti awọn iṣọ itanna ni pe wọn rọrun wiwọn akoko, ati pe o ṣe bẹ nipasẹ kika awọn iṣuu ifihan agbara aago, mọ igbohunsafẹfẹ rẹ ati awọn akoko. Ni afikun si akoko naa, RTC tun fun ọ laaye lati tọju iṣiro ti awọn ọjọ, awọn ọsẹ, awọn oṣu ati awọn ọdun. Iyẹn ni, ọjọ kikun ...

Fun eyi lati ṣee ṣe, RTC gbọdọ wa pẹlu a Xtal tabi kuotisi gara eyi ti yoo ṣe bi olupilẹṣẹ, ọkan ti o pese igbohunsafẹfẹ. Ni afikun, o nilo iyika itanna ti o lagbara lati ka ati titoju ọjọ ni iranti kan. Circuit naa gbọdọ jẹ agbara lati ka awọn iṣeju aaya, iṣẹju, awọn wakati, awọn ọjọ, awọn ọsẹ, awọn oṣu ati awọn ọdun.

Iyẹn iranti jẹ iyipadaTi o ni idi ti o nilo batiri, lati ni agbara igbagbogbo. Ti o ko ba ni batiri kan tabi o pari, yoo parẹ ... Iyẹn ni ohun ti o ṣẹlẹ si awọn PC nigbati batiri ba pari, wọn fun ni akoko ti ko tọ. Ti o ba tunto rẹ lakoko ti PC wa ni titan, akoko naa yoo wa ni pa, nitori RTC ti n ṣiṣẹ, ṣugbọn o wa lakoko awọn ilana lakoko ti o wa ni pipa nigbati o nilo batiri naa ...

Fun awọn iṣẹ akanṣe DIY, awọn oluṣe nigbagbogbo lo awọn eerun RTC meji ti o wọpọ, eyiti o jẹ DS1307 ati DS3231. Mejeeji ni o ṣe nipasẹ Maxim (tẹlẹ Dallas Semiconductor), ati pe DS3231 jẹ deede julọ ti awọn meji, nitori ko ṣe ni ipa nipasẹ awọn iyatọ iwọn otutu bi iṣaaju ṣe. Nitorinaa, ko ni iyipada pupọ da lori iwọn otutu, ati pe o tọju akoko diẹ sii ni deede.

Nigbakan, pẹlu awọn iyatọ iwọn otutu ti o ṣe akiyesi, DS1307 le jẹ aisun bi 1 tabi 2 min fun ọjọ kan. Ohunkan ti ko ni ifarada fun diẹ ninu awọn ohun elo.

DS3231 kii ṣe pe ko ni ipa nipasẹ awọn iyatọ, ṣugbọn pe o ti ṣe iwọn wiwọn otutu ati awọn ọna isanpada lati rii daju pe deede ti 2ppm, eyiti yoo jẹ deede si asiko asiko ti nipa 172ms ni ọjọ kan, iyẹn ni pe, diẹ diẹ sii ju 1 keji ni ọsẹ kan julọ. Ati ni iṣe, wọn ma yatọ si 1 tabi 2 awọn aaya nikan ni oṣu kan.

Bi fun ọna ibasọrọ pẹlu RTC DS3131 lati gba awọn iye ọjọ ti o gba, o ti ṣe nipasẹ I2C akero. Ati fun agbara, o le lo 2.3 si 5.5v fun DS3231, eyiti o dinku diẹ si 4.5 si 5.5v fun DS1307, nitorinaa o le jẹ agbara diẹ sii ati jẹ ki batiri naa pẹ.

Pẹlupẹlu, o yẹ ki o mọ pe awọn modulu wọnyi nigbagbogbo ni a Eeprom afikun AT24C32 lati tọju diẹ ninu awọn igbasilẹ ati awọn wiwọn iṣaaju, eyiti o jẹ iṣe to wulo.

Aplicaciones

Nipa awọn ohun elo naa, Mo ti sọ tẹlẹ diẹ ninu, gẹgẹbi lati ṣe aago kan pẹlu Arduino, lati ṣẹda eto kan ti o da lori Akoko naa Ohunkohun ti, lati tọju akoko lori ẹrọ gẹgẹbi awọn PC ati ọpọlọpọ awọn ẹrọ itanna miiran ati awọn ohun elo ti o ni akoko, ati bẹbẹ lọ.

Tun le ṣee lo ninu ise agbese lati ṣẹda awọn aago fun itanna, awọn ọna agbe, datalogger, ati bẹbẹ lọ. Awọn ohun elo le jẹ ọpọlọpọ lọpọlọpọ ...

Ra ohun RTC DS3231

Module DS3131 jẹ olowo poku, ati pe o le rii ni diẹ ninu awọn ile itaja itanna amọja tabi ni awọn ile itaja nla bii eBay, AliExpress, Amazon, abbl. Ti o ba nifẹ lati ni ọkan, nibi ni awọn iṣeduro kan:

DS3231 Arduino Isopọmọ

Iwoye ti Arduino IDE

Ti o ba fẹ ṣepọ DS3231 rẹ pẹlu igbimọ Arduino rẹ ki o bẹrẹ ṣiṣẹda awọn iṣẹ akanṣe “akoko”, o gbọdọ kọkọ ṣe awọn isopọ to yẹ. Lati ni anfani lati sopọ mọ, o rọrun bi:

  • PIN SLC ti ọkọ DS3231 gbọdọ ni asopọ si A5 ti rẹ Arduino UNO.
  • SDA ti DS3231 ti sopọ si A4 ti Arduino.
  • Vcc lati inu module naa yoo lọ si 5V lati Arduino.
  • GND si GND.
Ranti lati fi sori ẹrọ ile-ikawe lati lo RTC DS3231 ninu Arduino IDE rẹ tabi koodu kii yoo ṣiṣẹ ...

Bayi o ni eto ti a ti sopọ, ohun ti o tẹle ni lati kọ awọn Sketch orisun koodu lati ṣe eto rẹ. O le yipada awọn koodu ki o mu wọn baamu si awọn iwulo rẹ, ṣugbọn o le bẹrẹ nipa gbigba ọjọ lati ọdọ RTC DS3231 ti o sopọ mọ 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
}

Ati pe lati lo ọjọ RTC si seto diẹ ninu iṣẹ-ṣiṣe, gẹgẹ bi fun titan-an tabi pipa awọn ina, fun agbe laifọwọyi, tabi fun itaniji lati dun, ati bẹbẹ lọ. Ranti pe lati mu awọn ẹrọ foliteji ti o ga julọ o le lo awọn transistors tabi yii:

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


Awọn akoonu ti nkan naa faramọ awọn ilana wa ti awọn ilana olootu. Lati jabo aṣiṣe kan tẹ nibi.

Jẹ akọkọ lati sọ ọrọ

Fi ọrọ rẹ silẹ

Adirẹsi imeeli rẹ yoo ko le ṣe atejade. O beere aaye ti wa ni samisi pẹlu *

*

*

  1. Lodidi fun data naa: Miguel Ángel Gatón
  2. Idi ti data naa: SPAM Iṣakoso, iṣakoso ọrọ asọye.
  3. Ofin: Iyọọda rẹ
  4. Ibaraẹnisọrọ data: Awọn data kii yoo ni ifọrọhan si awọn ẹgbẹ kẹta ayafi nipasẹ ọranyan ofin.
  5. Ibi ipamọ data: Alaye data ti o gbalejo nipasẹ Awọn nẹtiwọọki Occentus (EU)
  6. Awọn ẹtọ: Ni eyikeyi akoko o le ni opin, gba pada ki o paarẹ alaye rẹ.