Questo orologio in tempo reale basato su Arduino è un orologio digitale per visualizzare in tempo reale utilizzando un RTC IC DS1307 che funziona su protocollo I2C. L'orologio in tempo reale significa che funziona anche dopo un'interruzione di corrente. Quando l'alimentazione viene ricollegata, visualizza il tempo reale indipendentemente dall'ora e dalla durata in cui è stato spento. In questo progetto di sveglia Arduino abbiamo utilizzato un modulo LCD 16x2 per visualizzare l'ora in formato "ora, minuti, secondi, data, mese e anno". Viene inoltre aggiunta un'opzione di allarme e possiamo impostare l'ora della sveglia. Una volta che l'ora dell'allarme è stata salvata nella EEPROM interna di arduino, rimane salvata anche dopo il ripristino o il guasto elettrico. Gli orologi in tempo reale sono comunemente utilizzati nei nostri computer, case, uffici e dispositivi elettronici per mantenerli aggiornati in tempo reale.
Il protocollo I2C è un metodo per collegare due o più dispositivi utilizzando due fili a un unico sistema, quindi questo protocollo è anche chiamato protocollo a due fili. Può essere utilizzato per comunicare 127 dispositivi a un singolo dispositivo o processore. La maggior parte dei dispositivi I2C funziona con una frequenza di 100 Khz.
Passaggi per la scrittura dei dati da master a slave (modalità di ricezione slave)
- Invia la condizione START allo slave.
- Invia l'indirizzo dello slave allo slave.
- Invia il bit di scrittura (0) allo slave.
- Ricevuto ACK bit dallo slave
- Invia parole indirizzo allo slave.
- Ricevuto ACK bit dallo slave
- Invia i dati allo slave.
- Ricevuto ACK bit dallo slave.
- E l'ultimo invia la condizione di STOP allo slave.
Passaggi per la lettura dei dati da slave a master (modalità di trasmissione slave)
- Invia la condizione START allo slave.
- Invia l'indirizzo dello slave allo slave.
- Invia il bit di lettura (1) allo slave.
- Ricevuto ACK bit dallo slave
- Dati ricevuti dallo slave
- Ricevuto ACK bit dallo slave.
- Invia la condizione di STOP allo slave.
Per costruire questo orologio digitale basato su IC RTC DS1307 , abbiamo usato qui Arduino Pro Mini, ma puoi anche usare qualsiasi altro modello Arduino come Arduino Uno o Arduino Nano. Insieme alla scheda Arduino, DS1307 RTC IC, abbiamo utilizzato il modulo LCD 16x2 per visualizzare l'ora e la data, un osciallatore a cristallo, un regolatore di tensione 7805, un cicalino e pochi transistor e resistenze.
Schema e descrizione del circuito
In questo circuito di clock digitale basato su Arduino, abbiamo utilizzato tre componenti principali che sono IC DS1307, Arduino Pro Mini Board e modulo LCD 16x2.
Qui arduino viene utilizzato per leggere il tempo da ds1307 e visualizzarlo su LCD 16x2. DS1307 invia ora / data utilizzando 2 linee ad arduino. Un cicalino viene utilizzato anche per l'indicazione dell'allarme, che emette un segnale acustico quando l'allarme viene attivato. Di seguito viene mostrato un diagramma a blocchi per comprendere il funzionamento di questo orologio in tempo reale.
Come puoi vedere nello schema del circuito, i pin SDA e SCL del chip DS1307 sono collegati ai pin arduino SDA e SCL con un resistore di pull up che mantiene il valore predefinito ALTO sulle linee dati e clock. L'oscillatore a cristallo da 32,768 KHz è collegato al chip DS1307 per generare un ritardo esatto di 1 secondo e una batteria da 3 volt è anche collegata al pin 3 ° (BAT) di DS1307 che mantiene il tempo in esecuzione dopo un'interruzione di elettricità. L'LCD 16x2 è collegato ad arduino in modalità 4 bit. I pin di controllo RS, RW ed En sono collegati direttamente al pin 2, GND e 3. di arduino. E il pin dati D0-D7 è collegato a 4, 5, 6, 7 di arduino. Un buzzer è collegato al pin numero 13 di arduino tramite un transistor NPN BC547 con un resistore da 1 k alla sua base.
Tre pulsanti, ovvero set, INC e Next, vengono utilizzati per impostare l'allarme sui pin 12, 11 e 10 di arduino in modalità bassa attiva. Quando si preme set, si attiva la modalità di impostazione della sveglia e ora è necessario impostare la sveglia utilizzando il pulsante INC e il pulsante Avanti viene utilizzato per spostarsi sulla cifra. La configurazione completa della breadboard di questo orologio in tempo reale con allarme è mostrata nell'immagine sottostante. Puoi anche controllare un tutorial dettagliato sulla sveglia digitale con microcontrollore AVR.
Descrizione del programma
Per programmare questo orologio in tempo reale, abbiamo utilizzato alcune librerie per l'estrazione di ora / data da DS1307 e per la visualizzazione su LCD, che sono riportate di seguito:
E l'inizializzazione di RTC, LCD e input output viene eseguita nel ciclo di configurazione.
Il resto delle cose come il tempo di lettura, l'impostazione dell'allarme viene eseguito nella sezione loop vuoto.