Nei moderni circuiti di temporizzazione del mondo elettronico sono molto importanti. Lo stesso è il caso di Arduino, Arduino ha un orologio da timer incorporato che conta a circa 49 giorni ma successivamente si ripristina. In secondo luogo, l'orologio interno Arduino non è accurato al 100%; C'è sempre una certa percentuale di ritardo tra l'orologio Arduino e un orologio esterno. Quindi, se si vuole creare un orologio accurato usando Arduino, dobbiamo fare affidamento su un modulo esterno noto come RTC (orologio in tempo reale). Vediamo come interfacciarsi questo modulo RTC con Arduino e creare un orologio digitale accurato.
Modulo RTC con Arduino
A volte lavorare su progetti Arduino necessita di un orologio temporale accurato per mantenere Arduino funzionare ed eseguire istruzioni e comandi speciali in un tempo specifico. Arduino ha un orologio incorporato, tuttavia non possiamo fare affidamento su di esso per due motivi:
Considerando i motivi sopra menzionati, gli utenti preferiscono utilizzare un orologio hardware esterno o un modulo RTC. Quindi, un modulo molto economico e super accurato ampiamente utilizzato è DS1307. Vediamo come collegare questo RTC con Arduino.
Imposta la libreria Arduino Modulo RTC
Per interfacciare Arduino con il modulo RTC dobbiamo installare alcune librerie necessarie in grado di leggere i dati dal modulo RTC. Seguire i passaggi per installare le librerie RTC:
Modulo RTC DS1307
Il modulo RTC DS1307 si basa sul piccolo chip clock DS1307 che supporta anche il protocollo di comunicazione I2C. Sul lato posteriore del modulo RTC abbiamo una batteria a cella di litio. Questo modulo può fornire informazioni accurate di secondi, minuti, ore, giorno, data, mese e anno. Ha anche la capacità di aggiustare il tempo automatico per 31 giorni al mese insieme al supporto per l'errore di salto. L'orologio può funzionare in un orologio di 12 ore o 24 ore.
Alcuni punti salienti principali di questo modulo RTC:
Pinout del modulo RTC
Nome PIN | Descrizione |
SCL | Pin di ingresso dell'orologio per interfaccia di comunicazione i2c |
SDA | Output di input dei dati per la comunicazione seriale I2C |
VCC | Pin di alimentazione vanno da 3.3v a 5v |
GND | Pin GND |
Ds | Utilizzare per l'ingresso del sensore di temperatura |
Sqw | Questo pin può generare quattro onde quadrate con frequenza 1Hz, 4kHz, 8kHz o 32kHz |
Pipistrello | Pin per backup della batteria se l'alimentazione principale interrotta |
Schema elettrico
Collegare la scheda Arduino con il modulo RTC come mostrato nel diagramma seguente. Qui i pin A4 e A5 di Arduino verranno utilizzati per la comunicazione I2C con moduli RTC mentre i pin 5V e GND daranno la potenza richiesta al modulo RTC.
DS 1307 RTC PIN | Arduino Pin |
Vin | 5v |
GND | GND |
SDA | A4 |
SCL | A5 |
Codice
#includere
#includere
RTC_DS3231 Real_time_Clock;
CHAR TEMP [32]; /*L'array char è definito*/
void setup ()
Seriale.Inizia (9600); /*Inizia la comunicazione seriale*/
Filo.inizio(); /*File libreria per iniziare la comunicazione*/
real_time_clock.inizio();
real_time_clock.Regola (DateTime (f (__ Data __), f (__ time__)));
/*real_time_clock.Regola (DateTime (2022, 09, 26, 1, 58, 0))*/
void loop ()
DateTime Now = Real_time_Clock.Ora();
Sprintf (Time, "%02D:%02D:%02d%02D/%02D/%02D", ora.ora (), ora.minuto (), ora.secondo (), ora.day (), ora.mese (), ora.anno());
Seriale.print (f ("data/ora:")); /*Questo stamperà la data e l'ora*/
Seriale.println (tempo);
ritardo (1000); /*Ritardo di 1 sec*/
All'inizio del codice prima che abbiamo incluso filo.H E Rtclib Per la comunicazione con i dispositivi. Abbiamo quindi creato un oggetto RTCLIB con il nome real_time_clock. Successivamente, abbiamo definito un array di carbone tempo di lunghezza 32, che memorizzerà le informazioni sulla data e ora.
Nella funzione di configurazione e loop abbiamo usato il seguente comando per assicurarci che la comunicazione I2C sia stabilita tra i moduli Arduino e RTC.
Filo.inizio E real_time_clock.inizio garantirà e verificherà la connessione RTC.
regolare() è una funzione sovraccarica che imposta data e ora.
DateTime (F (__ Date__), F (__ Time__))
Questa funzione imposterà la data e l'ora in cui è stato compilato lo schizzo.
IL Ora() Funzioni La data e l'ora di ritorno e il suo valore si archiverà in variabile "tempo".
Ora successiva, minuto, secondo, giorno, mese, anno calcolerà la data esatta e la stampa sul monitor seriale con un ritardo di 1 sec.
Hardware
Produzione
Il monitor seriale inizierà a stampare l'ora e la data in cui il codice viene caricato nella scheda Arduino.
Conclusione
Arduino stesso ha alcune funzioni relative al tempo come millis (), micros (). Tuttavia, queste funzioni non danno tempo esatto; C'è sempre la possibilità di ritardare alcuni millisecondi. Per evitare questo mentre si utilizzano i moduli esterni Arduino RTC vengono utilizzati. Questi moduli come DS1307 ci danno tempo esatto con un backup della batteria che può durare per molti anni. Questa guida copre come interfacciare questi moduli RTC con una scheda Arduino.