Come e perché aggiungere un orologio in tempo reale ad Arduino

Come e perché aggiungere un orologio in tempo reale ad Arduino

Tenere il tempo sui progetti Arduino non è così facile come potresti pensare: una volta che la connessione al computer non è disponibile, il tuo Arduino non alimentato smette semplicemente di funzionare, incluso il suo ticker interno.





cosa fa il processore in un computer?

Per mantenere il tuo Arduino sincronizzato con il mondo che lo circonda, avrai bisogno di quello che viene chiamato un 'modulo Real Time Clock'. Ecco come usarne uno.





Qual è lo scopo di un orologio in tempo reale (RTC)?

Molto probabilmente il tuo computer sincronizza l'ora con Internet, ma ha ancora un orologio interno che continua a funzionare anche senza una connessione Internet o l'alimentazione è spenta. Quando usi un Arduino collegato a un computer, ha accesso all'ora precisa fornita dall'orologio di sistema. È abbastanza utile, ma la maggior parte dei progetti Arduino sono progettati per essere utilizzati lontano da un computer: a quel punto, ogni volta che l'alimentazione viene scollegata o l'Arduino riavviato, non avrà assolutamente idea di che ore siano. L'orologio interno verrà azzerato e ricomincerà a contare da zero la prossima volta che verrà acceso.





Se il tuo progetto ha a che fare con il bisogno di tempo, come la mia luce notturna e la sveglia all'alba, questo sarà chiaramente un problema. In quel progetto, abbiamo aggirato il problema impostando manualmente l'ora ogni notte in un modo piuttosto rozzo: l'utente premeva il pulsante di ripristino appena prima di andare a letto, fornendo una sincronizzazione manuale dell'ora. Chiaramente non è una soluzione ideale a lungo termine.

Un modulo RTC è un ulteriore pezzo di circuito, che richiede una piccola batteria a bottone, che continua a contare il tempo anche quando Arduino è spento. Dopo essere stato impostato una volta, manterrà quel tempo per tutta la durata della batteria, di solito circa un anno buono.



TinyRTC

L'RTC più popolare per Arduino si chiama TinyRTC e può essere acquistato per circa $ 5- $ 10 su eBay. Molto probabilmente dovrai fornire la tua batteria (è illegale spedirli all'estero in molti luoghi) e alcune intestazioni (i pin che si incastrano nei fori, che dovrai saldare da solo).

Questo è il modulo che ho:





Ha anche un sensore di temperatura integrato, anche se la batteria durerà più a lungo se non la usi.

Il numero di buchi su quella cosa sembra piuttosto spaventoso, ma te ne servono solo quattro; GND, VCC, SCL e SDA: è possibile utilizzare i relativi pin su entrambi i lati del modulo RTC. Parli con l'orologio usando Protocollo I2C , il che significa che vengono utilizzati solo due pin: uno per l''orologio' (un orologio per i dati delle comunicazioni seriali, niente a che fare con l'ora) e uno per i dati. In effetti, puoi persino concatenare fino a 121 dispositivi I2C sugli stessi due pin - dai un'occhiata questa pagina di Adafruit per una selezione di altri dispositivi I2C potresti aggiungere, perché ce ne sono molti!





Iniziare

Collega il tuo modulo TinyRTC secondo lo schema qui sotto: la linea DS rosa non è necessaria, poiché è per il sensore di temperatura.

Quindi, scarica il Tempo e DS1307RTC librerie e posiziona le cartelle risultanti nel tuo /biblioteche cartella.

Esci e riavvia l'ambiente Arduino per caricare le librerie e gli esempi.

Troverai due esempi nel menu DS1307RTC: carica ed esegui il Tempo impostato esempio prima - questo imposterà l'RTC sull'ora corretta. Il codice effettivo non vale la pena entrare nei dettagli, sappi solo che devi eseguirlo una volta per eseguire la sincronizzazione dell'ora iniziale.

Quindi, guarda l'esempio di utilizzo con LeggiTest .

perché il mio telefono è così lento su Internet?

#include
#include
#include
void setup() {
Serial.begin(9600);
while (!Serial) ; // wait for serial
delay(200);
Serial.println('DS1307RTC Read Test');
Serial.println('-------------------');
}
void loop() {
tmElements_t tm;
if (RTC.read(tm)) {
Serial.print('Ok, Time = ');
print2digits(tm.Hour);
Serial.write(':');
print2digits(tm.Minute);
Serial.write(':');
print2digits(tm.Second);
Serial.print(', Date (D/M/Y) = ');
Serial.print(tm.Day);
Serial.write('/');
Serial.print(tm.Month);
Serial.write('/');
Serial.print(tmYearToCalendar(tm.Year));
Serial.println();
} else {
if (RTC.chipPresent()) {
Serial.println('The DS1307 is stopped. Please run the SetTime');
Serial.println('example to initialize the time and begin running.');
Serial.println();
} else {
Serial.println('DS1307 read error! Please check the circuitry.');
Serial.println();
}
delay(9000);
}
delay(1000);
}
void print2digits(int number) {
if (number >= 0 && number <10) {
Serial.write('0');
}
Serial.print(number);
}

Nota che abbiamo incluso anche il core Filo.h libreria: viene fornita con Arduino e viene utilizzata per comunicare su I2C. Carica il codice, apri la console seriale a 9600 baud e guarda e il tuo Arduino emette l'ora corrente ogni secondo. Meravigliosa!

Il codice più importante nell'esempio è la creazione di a tmElements_t tm - questo un struttura che popoleremo con l'ora corrente; e il RTC.read(tm) funzione, che ottiene l'ora corrente dal modulo RTC, la inserisce nel nostro tm struttura e restituisce true se tutto è andato bene. Aggiungi il tuo debug o il codice logico all'interno dell'istruzione 'if', ad esempio stampando l'ora o reagendo ad essa.

come sbarazzarsi di uno sfondo in una foto

Ora che sai come ottenere l'ora giusta con Arduino, puoi provare a riscrivere il progetto della sveglia all'alba o creare un word clock a LED: le possibilità sono infinite! Cosa farai?

Crediti immagine: Snootlab Tramite Flickr

Condividere Condividere Tweet E-mail Come cambiare l'aspetto del desktop di Windows 10

Vuoi sapere come migliorare l'aspetto di Windows 10? Usa queste semplici personalizzazioni per personalizzare Windows 10.

Leggi Avanti
Argomenti correlati
  • Fai da te
  • Arduino
Circa l'autore James Bruce(707 articoli pubblicati)

James ha una laurea in Intelligenza Artificiale ed è certificato CompTIA A+ e Network+. Quando non è impegnato come editor di recensioni hardware, gli piacciono i LEGO, la realtà virtuale e i giochi da tavolo. Prima di entrare a far parte di MakeUseOf, era un tecnico luci, insegnante di inglese e ingegnere di data center.

Altro da James Bruce

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti