Reklaam

Arduino projektide peal ajaarvamine pole nii lihtne, kui võite arvata: kui arvutiühendust pole, peatub teie volitamata Arduino lihtsalt käitamine, kaasa arvatud sisemine tikker.

Selleks, et hoida oma Arduino sünkroonis ümbritseva maailmaga, vajate nn reaalajas kella moodulit. Seda saab kasutada järgmiselt.

Mis mõte on reaalajas kellal (RTC)?

Tõenäoliselt sünkroonib teie arvuti oma aja Internetiga, kuid sellel on siiski sisemine kell, mis töötab ka ilma Interneti-ühenduseta või kui toide on välja lülitatud. Kui kasutate arvutisse ühendatud Arduino-d, on sellel juurdepääs teie süsteemi kella täpsele ajale. See on üsna kasulik, kuid enamus Arduino projekte on mõeldud kasutamiseks arvutist eemal - kus punkti, kui toide on vooluvõrgust välja lülitatud või Arduino taaskäivitatud, pole tal absoluutselt aimugi, mis kell see on. Sisekell lähtestatakse ja järgmisel sisselülitamisel hakkab uuesti loendama nulli.

Kui teie projektil on midagi pistmist ajavajadusega - näiteks minu oma öövalgus ja päikesetõusu äratuskell

Arduino öövalgustuse ja päikesetõusu häirete projektTäna valmistame päikesetõusu äratuskella, mis äratab teid õrnalt ja aeglaselt, ilma et peaksite kasutama ründavat müra tekitavat masinat. Loe rohkem - see on ilmselgelt probleem. Selles projektis saime probleemist mööda, määrates igal õhtul üsna toore aja käsitsi viis - kasutaja vajutaks lähtestamise nuppu vahetult enne magamaminekut, pakkudes manuaalaega sünkroonimine. On selge, et see pole ideaalne pikaajaline lahendus.

RTC-moodul on täiendav vooluahel, mis nõuab väikest mündielementi, mis arvestab aega ka siis, kui teie Arduino on välja lülitatud. Pärast ühekordset seadistamist hoiab see aega aku kasutamisel, tavaliselt hea aasta või nii.

TinyRTC

Arduino populaarseim RTC kannab nime TinyRTC ja seda saab osta umbes 5–10 dollarit eBays. Tõenäoliselt peate tarnima oma aku (nende välismaale paljudesse kohtadesse toimetamine on ebaseaduslik) ja mõned päised (aukudesse pilu tihvtid, mida peate ise jootma).

See on moodul, mis mul on:

rtc-moodul

Sellel on isegi sisseehitatud temperatuuriandur, kuigi aku kestab kauem, kui te seda ei kasuta.

Aukude arv sellel asjal tundub üsna hirmutav, kuid teil on neid vaja ainult neli; GND, VCC, SCL ja SDA - saate kasutada vastavaid tihvte RTC-mooduli mõlemal küljel. Sa räägid kellaga, kasutades I2C protokoll, mis tähendab, et kasutatakse ainult kahte nööpnõela - üks kella jaoks (jadaühenduse andmekell, ajaga mitte midagi pistmist) ja üks andmete jaoks. Tegelikult aheldate kuni kahel tihvtil kuni 121 I2C seadet - vaadake see Adafruudi leht muude I2C-seadmete jaoks, mida võiksite lisada, sest neid on palju!

Alustamine

Haakige oma TinyRTC moodul kinni vastavalt alltoodud skeemile - roosa DS-liini pole vaja, nagu see on temperatuurianduri puhul.

juhtmestik

Järgmisena laadige alla Aeg ja DS1307RTC raamatukogud ja asetage saadud kaustad oma kausta /libraries kausta.

Teekide ja näidete laadimiseks väljuge ja taaskäivitage Arduino keskkond.
ds1307rtc-näide-menüü

DS1307RTC menüüst leiate kaks näidet: laadige üles ja käivitage Määra aeg esimene näide - see seab RTC õigeks ajaks. Tegeliku koodiga pole väärt üksikasjalikult tutvuda, lihtsalt teadke, et esmase aja sünkroniseerimiseks peate selle ühe korra käivitama.

Järgmisena vaadake näite kasutamist koos ReadTest.


# kaasata 
# kaasata 
# kaasata  kehtetu seadistamine () {Serial.begin (9600); while (! jada); // oota seeriate viivitust (200); Serial.println ("DS1307RTC lugemistest"); Serial.println (""); } tühine silmus () {tmElements_t tm; if (RTC.read (tm)) {Serial.print ("Ok, Time ="); print2digits (tm. Tund); Serial.write (':'); print2digits (tm. Minut); Serial.write (':'); print2digits (tm. Teine); Serial.print (", kuupäev (D / M / Y) ="); Järjestikune trükk (tm. Päev); Serial.write ('/'); Järjestikune trükk (tm. Kuu); Serial.write ('/'); Seriaal.print (tmYearToCalendar (tm. Aasta)); Serial.println (); } else {if (RTC.chipPresent ()) {Serial.println ("DS1307 on peatatud. Palun käivitage SetTime "); Serial.println ("näide aja lähtestamiseks ja käivitamiseks."); Serial.println (); } else {Serial.println ("DS1307 lugemisviga! Kontrollige vooluringi. "); Serial.println (); } viivitus (9000); } viivitus (1000); } tühised print2digits (int number) {if (number> = 0 && number <10) {Serial.write ('0'); } Serial.print (number); }

Pange tähele, et oleme ka tuuma kaasanud Traat.h raamatukogu - see on kaasas Arduinoga ja seda kasutatakse I2C kaudu suhtlemiseks. Laadige kood üles, avage jadakonsool kiirusega 9600 baud ja vaadake, kas teie Arduino väljastab hetkeseisu iga sekundi tagant. Imeline!

Näite kõige olulisem kood on a-koodi loomine tmElements_t tm - see struktuur asustame praeguse ajaga; ja RTC.read (tm) funktsiooni, mis saab RTC moodulilt praeguse aja, paneb selle meie tm struktuuri ja vastab tõele, kui kõik läheb hästi. Lisage oma silumis- või loogikakood sellesse „kui” -välja, näiteks aja printimine või sellele reageerimine.

Nüüd, kui teate, kuidas Arduinoga õiget aega saada, võiksite proovida päikesetõusu äratusprojekti ümber kirjutada või luua LED-sõnakelli - võimalused on lõputud! Mida sa teed?

Pildikrediidid: Snootlab Flickri kaudu

Jamesil on tehisintellekti BSc ning ta on CompTIA A + ja Network + sertifikaadiga. Ta on MakeUseOfi juhtiv arendaja ja veedab oma vaba aega VR-i paintballi ja lauamänge mängides. Ta on lapsest peale arvutit ehitanud.