Kako in zakaj dodati uro v realnem času v Arduino

Kako in zakaj dodati uro v realnem času v Arduino

Ohranjanje časa pri projektih Arduino ni tako enostavno, kot si mislite: ko računalniške povezave ni, se vaš Arduino brez napajanja preprosto ustavi, vključno z notranjim ključem.





kako namestiti mac os v virtualbox

Če želite, da je vaš Arduino sinhroniziran s svetom okoli sebe, boste potrebovali tako imenovani modul ure v realnem času. Evo, kako ga uporabiti.





Kaj je smisel ure v realnem času (RTC)?

Vaš računalnik najverjetneje sinhronizira svoj čas z internetom, vendar ima še vedno notranjo uro, ki deluje tudi brez internetne povezave ali če je napajanje izklopljeno. Ko uporabljate Arduino, priključen na računalnik, ima dostop do natančnega časa, ki ga določa sistemska ura. To je zelo koristno, vendar je večina projektov Arduino zasnovana tako, da se uporabljajo zunaj računalnika - takrat, kadar koli izklopite napajanje ali znova zaženete Arduino, ne boste imeli pojma, koliko je ura. Notranja ura se bo ponastavila in ob naslednjem vklopu bo znova začela šteti od nič.





Če ima vaš projekt kaj opraviti s potrebo po času - na primer budilko za nočno svetlobo in sončni vzhod - bo to očitno problem. V tem projektu smo težavo rešili tako, da smo vsako noč ročno nastavljali čas na precej grob način - uporabnik bi pritisnil gumb za ponastavitev tik pred spanjem, kar je omogočilo ročno sinhronizacijo časa. Jasno je, da to ni idealna dolgoročna rešitev.

Modul RTC je dodaten del vezja, ki zahteva majhno gumbno baterijo, ki še naprej šteje čas, tudi ko je vaš Arduino izklopljen. Po enkratni nastavitvi bo ta čas ohranil življenjsko dobo baterije, običajno dobro leto ali tako.



TinyRTC

Najbolj priljubljen RTC za Arduino se imenuje TinyRTC in ga je na eBayu mogoče kupiti za približno 5 do 10 USD. Najverjetneje boste morali dobaviti svojo baterijo (prepovedano je pošiljati te izdelke v tujino na številna mesta) in nekaj glav (zatiči, ki se vstavijo v luknje, ki jih boste morali spajkati sami).

To je modul, ki ga imam:





Ima celo vgrajen temperaturni senzor, čeprav bo baterija zdržala dlje, če ga ne uporabljate.

Število lukenj na tej stvari je videti precej strašljivo, vendar potrebujete le štiri; GND, VCC, SCL in SDA - ustrezne zatiče lahko uporabite na obeh straneh modula RTC. Z uro govorite z uporabo Protokol I2C , kar pomeni, da se uporabljata samo dva zatiča - eden za 'uro' (serijska podatkovna ura za komunikacijo, nič s časom) in eden za podatke. Pravzaprav na enaka dva zatiča celo povežete do 121 naprav I2C - preverite to stran Adafruit za izbor drugih naprav I2C bi lahko dodali, ker jih je veliko!





Začetek

Priključite modul TinyRTC v skladu s spodnjim diagramom - roza linija DS ni potrebna, saj je to za temperaturni senzor.

Nato prenesite datoteko Čas in DS1307RTC knjižnice in nastale mape postavite v svojo /knjižnice mapo.

Zaprite in znova zaženite okolje Arduino, da ga naložite v knjižnice in primere.

V meniju DS1307RTC boste našli dva primera: naložite in zaženite datoteko Nastavi čas prvi primer - s tem bo RTC nastavljen na pravilen čas. Dejanske kode ni vredno podrobno obravnavati, samo vedite, da jo morate enkrat zagnati, da izvedete začetno časovno sinhronizacijo.

Nato si oglejte primer uporabe z ReadTest .

kako priključiti nov krmilnik na xbox one

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

Upoštevajte, da smo vključili tudi jedro Wire.h knjižnica - to je priloženo Arduinu in se uporablja za komunikacijo prek I2C. Naložite kodo, odprite serijsko konzolo pri 9600 baudih in poglejte in vaš Arduino vsako sekundo prikaže trenutni čas. Čudovito!

Najpomembnejša koda v tem primeru je ustvarjanje datoteke tmElements_t tm - ta a strukturo da bomo zapolnili s trenutnim časom; in RTC. branje (tm) funkcija, ki dobi trenutni čas iz modula RTC, jo vstavi v našo tm strukturo in se vrne, če je bilo vse v redu. V izjavo 'if' dodajte svojo kodo za odpravljanje napak ali logično kodo, na primer tiskanje časa ali odziv nanj.

kako preklicati račun za gotovinsko aplikacijo

Zdaj, ko veste, kako dobiti pravi čas z Arduinom, lahko poskusite znova napisati projekt alarma za sončni vzhod ali ustvariti LED besedno uro - možnosti so neskončne! Kaj boste naredili?

Zasluge za slike: Snootlab Prek Flickr

Deliti Deliti Cvrkutati E-naslov Kako spremeniti videz in občutek namizja Windows 10

Želite vedeti, kako narediti Windows 10 boljši? S temi preprostimi prilagoditvami naredite Windows 10 svoj.

Preberite Naprej
Sorodne teme
  • DIY
  • Arduino
O avtorju James Bruce(707 objavljenih člankov)

James je diplomiral iz umetne inteligence in je certificiran za CompTIA A+ in Network+. Ko ni zaposlen kot urednik pregledov strojne opreme, uživa v igrah LEGO, VR in družabnih igrah. Preden se je pridružil MakeUseOf, je bil tehnik razsvetljave, učitelj angleščine in inženir podatkovnega centra.

Več od Jamesa Brucea

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e -knjige in ekskluzivne ponudbe!

Kliknite tukaj, če se želite naročiti
Kategorija Diy