Ako a prečo pridať hodiny Arduino v reálnom čase

Ako a prečo pridať hodiny Arduino v reálnom čase

Udržať čas na projektoch Arduino nie je také jednoduché, ako by ste si mohli myslieť: akonáhle nie je k dispozícii pripojenie k počítaču, Arduino bez napájania jednoducho prestane fungovať, vrátane jeho interného indikátora.





najlepší softvér pre voľnú reč na text

Aby bola vaša Arduino v synchronizácii s okolitým svetom, budete potrebovať takzvaný „modul hodín v reálnom čase“. Tu je návod, ako jeden použiť.





Aký zmysel majú hodiny v reálnom čase (RTC)?

Váš počítač pravdepodobne synchronizuje svoj čas s internetom, ale stále má vnútorné hodiny, ktoré pokračujú aj bez pripojenia na internet alebo je vypnuté napájanie. Keď použijete Arduino zapojené do počítača, má prístup k presnému času, ktorý vám poskytujú systémové hodiny. Je to veľmi užitočné, ale väčšina projektov Arduino je navrhnutá tak, aby sa používali mimo počítača - v tomto okamihu, kedykoľvek bude odpojené napájanie alebo reštartuje Arduino, nebude mať absolútne žiadnu predstavu o tom, koľko je hodín. Interné hodiny sa vynulujú a pri ďalšom zapnutí začnú počítať znova od nuly.





Ak má váš projekt niečo spoločné s potrebou času - napríklad budík s nočným svetlom a východom slnka -, bude to zjavne problém. V tomto projekte sme sa k problému dostali manuálnym nastavením času každú noc pomerne hrubým spôsobom - používateľ by stlačil tlačidlo reset tesne pred spaním a poskytol manuálnu synchronizáciu času. Očividne to nie je ideálne dlhodobé riešenie.

Modul RTC je ďalší bit v obvodoch, ktoré vyžadujú malú gombíkovú batériu, ktorá naďalej počíta čas, aj keď je Arduino vypnuté. Potom, čo ste ho raz nastavili - udrží tento čas po celú dobu životnosti batérie, zvyčajne dobrý rok alebo tak.



TinyRTC

Najpopulárnejší RTC pre Arduino sa nazýva TinyRTC a na eBay sa dá kúpiť za približne 5-10 dolárov. S najväčšou pravdepodobnosťou budete musieť dodať svoju vlastnú batériu (je nezákonné ich odosielať do zahraničia na veľa miest) a niektoré záhlavia (kolíky, ktoré sa zasúvajú do otvorov, ktoré budete musieť spájkovať sami).

Toto je modul, ktorý mám:





Má dokonca aj vstavaný snímač teploty, ale batéria ju vydrží, ak ju nepoužívate.

Počet dier na tej veci vyzerá dosť strašidelne, ale potrebujete iba štyri z nich; GND, VCC, SCL a SDA - môžete použiť príslušné kolíky na oboch stranách modulu RTC. S hodinami sa rozprávate pomocou Protokol I2C , čo znamená, že sa používajú iba dva piny - jeden pre „hodiny“ (hodiny pre sériovú komunikáciu, ktoré nesúvisia s časom) a jeden pre dáta. V skutočnosti dokonca reťazíte až 121 zariadení I2C na rovnakých dvoch kolíkoch - pozrite sa táto stránka Adafruit k výberu ďalších zariadení I2C by ste mohli pridať, pretože ich je veľa!





Začíname

Pripojte svoj modul TinyRTC podľa nižšie uvedeného diagramu - ružová linka DS nie je potrebná, ako je to pre snímač teploty.

Ďalej si stiahnite súbor Čas a DS1307RTC knižnice a výsledné priečinky umiestnite do svojho /knižnice priečinok.

Ukončite a znova spustite prostredie Arduino, aby sa načítalo do knižníc a príkladov.

V ponuke DS1307RTC nájdete dva príklady: nahrajte a spustite súbor Nastavený čas prvý príklad - nastaví RTC na správny čas. Skutočný kód nestojí za podrobnosť, stačí vedieť, že ho musíte vykonať raz, aby ste mohli vykonať počiatočnú synchronizáciu času.

Ďalej sa pozrite na príklad použitia s ReadTest .

odstráňte vokály z drzosti piesne

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

Všimnite si toho, že sme zahrnuli aj jadro Wire.h knižnica - dodáva sa s Arduino a používa sa na komunikáciu cez I2C. Nahrajte kód, otvorte sériovú konzolu na 9 600 baudov a sledujte, či vaše výstupy Arduino vydávajú aktuálny čas každú sekundu. Podivuhodný!

Najdôležitejším kódom v príklade je vytvorenie súboru tmElements_t tm - toto štruktúra že vyplníme aktuálny čas; a RTC.read (tm) funkciu, ktorá získava aktuálny čas z modulu RTC, vloží ho do nášho tm štruktúru a vráti hodnotu true, ak všetko prebehlo dobre. Pridajte do svojho príkazu „ak“ svoj ladiaci alebo logický kód, napríklad vytlačte čas alebo naň reagujte.

ako odstrániť zálohy na mac

Teraz, keď viete, ako nájsť ten správny čas s Arduinom, môžete skúsiť prepísať projekt alarmu východu slnka alebo vytvoriť slovné hodiny s LED - možnosti sú nekonečné! Čo urobíš?

Kredity za obrázky: Snootlab Prostredníctvom Flickr

zdieľam zdieľam Tweet E -mail Ako zmeniť vzhľad a atmosféru pracovnej plochy Windows 10

Chcete vedieť, ako vylepšiť vzhľad systému Windows 10? Pomocou týchto jednoduchých úprav prispôsobte Windows 10 svojmu vlastnému.

Čítajte ďalej
Súvisiace témy
  • DIY
  • Arduino
O autorovi James Bruce(707 publikovaných článkov)

James má bakalársky titul v odbore umelá inteligencia a je certifikovaný CompTIA A+ a Network+. Keď nie je zaneprázdnený ako editor recenzií hardvéru, baví ho hry LEGO, VR a stolné hry. Pred nástupom do MakeUseOf bol svetelným technikom, učiteľom angličtiny a inžinierom dátového centra.

Viac od Jamesa Brucea

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné elektronické knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber
Kategórie Diy