Как и защо да добавите часовник в реално време към Arduino

Как и защо да добавите часовник в реално време към Arduino

Отделянето на време за проектите на Arduino не е толкова лесно, колкото си мислите: след като компютърната връзка не е налична, вашият Arduino без захранване просто спира да работи, включително вътрешния му тикер.





колелото на мишката се превърта нагоре при превъртане надолу

За да поддържате вашия Arduino в синхрон със света около него, ще имате нужда от това, което се нарича „модул за часовник в реално време“. Ето как да използвате един.





Какъв е смисълът на часовник в реално време (RTC)?

Вашият компютър най -вероятно синхронизира времето си с интернет, но все още има вътрешен часовник, който продължава да работи дори без интернет връзка или захранването е изключено. Когато използвате Arduino, включен в компютър, той има достъп до точното време, предоставено от системния ви часовник. Това е доста полезно, но повечето проекти на Arduino са проектирани да се използват далеч от компютър - в този момент, всеки път, когато захранването е изключено или Arduino се рестартира, той няма да има абсолютно представа колко е часът. Вътрешният часовник ще бъде нулиран и ще започне да брои от нула следващия път, когато се включи.





Ако вашият проект има нещо общо с нуждата от време - например моята нощна светлина и будилник за изгрев слънце - това очевидно ще бъде проблем. В този проект ние заобиколихме проблема, като ръчно зададохме часа всяка вечер по доста груб начин - потребителят би натиснал бутона за нулиране точно преди да си легне, осигурявайки ръчна синхронизация на времето. Очевидно това не е идеално дългосрочно решение.

RTC модулът е допълнителен бит на верига, изискващ малка батерия с монета, която продължава да брои времето, дори когато вашият Arduino е изключен. След като бъде настроен веднъж - той ще запази това време за живота на батерията, обикновено добра година или повече.



TinyRTC

Най-популярният RTC за Arduino се нарича TinyRTC и може да бъде закупен за около $ 5- $ 10 в eBay. Най -вероятно ще трябва да доставите своя собствена батерия (незаконно е да ги изпращате в чужбина на много места) и някои заглавки (щифтовете, които се вмъкват в отворите, които ще трябва да запоите в себе си).

Това е модулът, който имам:





Той дори има вграден температурен сензор, въпреки че батерията ще издържи по-дълго, ако не го използвате.

Броят на дупките на това нещо изглежда доста страшен, но имате нужда само от четири от тях; GND, VCC, SCL и SDA - можете да използвате съответните щифтове от двете страни на RTC модула. Говорите с часовника с помощта I2C протокол , което означава, че се използват само два пина - един за „часовника“ (часовник за серийни комуникационни данни, няма нищо общо с времето) и един за данните. Всъщност дори свързвате до 121 I2C устройства на същите два щифта - проверете тази страница Adafruit за селекция от други I2C устройства можете да добавите, защото има много!





Приготвяме се да започнем

Свържете вашия модул TinyRTC съгласно схемата по -долу - розовата линия DS не е необходима, тъй като това е за температурния сензор.

След това изтеглете Време и DS1307RTC библиотеки и поставете получените папки във вашата /библиотеки папка.

Излезте и стартирайте отново средата Arduino, за да се зареди в библиотеките и примерите.

В менюто на DS1307RTC ще намерите два примера: качете и стартирайте SetTime първи пример - това ще настрои RTC на правилното време. С действителния код не си струва да влизате в подробности, просто знайте, че трябва да го стартирате веднъж, за да извършите първоначалната синхронизация на времето.

След това разгледайте примерното използване с ReadTest .

как да изтриете акаунта си в soundcloud

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

Имайте предвид, че сме включили и ядрото Wire.h библиотека - това идва с Arduino и се използва за комуникация през I2C. Качете кода, отворете серийната конзола на 9600 бода и гледайте и вашият Arduino извежда текущото време всяка секунда. Прекрасно!

Най -важният код в примера е създаването на tmElements_t tm - това е структура че ще попълним текущото време; и RTC. четене (tm) функция, която получава текущото време от RTC модула, го поставя в нашия tm структура и връща true, ако всичко върви добре. Добавете вашия код за отстраняване на грешки или логика вътре в израза „ако“, като например отпечатване на часа или реагиране на него.

премахнете вокалите от дързостта на песента

Сега, когато знаете как да получите подходящото време с Arduino, можете да опитате да пренапишете проекта за аларма за изгрев слънце или да създадете светодиоден часовник за думи - възможностите са безкрайни! Какво ще направите?

Кредити за изображения: Snootlab Чрез Flickr

Дял Дял Туит електронна поща Как да промените външния вид и усещането на вашия работен плот на Windows 10

Искате ли да знаете как да направите Windows 10 да изглежда по -добре? Използвайте тези прости персонализации, за да направите Windows 10 свой собствен.

Прочетете Напред
Свързани теми
  • Направи си сам
  • Arduino
За автора Джеймс Брус(707 статии са публикувани)

Джеймс има бакалавърска степен по изкуствен интелект и е сертифициран по CompTIA A+ и Network+. Когато не е зает като редактор на хардуерни рецензии, той се радва на LEGO, VR и настолни игри. Преди да се присъедини към MakeUseOf, той беше техник по осветление, учител по английски език и инженер в центъра за данни.

Още от Джеймс Брус

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и изключителни оферти!

Щракнете тук, за да се абонирате