Реклама

Задржати вријеме на Ардуино пројектима није тако лако као што можда мислите: кад веза са рачунаром не постоји, ваш без напајања Ардуино једноставно престаје да ради, укључујући и његов интерни клик.

Да би Ардуино био у синхронизацији са светом око њега, требат ће вам оно што се назива „модул сата реалног времена“. Ево како се користи.

Шта је смисао такта у реалном времену (РТЦ)?

Ваш рачунар највероватније синхронизује време са интернетом, али он још увек има интерни сат који наставља и даље без интернет конекције или ако је напајање искључено. Када користите Ардуино прикључен на рачунар, он има приступ тачном времену које пружа ваш системски сат. То је прилично корисно, али већина Ардуино пројеката дизајнирана је тако да се користи даље од рачунара поентирајте, сваки пут када струја буде искључена или се Ардуино поново покрене, неће имати апсолутно појма у које време То је. Унутрашњи сат ће се ресетовати и поново ће почети одбројавати од нуле, следећи пут када се укључи.

Ако ваш пројекат има икакве везе са потребним временом - као што је моје

ноћна свјетлост и будилица Пројекат аларма ноћне светлости и изласка сунцаДанас ћемо направити будилицу за излазак сунца, која ће вас лагано и полако пробудити без прибјегавања увредљивој машини за буку. Опширније - ово ће очигледно бити проблем. У том пројекту смо заобишли проблем ручним постављањем времена сваке ноћи поприлично грубо начин - корисник би притиснуо типку за ресетовање прије него што оде у кревет, пружајући ручно вријеме синхронизовати. Јасно да то није идеално решење за дуго времена.

РТЦ модул је додатни битни круг, за који је потребна мала кованица са батеријом која и даље броји време чак и када је ваш Ардуино искључен. Након што сте га једном поставили - задржаће то време живота батерије, обично добру годину дана.

ТиниРТЦ

Најпопуларнији РТЦ за Ардуино зове се ТиниРТЦ и може се купити за око $ 5- $ 10 на еБаиу. Највјероватније ћете требати да набавите сопствену батерију (илегално је слање у иностранство на многа места), као и неке заглаве (игле које прорезују у рупе, које ћете морати лемити у себи).

Ово је модул који имам:

ртц-модуле

Чак има уграђени сензор температуре, мада ће батерија дуже трајати ако је не користите.

Број рупа на тој ствари изгледа прилично застрашујуће, али потребне су вам само четири; ГНД, ВЦЦ, СЦЛ и СДА - можете користити одговарајуће игле са сваке стране РТЦ модула. Можете разговарати са сатом користећи И2Ц протокол, што значи да се користе само два пина - један за „сат“ (сат за серијску комуникацију, нема везе са временом) и један за податке. У ствари, чак и 121 И2Ц уређаје вежете на иста два пина - погледајте ову страницу Адафруит за избор других И2Ц уређаја које можете додати, јер их има пуно!

Почетак

Прикачите свој ТиниРТЦ модул у складу са доњим дијаграмом - ружичаста ДС линија није потребна јер је то сензор температуре.

ожичење

Затим преузмите време и ДС1307РТЦ библиотеке и резултирајуће фасцикле ставите у своје /libraries фолдер.

Изађите и поново покрените Ардуино окружење да бисте се учитали у библиотеке и примере.
дс1307ртц-екампле-мену

У ДС1307РТЦ менију ћете наћи два примера: пренесите и покрените Подесити време пример прво - ово ће поставити РТЦ на тачно време. Стварни код не вреди детаљно са детаљима, само знајте да га требате покренути једном да бисте извршили почетну временску синхронизацију.

Затим погледајте пример употребе са РеадТест.


#инцлуде 
#инцлуде 
#инцлуде  воид сетуп () {Сериал.бегин (9600); вхиле (! серијски); // причекајте серијско одлагање (200); Сериал.принтлн ("Тест читања ДС1307РТЦ"); Сериал.принтлн (""); } воид петља () {тмЕлементс_т тм; иф (РТЦ.реад (тм)) {Сериал.принт ("Ок, Време ="); принт2дигитс (тм Сат); Сериал.врите (':'); принт2дигитс (тм Минута); Сериал.врите (':'); принт2дигитс (тм Друго); Сериал.принт (", датум (Д / М / И) ="); Серијски.принт (тм. Дан); Сериал.врите ('/'); Серијски.принт (тм. Месец дана); Сериал.врите ('/'); Серијски.принт (тмИеарТоЦалендар (тм) Година)); Сериал.принтлн (); } елсе {иф (РТЦ.цхипПресент ()) {Сериал.принтлн ("ДС1307 је заустављен. Молимо покрените СетТиме "); Сериал.принтлн ("пример за иницијализацију времена и почетак покретања."); Сериал.принтлн (); } елсе {Сериал.принтлн ("ДС1307 грешка код читања! Молимо проверите струјни круг. "); Сериал.принтлн (); } кашњење (9000); } кашњење (1000); } воид принт2дигитс (инт број) {иф (број> = 0 && број <10) {Сериал.врите ('0'); } Серијски.принт (број); }

Имајте на уму да смо такође укључили језгро Вире.х библиотека - долази с Ардуином и користи се за комуникацију преко И2Ц. Учитајте код, отворите серијску конзолу на 9600 бауд-а и гледајте и ваш Ардуино сваке секунде емитује тренутно време. Предиван!

Најважнији код у овом примеру је креирање а тмЕлементс_т тм - ово структура да ћемо се попунити са тренутним временом; и тхе РТЦ.реад (тм) функција, која добије тренутно време од РТЦ модула, ставља је у нашу тм структуру и враћа истину ако је све прошло како треба. Додајте код за исправљање грешака или логику у ту изјаву „иф“, као што је штампање времена или реаговање на њу.

Сада када знате како да нађете право време с Ардуином, могли бисте покушати преписати пројекат аларма за излазак сунца или створити ЛЕД сат са словима - могућности су бескрајне! Шта ћете направити?

Имаге Цредитс: Сноотлаб Виа Флицкр

Јамес има диплому о вештачкој интелигенцији и сертификат је ЦомпТИА А + и Нетворк +. Он је водећи програмер МакеУсеОф-а и своје слободно време проводи играјући ВР паинтбалл и таблегамес. Градио је рачунаре још од детета.