Tabla de contenido:
- Paso 1: componentes necesarios
- Paso 2: Conexión del reloj Arduino
- Paso 3: Código para el reloj Arduino con RTC
Video: Reloj en tiempo real con Arduino: 3 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
En este proyecto, haremos un reloj con la ayuda del módulo Arduino y RTC. Como sabemos, Arduino no puede mostrar la hora real, por lo que usaremos el módulo RTC para mostrar la hora correcta en la pantalla LCD. Lee todo el paso con atención, te ayudará mucho a hacer el mecanismo de relojería.
El código DS3231 Arduino es como el código DS1307 y funciona con ambos chips RTC.
El código Arduino debajo no utiliza ninguna biblioteca para DS3231 RTC, la biblioteca Wire es para la correspondencia entre Arduino y DS3231 utilizando la convención I2C.
¡Sí! Muchos ingenieros electrónicos dependen de él para sus proyectos basados en el tiempo, pero RTC no es completamente confiable. Funciona con pilas y debe sustituirse tarde o temprano. Al llegar a los proyectos de IoT, ocupa valiosos pines SPI (interfaz periférica en serie) y se ensucia con los cables enredados. Solución… Aquí viene nuestro héroe NTP (protocolo de tiempo de red). NTP es tan preciso ya que obtiene tiempo de Internet. Vamos a operar este protocolo usando un modo cliente-servidor. el proceso es tan simple que nuestro Nodemcu actúa como cliente y solicita un paquete NTP del servidor usando UDP. A cambio, el servidor envía un paquete al cliente que analiza los datos. NTP es el protocolo de sincronización de hora universal. Ahora iluminemos nuestra estación de trabajo de laboratorios
Paso 1: componentes necesarios
- Placa arduino
- Tarjeta DS3231 RTC
- Pantalla LCD 16x2
- 2 x pulsador
- Resistencia variable de 10K ohmios (o potenciómetro)
- Resistencia de 330 ohmios
- Batería de celda de moneda de 3V
- Tablero de circuitos
- Cables de puente
Molécula RTC DS3231
El tiempo es un sentido esencial requerido en este mundo acelerado de seres humanos. En proyecto en tiempo real
Usamos RTC (también conocido como reloj en tiempo real)
RTC Real-time-clock (RTC) es un circuito integrado (IC) que realiza un seguimiento de la hora actual. RTC se encarga de la hora en modo real. El RTC generalmente se encuentra en placas base de computadoras y sistemas integrados para requerir acceso oportuno.
Paso 2: Conexión del reloj Arduino
- Conecte el pin SCL al módulo RTC al Arduino A5
- Conecte el pin SDA al módulo RTC al Arduino A4
- Conecte VCC a 5v y GND TO GND
- Conecte un pulsador al pin 8
- Conecte otro pulsador al pin 9
- Conecte RS de LCD al pin 2 de Arduino
- Conecte E de LCD al pin 3 de Arduino
- Conecte D7 de LCD al pin 7 de Arduino
- Conecte D6 de LCD al pin 6 de Arduino
- Conecte D5 de LCD al pin 5 de Arduino
- Conecte D4 de LCD al pin 4 de Arduino
- Conecte VSS & K a GND
- Conecte VDD & A al 5v
- Conecte vo al pin de salida del potenciómetro
Paso 3: Código para el reloj Arduino con RTC
El DS3231 funciona solo con formato BCD y para convertir el BCD a decimal y viceversa, utilicé las 2 líneas siguientes (ejemplo de minuto): // Convertir BCD a decimalminute = (minuto >> 4) * 10 + (minuto y 0x0F);
// Convertir decimal a BCDminute = ((minuto / 10) << 4) + (minuto% 10); void DS3231_display (): muestra la hora y el calendario, antes de mostrar la hora y los datos del calendario se convierten de BCD a formato decimal.
// Reloj en tiempo real y calendario con botones de configuración usando DS3231 y Arduino // incluye código de biblioteca LCD #include // incluye código de biblioteca Wire (necesario para dispositivos de protocolo I2C) #include // Conexiones del módulo LCD (RS, E, D4, D5, D6, D7) LCD de cristal líquido (2, 3, 4, 5, 6, 7); configuración vacía () {pinMode (8, INPUT_PULLUP); // button1 está conectado al pin 8 pinMode (9, INPUT_PULLUP); // button2 está conectado al pin 9 // configura el número de columnas y filas de la pantalla LCD lcd.begin (16, 2); Wire.begin (); // Únete al bus i2c} char Time = "TIME:::"; char Calendar = "FECHA: / / 20"; byte i, segundo, minuto, hora, fecha, mes, año; void DS3231_display () {// Convertir BCD a decimal segundo = (segundo >> 4) * 10 + (segundo & 0x0F); minuto = (minuto >> 4) * 10 + (minuto & 0x0F); hora = (hora >> 4) * 10 + (hora & 0x0F); fecha = (fecha >> 4) * 10 + (fecha & 0x0F); mes = (mes >> 4) * 10 + (mes y 0x0F); año = (año >> 4) * 10 + (año & 0x0F); // Hora de finalización de la conversión [12] = segundo% 10 + 48; Tiempo [11] = segundo / 10 + 48; Tiempo [9] = minuto% 10 + 48; Tiempo [8] = minuto / 10 + 48; Tiempo [6] = hora% 10 + 48; Tiempo [5] = hora / 10 + 48; Calendario [14] = año% 10 + 48; Calendario [13] = año / 10 + 48; Calendario [9] = mes% 10 + 48; Calendario [8] = mes / 10 + 48; Calendario [6] = fecha% 10 + 48; Calendario [5] = fecha / 10 + 48; lcd.setCursor (0, 0); lcd.print (Hora); // Mostrar hora lcd.setCursor (0, 1); lcd.print (Calendario); // Mostrar calendario} void blink_parameter () {byte j = 0; while (j 23) // Si horas> 23 ==> horas = 0 parámetro = 0; if (i == 1 && parámetro> 59) // Si minutos> 59 ==> minutos = 0 parámetro = 0; if (i == 2 && parámetro> 31) // Si fecha> 31 ==> fecha = 1 parámetro = 1; if (i == 3 && parámetro> 12) // Si mes> 12 ==> mes = 1 parámetro = 1; if (i == 4 && parámetro> 99) // Si año> 99 ==> año = 0 parámetro = 0; sprintf (texto, "% 02u", parámetro); lcd.setCursor (x, y); lcd.print (texto); retraso (200); // Espere 200ms} lcd.setCursor (x, y); lcd.print (""); // Mostrar dos espacios blink_parameter (); sprintf (texto, "% 02u", parámetro); lcd.setCursor (x, y); lcd.print (texto); blink_parameter (); if (! digitalRead (8)) {// Si se presiona el botón (pin # 8) i ++; // Incremento 'i' para el siguiente parámetro return parámetro; // Devuelve el valor del parámetro y sale}}} void loop () {if (! DigitalRead (8)) {// Si se presiona el botón (pin # 8) i = 0; hora = editar (5, 0, hora); minuto = editar (8, 0, minuto); fecha = editar (5, 1, fecha); mes = editar (8, 1, mes); año = editar (13, 1, año); // Convertir decimal a BCD minuto = ((minuto / 10) << 4) + (minuto% 10); hora = ((hora / 10) << 4) + (hora% 10); fecha = ((fecha / 10) << 4) + (fecha% 10); mes = ((mes / 10) << 4) + (mes% 10); año = ((año / 10) << 4) + (año% 10); // Finalizar la conversión // Escribir datos en DS3231 RTC Wire.beginTransmission (0x68); // Inicie el protocolo I2C con la dirección DS3231 Wire.write (0); // Enviar dirección de registro Wire.write (0); // Reinicia los segundos e inicia el oscilador Wire.write (minuto); // Escribe el minuto Wire.write (hora); // Hora de escritura Wire.write (1); // Día de escritura (no utilizado) Wire.write (fecha); // Fecha de escritura Wire.write (mes); // Escribir mes Wire.write (año); // Escribe el año Wire.endTransmission (); // Detener la transmisión y liberar el retardo del bus I2C (200); // Espere 200ms} Wire.beginTransmission (0x68); // Inicie el protocolo I2C con la dirección DS3231 Wire.write (0); // Enviar dirección de registro Wire.endTransmission (false); // Reinicio de I2C Wire.requestFrom (0x68, 7); // Solicite 7 bytes de DS3231 y libere el bus I2C al final de la lectura second = Wire.read (); // Leer segundos del registro 0 minuto = Wire.read (); // Leer minutos del registro 1 hora = Wire.read (); // Leer la hora del registro 2 Wire.read (); // Leer el día del registro 3 (no usado) date = Wire.read (); // Leer fecha del registro 4 mes = Wire.read (); // Leer mes del registro 5 año = Wire.read (); // Leer año del registro 6 DS3231_display (); // Tiempo de visualización y retraso del calendario (50); // Espere 50 ms}
Recomendado:
Reloj de tiempo real con AT89s52: 3 pasos
Reloj de tiempo real usando AT89s52: BIENVENIDO DE NUEVO, Este es shubham Trivedi y hoy voy a diseñar el reloj de tiempo real usando el microcontrolador At89s52. El microcontrolador AT89S52 es el corazón de este proyecto. DS1307 IC se utiliza como RTC. Este DS1307 IC requería una interfaz I2C, pero 89
Uso de módulos de reloj en tiempo real DS1307 y DS3231 con Arduino: 3 pasos
Uso de módulos de reloj en tiempo real DS1307 y DS3231 con Arduino: Seguimos recibiendo solicitudes sobre cómo usar los módulos de reloj en tiempo real DS1307 y DS3231 con Arduino de varias fuentes, por lo que este es el primero de un tutorial de dos partes sobre cómo usarlos. Para este tutorial de Arduino tenemos dos módulos de reloj en tiempo real para nosotros
DS1307 Reloj en tiempo real RTC con Arduino: 4 pasos
DS1307 Real Time Clock RTC con Arduino: En este tutorial, aprenderemos sobre Real Time Clock (RTC) y cómo Arduino & El reloj de tiempo real IC DS1307 se ensambla como un dispositivo de cronometraje. El reloj de tiempo real (RTC) se usa para monitorear el tiempo y mantener un calendario. Para usar un RTC, w
Hacer un reloj con M5stick C usando Arduino IDE - Reloj de tiempo real RTC con M5stack M5stick-C: 4 pasos
Hacer un reloj con M5stick C usando Arduino IDE | Reloj en tiempo real RTC con M5stack M5stick-C: Hola chicos, en este instructables aprenderemos cómo hacer un reloj con la placa de desarrollo m5stick-C de m5stack usando Arduino IDE. Entonces m5stick mostrará la fecha, hora y amp; semana del mes en la pantalla
Cómo hacer un reloj en tiempo real con Arduino y pantalla TFT - Arduino Mega RTC con pantalla TFT de 3,5 pulgadas: 4 pasos
Cómo hacer un reloj en tiempo real usando Arduino y pantalla TFT | Arduino Mega RTC con pantalla TFT de 3.5 pulgadas: Visite mi canal de Youtube. Introducción: - En esta publicación voy a hacer un "Reloj en tiempo real" usando LCD táctil TFT de 3.5 pulgadas, Arduino Mega Módulo RTC 2560 y DS3231… .Antes de comenzar… verifique el video de mi canal de YouTube. Nota: - Si está usando Arduin