Este reloj de tiempo real basado en Arduino es un reloj digital para mostrar el tiempo real usando un RTC IC DS1307 que funciona en el protocolo I2C. El reloj en tiempo real significa que funciona incluso después de un corte de energía. Cuando se vuelve a conectar la energía, muestra el tiempo real i, independientemente del tiempo y la duración que estuvo en estado apagado. En este proyecto de reloj despertador Arduino hemos utilizado un módulo LCD de 16x2 para mostrar la hora en formato - "hora, minuto, segundos, fecha, mes y año". También se agrega una opción de Alarma y podemos configurar la hora de la alarma. Una vez que se guarda la hora de la alarma en la EEPROM interna de arduino, permanece guardada incluso después de un reinicio o una falla eléctrica. Los relojes en tiempo real se utilizan comúnmente en nuestras computadoras, casas, oficinas y dispositivos electrónicos para mantenerlos actualizados con tiempo real.
El protocolo I2C es un método para conectar dos o más dispositivos mediante dos cables a un solo sistema, por lo que este protocolo también se denomina protocolo de dos cables. Se puede utilizar para comunicar 127 dispositivos a un solo dispositivo o procesador. La mayoría de los dispositivos I2C funcionan con una frecuencia de 100 kHz.
Pasos para la escritura de datos maestro a esclavo (modo de recepción esclavo)
- Envía la condición de ARRANQUE al esclavo.
- Envía la dirección del esclavo al esclavo.
- Envíe el bit de escritura (0) al esclavo.
- Recibido el bit ACK del esclavo
- Envía la dirección de las palabras al esclavo.
- Recibido el bit ACK del esclavo
- Envía datos al esclavo.
- Se recibió el bit ACK del esclavo.
- Y por último envía la condición STOP al esclavo.
Pasos para la lectura de datos de esclavo a maestro (modo de transmisión de esclavo)
- Envía la condición de ARRANQUE al esclavo.
- Envía la dirección del esclavo al esclavo.
- Envíe el bit de lectura (1) al esclavo.
- Recibido el bit ACK del esclavo
- Datos recibidos del esclavo
- Se recibió el bit ACK del esclavo.
- Envía la condición STOP al esclavo.
Para construir este reloj digital basado en RTC DS1307 IC , hemos usado aquí Arduino Pro Mini, pero también puede usar cualquier otro modelo de Arduino como Arduino Uno o Arduino Nano. Junto con la placa Arduino, DS1307 RTC IC, hemos utilizado un módulo LCD 16x2 para mostrar la hora y la fecha, un osciallator de cristal, un regulador de voltaje 7805, un zumbador y algunos transistores y resistencias.
Diagrama y descripción del circuito
En este circuito de reloj digital basado en Arduino, hemos utilizado tres componentes principales que son IC DS1307, Arduino Pro Mini Board y módulo LCD 16x2.
Aquí arduino se utiliza para leer el tiempo de ds1307 y mostrarlo en una pantalla LCD de 16x2. DS1307 envía la hora / fecha usando 2 líneas a arduino. También se utiliza un zumbador para la indicación de alarma, que suena cuando se activa la alarma. A continuación se muestra un diagrama de bloques para comprender el funcionamiento de este reloj en tiempo real.
Como puede ver en el diagrama de circuito, los pines SDA y SCL del chip DS1307 están conectados a los pines SDA y SCL de arduino con una resistencia de extracción que mantiene el valor predeterminado ALTO en las líneas de datos y reloj. El oscilador de cristal de 32.768KHz está conectado con el chip DS1307 para generar un retraso exacto de 1 segundo, y una batería de 3 voltios también está conectada al pin 3 rd (BAT) de DS1307 que mantiene el tiempo en marcha después de un corte de electricidad. La pantalla LCD de 16x2 está conectada con arduino en modo de 4 bits. Los pines de control RS, RW y En están conectados directamente al pin 2, GND y 3 de arduino. Y el pin de datos D0-D7 está conectado a 4, 5, 6, 7 de arduino. Un zumbador está conectado con el pin número 13 de arduino a través de un transistor NPN BC547 que tiene una resistencia de 1 k en su base.
Tres botones, a saber, set, INC y Next se utilizan para configurar la alarma en los pines 12, 11 y 10 de arduino en modo activo bajo. Cuando presionamos set, el modo de ajuste de alarma se activa y ahora necesitamos configurar la alarma usando el botón INC y el botón Siguiente se usa para mover al dígito. La configuración completa de la placa de pruebas de este reloj en tiempo real con alarma se muestra en la siguiente imagen. También puede consultar un tutorial detallado sobre reloj despertador digital con microcontrolador AVR.
Descripción del programa
Para programar este reloj en tiempo real, hemos utilizado algunas bibliotecas para extraer la hora / fecha de DS1307 y para mostrar en la pantalla LCD, que se indican a continuación:
Y la inicialización de RTC, LCD y salida de entrada se realizan en el ciclo de configuración.
El resto de cosas como el tiempo de lectura, la configuración de la alarma se realiza en la sección de bucle vacío.