Kako se koristi Digitalni Sat – Real Time Clock / RTC DS3231
Nakon što naučite koristiti određene senzore kao npr. senzor vlažnosti zemlje, bit ćete uzbuđeni jer dobivate redovno informaciju vrijednosti senzora. U slučaju da ugradite i neku pumpu za automatsko zalijevanje, preko određenog releja, Vaša biljka će biti redovno i na vrijeme zalijevana. Sve će super raditi, ali vi nećete imati podatak kada se to tačno desilo.
Razloga je mnogo, a ovo su neki od njih:
- Vaš hardver i softver nije prilagođen i isprogramiran da ispise i sačuva vrijednosti
- u slučaju nestanka struje mikrokontroler se gasi, a vaš sistem kreće iz početka (vremenski), mada će opet odlično odrađivati usporedbu vlažnosti i zalijevati na vrijeme
U ovoj lekciji naučit ćemo koristiti Digitalni Sat za čuvanje stvarnog vremena (RTC ili real time clock).
U ovoj lekciji ćemo objasniti:
- Šta je to digitalni sat ili RTC modul?
- Šema povezivanja i kod za kontrolu RTC modula
- Specifikacija materijala
Šta je to digitalni sat ili RTC modul?
Prvo pitanje koje se postavlja ovdje je zašto nam je zapravo potreban RTC za naš Arduino projekt kada sam Arduino ima ugrađen mjerač vremena. Prednost je ta da RTC modul radi na bateriju i može pratiti vrijeme čak i ako reprogramiramo mikrokontroler ili isključimo glavno napajanje.
Modul DS3231 je sat stvarnog vremena, često poznat kao RTC, uređaj je za mjerenje vremena ugrađen u integrirani krug ili IC. Koristi se u mnogim vremenski kritičnim aplikacijama i uređajima, kao što su poslužitelji, GPS i uređaji za bilježenje podataka. Dugoročna preciznost uređaja poboljšana je uključivanjem kristalnog oscilatora. RTC prati sekunde, minute, sate, dane, datume, mjesece i godine. Za mjesece s manje od 31 dana, datum na kraju mjeseca se automatski mijenja, uključujući ispravke prijestupne godine.
Sat ima indikaciju AM/PM i radi u 24-satnom ili 12-satnom načinu rada. Uključena su dva programabilna alarma za vrijeme dana, kao i programibilni kvadratni izlaz. I2C dvosmjerna sabirnica koristi se za serijski prijenos adresa i podataka. RTC DS3231 sadrži baterijski ulaz i održava tačno vrijeme. Ugrađeni strujni krug za mjerenje struje stalno provjerava stanje VCC-a kako bi identificirao nestanak struje i automatski se prebacuje na rezervno napajanje. Dakle, čak i ako nestane struje, vaš Mikrokontroler će i dalje moći pratiti vrijeme.
Na slici iznad možete vidjeti da se na DS3231 RTC modul nalazi i držač baterije CR2032. Držač baterije za 20 mm 3V litijevu bateriju nalazi se na donjoj strani ploče. Bilo koja CR2032 baterija će raditi. Modul može raditi na 3,3 ili 5V što ga čini prikladnim za mnoge razvojne platforme ili mikrokontrolere. Ulaz baterije je 3V, a tipična CR2032 baterija od 3V može napajati modul i održavati informacije više od godinu dana.
Šema povezivanja i kod za kontrolu RTC DS3231
Napokon, šema i kod. U slučaju da ne želite prepisivati kod sa slike, kliknite na ovaj GITHUB link i preuzmite kod iz ovog tutorijala, kao i od ostalih Tutorijala.
U ovom primjeru mi ćemo koristiti modul DS3231 kao sa slike. U ponudi ima više proizvođača, ali pod ovom oznakom svi jednako rade.
Šema povezivanja:
Kao što možete vidjeti na slici iznad koristili smo samo četiri komunikacijska kabla:
- Crveni kabl ozačava – VCC (+5V)
- Plavi kabl označava – GND (-)
- Žuti kabl označava – SDA (I2C komunikacija)
- Zeleni kabl označava – SCL (I2C komunikacija)
Nakon što smo povezali modul sa kontrolerom kao na semi, bacimo se na biblioteke i kod:
U pretraživač biblioteka ukucajte naziv modula DS3231 i dobit ćete veliki broj ponuđenih biblioteka ili jednostavno ukucajte RTClib i dobit ćete upravo onu biblioteku koju ćemo mi koristiti u ovom primjeru. Izaberite opciju INSTALL i pričekajte dok se ista ne instalira.
Nakon što kliknemo da se instalira biblioteka najvjerovatnije ćemo dobiti sljedeće pitanje:
Izaberite INSTALL ALL, jer ćete na taj način instalirati i ostale potrebne biblioteke za rad. Adafruit je svjetski brend koji pored svojih softvera i biblioteka ima veliki broj svojih senzora, shildova, modula itd.. Zbog svega prethodno navedenoga koristit ćemo Adafruit biblioteke jer na njima radi veliki broj inženjera i prostor za grešku je minimalan.
Nakon što se biblioteka preuzme i instalira, izaberite File -> Examples -> RTClib -> ds3231.
U Biblioteci RTClib imate nekoliko ponuđenih primjera pa slobodno isprobajte neke od njih. Cilj ovoga Tutorijala je da pokaže osnovni rad modula, jer bi u suprotnom svaki Tutorijal postao dug i dosadan.
Nakon što smo uradili sve navedene korake i došli do sketch-a pod nazivom “ds3231”, sve što treba da uradite je da uradite Upload. Izaberite Serial monitor i testirajte očitanja modula.
Kao što možete vidjeti na slici ispod i šema i Kod savršeno rade.
Bitne napomene za buduće projekte:
Ispod slike br.2 stoji prvi dio odgovora, a drugi dio je taj što nam ova biblioteka nudi potpunu kontrolu nam svim varijablama (datum, sekunde, minute, dani itd.) i ista ima u svega nekoliko linija koda sve što Vam može trebati u budućim projektima. Najbolja stvar u ovoj biblioteci je ta što automatski unosi početno vrijeme onoga momenta kada ste počeli Upload-ovati kod. Biblioteka je jako lijepo opisana i u slučaju da želite uraditi vlastite modifikacije, dovoljno je da pročitate napomenu iznad svake linije i izbrišete comment //
.
Obzirom da je RTC3231 jako precizan, u ispisu vremena možete vidjeti čak i sekunde. Nakon što uradite Upload kod-a najvjerovatnije je da će Vam se desiti odstupanje u 5-10-20 sekundi, a to je iz razloga što je to vrijeme od kad ste kliknuli Upload Sketch-a. Ako je projekat baš toliko osjetljiv, od 56 do 78 linije koda imate primjer kako možete manipulisati vremenom tj. da povećate unaprijed vrijeme kako bi Vam bilo u sekundu tačno.
Još jedna od bitnih stvari koju trebate da uzmete u obzir je ta da RTC može preko 1 godine čuvati vrijeme bez napajanja (u ovisnosti od kapaciteta baterije), ali ako u toku rada odvojite RTC od mikrokontrolera ili ako se izgubi komunikacija između RTC i mikrokontrolera, vrijeme ispisa će se poremetiti i ispisivati će se vrijeme koje je zapisano u internoj memoriji modula.
U ovisnosti od ozbiljnosti projekta napominjemo da razmislite o izboru 2032 baterije. CR2032 baterija ima kapacitet cca 220mAh, dok LIR2032 baterija ima kapacitet cca: 35-50mAh i ista se može puniti preko 500 puta (RTC3231 modul ima integirsano punjenje baterije)!
Pod pretpostavkom da koristite potpuno napunjenu CR2032 bateriju od 220mAh i održavate potrošnju struje čipa na najmanje 3µA, baterija bi trebala moći napajati RTC najmanje 8 godina bez potrebe za vanjskim napajanjem.
220mAh/3µA = 73333,34 sati = 3055,56 dana = 8,37 godina
Iz gore navedene formule možete sami zaključiti koju bateriju želite.
Kao što možete vidjeti na slici iznad, bilo da isključite mikrokontroler na minutu, dan, sedmicu RTC2032 uredno čuva vrijeme!
Zadatak:
Iskoristite stečeno znanje iz prethodnih lekcija (ekran) i ispišite na ekran 20×4 sljedeće:
- Red 1: datum, mjesec i godinu
- Red 2: sat, minuta, sekunda
- Red 3: vrijednost temperature
- Red 4: po želji 🙂
Specifikacija materijala:
- 1x Arduino Uno ili bilo koji drugi Arduino kontroler
- 1x Breadboard
- 1x RTC3231 modul
- 4x Komunikacijski kablovi
Napomena: Nakon što pročitate bilo koji Tutorijal na internetu, uvijek pogledajte Datasheet bilo koje komponente ili modula, jer se tu nalaze svi bitni fabrički detalji!