Aquest rellotge en temps real basat en Arduino és un rellotge digital per mostrar temps real mitjançant un IC RTC DS1307 que funciona amb el protocol I2C. El rellotge en temps real significa que funciona fins i tot després de la fallada de corrent. Quan es torna a connectar l’alimentació, mostra el temps real independentment del temps i la durada en què es trobava en estat apagat. En aquest projecte de despertador Arduino, hem utilitzat un mòdul LCD de 16x2 per mostrar l'hora en format "hora, minut, segons, data, mes i any". També s’afegeix una opció d’alarma i podem configurar l’hora de l’alarma. Un cop l'hora d'alarma s'ha guardat a la EEPROM interna de l'arduino, es manté guardat fins i tot després d'un restabliment o fallada d'electricitat. Els rellotges en temps real s’utilitzen habitualment als nostres ordinadors, cases, oficines i dispositius electrònics per mantenir-los actualitzats amb temps real.
El protocol I2C és un mètode per connectar dos o més dispositius mitjançant dos cables a un sol sistema i, per tant, aquest protocol també s’anomena protocol de dos fils. Es pot utilitzar per comunicar 127 dispositius a un sol dispositiu o processador. La majoria dels dispositius I2C funcionen amb una freqüència de 100 KHz.
Passos per escriure dades de mestre a esclau (mode de recepció d'esclaus)
- Envia la condició START a l’esclau.
- Envia l'adreça de l'esclau a l'esclau.
- Envia el bit d’escriptura (0) a l’esclau.
- Bit ACK rebut de l'esclau
- Envia les paraules adreçades a l’esclau.
- Bit ACK rebut de l'esclau
- Envia dades a l’esclau.
- Bit ACK rebut de l'esclau.
- I per últim envia la condició STOP a l’esclau.
Passos per a la lectura de dades d'esclau a mestre (mode de transmissió d'esclau)
- Envia la condició START a l’esclau.
- Envia l'adreça de l'esclau a l'esclau.
- Envia el bit de lectura (1) a l'esclau.
- Bit ACK rebut de l'esclau
- Dades rebudes de l'esclau
- Bit ACK rebut de l'esclau.
- Envia la condició STOP a l'esclau.
Per construir aquest rellotge digital basat en IC RTC DS1307 , hem utilitzat aquí Arduino Pro Mini, però també podeu utilitzar qualsevol altre model Arduino com Arduino Uno o Arduino Nano. Juntament amb la placa Arduino, DS1307 RTC IC, hem utilitzat un mòdul LCD de 16x2 per mostrar la data i l’hora, un oscil·lador de cristall, regulador de voltatge 7805, un brunzidor i pocs transistors i resistències.
Diagrama i descripció del circuit

En aquest circuit de rellotge digital basat en Arduino, hem utilitzat tres components principals que són IC DS1307, la placa Arduino Pro Mini i el mòdul LCD de 16x2.
Aquí l’arduino s’utilitza per llegir el temps des del ds1307 i mostrar-lo a la pantalla LCD de 16x2. DS1307 envia l'hora / la data mitjançant 2 línies a arduino. També s’utilitza un timbre per indicar l’alarma, que emet un so quan s’activa l’alarma. A continuació es mostra un diagrama de blocs per entendre el funcionament d’aquest rellotge en temps real.

Com podeu veure al diagrama del circuit, els pins SDA i SCL del xip DS1307 estan connectats als pins SDA i SCL d’arduino amb una resistència pull up que manté el valor per defecte ALT a les línies de dades i de rellotge. L'oscil·lador de cristall de 32,768 KHz està connectat amb el xip DS1307 per generar un retard exacte d'1 segon, i una bateria de 3 volts també està connectada al pin 3rd (BAT) de DS1307, que manté el temps en funcionament després d'una fallada d'electricitat. La pantalla LCD de 16 x 2 està connectada amb arduino en mode de 4 bits. Els pins de control RS, RW i En estan connectats directament al pin 2 d’arduino, GND i 3. I el pin de dades D0-D7 està connectat a 4, 5, 6, 7 d’arduino. Un zumbador està connectat amb el pin arduino número 13 a través d’un transistor NPN BC547 que té una resistència d’1 k a la base.
S’utilitzen tres botons set, INC i Next per configurar l’alarma als pins 12, 11 i 10 d’arduino en mode actiu baix. Quan premem set, s'activa el mode de configuració d'alarma i ara hem de configurar l'alarma mitjançant el botó INC i el botó Next (Següent) s'utilitza per passar al dígit. A la imatge següent es mostra la configuració completa d’aquest tauler de rellotge amb alarma en temps real. També podeu consultar un tutorial detallat sobre el despertador digital amb microcontrolador AVR.

Descripció del programa
Per programar aquest rellotge en temps real, hem utilitzat algunes biblioteques per extreure l'hora / la data del DS1307 i per mostrar-les en pantalla LCD, que es mostren a continuació:

I la inicialització de RTC, LCD i sortida d’entrada es realitza al bucle de configuració.

La resta de coses com ara el temps de lectura, la configuració de l'alarma es realitza a la secció de bucle buit.

