Come preparare l'orologio Arduino Infinity usando il modulo RTC

Come preparare l'orologio Arduino Infinity usando il modulo RTC

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:

    • L'orologio Arduino è impreciso con un errore percentuale di 0.5-1%.
    • L'orologio Arduino si ripristinerà automaticamente una volta ripristinato la scheda.
    • Gli orologi Arduino non hanno backup di alimentazione se Arduino perde l'alimentazione, il suo orologio si ripristinerà automaticamente.

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:

    1. Aprire Ide
    2. Vai a Sezione libreria
    3. Ricerca "RTCLIB"
    4. Installa il DS3231_RTC E Rtclib di Adafruit.

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:

    • Può funzionare su fornitura 5v dc
    • Output di onde quadrate che possono essere programmate
    • Rilevamento di insufficienza di potenza
    • Consumare una quantità molto inferiore di corrente (500 mA)
    • RAM non volatile da 56 byte
    • Backup della batteria

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.