Cum și de ce să adăugați un ceas în timp real la Arduino

Cum și de ce să adăugați un ceas în timp real la Arduino

Păstrarea timpului în proiectele Arduino nu este atât de ușoară pe cât ai putea crede: odată ce conexiunea la computer nu este acolo, Arduino-ul tău neputernic încetează pur și simplu să ruleze, inclusiv marcatorul său intern.





ar trebui să-mi aduc computerul de joc la facultate

Pentru a vă menține Arduino sincronizat cu lumea din jur, veți avea nevoie de ceea ce se numește „modul în timp real”. Iată cum folosiți unul.





Ce rost are un ceas în timp real (RTC)?

Cel mai probabil computerul dvs. își sincronizează timpul cu internetul, dar are în continuare un ceas intern care continuă să funcționeze chiar și fără o conexiune la internet sau alimentarea este oprită. Când utilizați un Arduino conectat la un computer, acesta are acces la ora exactă oferită de ceasul sistemului. Este destul de util, dar majoritatea proiectelor Arduino sunt concepute pentru a fi folosite departe de computer - moment în care, de fiecare dată când alimentarea este deconectată sau Arduino repornește, nu va avea absolut nicio idee despre ce oră este. Ceasul intern va fi resetat și va începe să numere din nou de la zero data viitoare când este pornit.





Dacă proiectul dvs. are legătură cu necesitatea timpului - cum ar fi lumina nopții și ceasul cu alarmă de răsărit - acesta va fi în mod clar o problemă. În acel proiect, am rezolvat problema setând manual ora în fiecare seară într-un mod destul de grosolan - utilizatorul apăsa butonul de resetare chiar înainte de a merge la culcare, oferind o sincronizare manuală a orei. În mod clar, aceasta nu este o soluție ideală pe termen lung.

Un modul RTC este un bit suplimentar de circuite, care necesită o baterie mică, care continuă să numere timpul chiar și atunci când Arduino este oprit. După ce a fost setat o singură dată - va păstra acel timp pentru durata de viață a bateriei, de obicei un an bun sau cam așa ceva.



TinyRTC

Cel mai popular RTC pentru Arduino se numește TinyRTC și poate fi cumpărat cu aproximativ 5-10 USD pe eBay. Cel mai probabil va trebui să vă furnizați propria baterie (este ilegal să le expediați în străinătate în multe locuri) și câteva anteturi (știfturile care se introduc în găuri, pe care va trebui să le lipiți singuri).

Acesta este modulul pe care îl am:





Are chiar și un senzor de temperatură încorporat, deși bateria va dura mai mult dacă nu o folosiți.

Numărul de găuri de pe acel lucru pare destul de înfricoșător, dar aveți nevoie doar de patru dintre ele; GND, VCC, SCL și SDA - puteți utiliza pinii relevanți de ambele părți ale modulului RTC. Vorbești cu ceasul folosind Protocol I2C , ceea ce înseamnă că sunt utilizați doar doi pini - unul pentru „ceas” (un ceas de date de comunicații seriale, nimic de-a face cu timpul) și unul pentru date. De fapt, chiar înlănțuiți până la 121 de dispozitive I2C pe aceiași doi pini - verificați această pagină Adafruit pentru o selecție de alte dispozitive I2C pe care le-ați putea adăuga, deoarece există multe!





Noțiuni de bază

Conectați modulul TinyRTC conform schemei de mai jos - linia roz DS nu este necesară, deoarece este pentru senzorul de temperatură.

Apoi, descărcați fișierul Timp și DS1307RTC biblioteci și așezați folderele rezultate în / biblioteci pliant.

Ieșiți și relansați mediul Arduino pentru a încărca în biblioteci și exemple.

Veți găsi două exemple în meniul DS1307RTC: încărcați și rulați Regleaza ora primul exemplu - acest lucru va seta RTC la ora corectă. Codul real nu merită să intrați în detalii, trebuie doar să știți că trebuie să îl rulați o dată pentru a efectua sincronizarea inițială a timpului.

Apoi, priviți exemplul de utilizare cu ReadTest .

ce poți face cu un cameo de siluetă

#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);
}

Rețineți că am inclus și nucleul Sârmă.h bibliotecă - vine cu Arduino și este utilizat pentru comunicarea prin I2C. Încărcați codul, deschideți consola serială la 9600 baud și urmăriți și Arduino transmite ora curentă în fiecare secundă. Minunat!

Cel mai important cod din exemplu este crearea unui tmElements_t tm - acesta este structura că vom completa cu ora curentă; si RTC.read (tm) , care obține ora curentă de la modulul RTC, o introduce în tm structură și revine adevărat dacă totul a mers bine. Adăugați codul de depanare sau logic în acea declarație „if”, cum ar fi tipărirea timpului sau reacția la acesta.

jocuri cu care poți conversa prin chat cu oameni

Acum, că știi cum să obții momentul potrivit cu Arduino, ai putea încerca să rescrii proiectul de alarmă de răsărit sau să creezi un ceas cu cuvinte LED - posibilitățile sunt nelimitate! Ce vei face?

Credite de imagine: Snootlab Via Flickr

Acțiune Acțiune Tweet E-mail Cum să schimbați aspectul și senzația desktopului dvs. Windows 10

Vrei să știi cum să faci Windows 10 să arate mai bine? Folosiți aceste personalizări simple pentru a vă face Windows 10 propriul dvs.

Citiți în continuare
Subiecte asemănătoare
  • DIY
  • Arduino
Despre autor James Bruce(707 articole publicate)

James are o licență în inteligență artificială și este certificat CompTIA A + și Network +. Când nu este ocupat ca editor de recenzii hardware, îi place LEGO, VR și jocurile de societate. Înainte de a se alătura MakeUseOf, a fost tehnician de iluminat, profesor de engleză și inginer de date.

Mai multe de la James Bruce

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Faceți clic aici pentru a vă abona
Categorie Diy