Този базиран на Arduino часовник в реално време е цифров часовник за показване на реално време с помощта на RTC IC DS1307, който работи по протокол I2C. Часовникът в реално време означава, че работи дори след прекъсване на захранването. Когато захранването се свърже отново, то показва реалното време независимо от времето и продължителността, в които е било в изключено състояние. В този проект за алармен часовник Arduino използвахме LCD модул 16x2, за да покажем времето във - формат „час, минута, секунди, дата, месец и година“. Добавена е и опция за аларма и можем да настроим времето за аларма. След като времето за аларма е запазено във вътрешен EEPROM на arduino, остава запазено дори след нулиране или отказ на електричество. Часовниците в реално време се използват често в нашите компютри, къщи, офиси и електроника, за да ги поддържат актуализирани в реално време.
I2C протоколът е метод за свързване на две или повече устройства, използващи два проводника, към една система и така този протокол се нарича още двупроводен протокол. Може да се използва за комуникация на 127 устройства с едно устройство или процесор. Повечето устройства I2C работят на честота 100Khz.
Стъпки за записване на данни master към slave (режим на приемане на slave)
- Изпраща условието START на роб.
- Изпраща подчинен адрес на подчинен.
- Изпратете бит за запис (0) към slave.
- Получен ACK бит от подчинен
- Изпраща думи на адрес на роб.
- Получен ACK бит от подчинен
- Изпраща данни на роб.
- Получен ACK бит от подчинен.
- И последно изпраща условие СТОП на роб.
Стъпки за четене на данни от slave към master (режим на предаване на slave)
- Изпраща условието START на роб.
- Изпраща подчинен адрес на подчинен.
- Изпратете бит за четене (1) към slave.
- Получен ACK бит от подчинен
- Получени данни от slave
- Получен ACK бит от подчинен.
- Изпраща условие STOP на роб.
За да изградим този цифров часовник, базиран на RTC DS1307 IC , използвахме тук Arduino Pro Mini, но можете да използвате и всеки друг модел на Arduino като Arduino Uno или Arduino Nano. Заедно с платката Arduino, DS1307 RTC IC, ние използвахме 16x2 LCD модул за показване на часа и датата, кристален осцилатор, 7805 регулатор на напрежение, зумер и няколко транзистора и резистори.
Електрическа схема и описание
В тази базирана на Arduino цифрова тактова схема използвахме три основни компонента, които са IC DS1307, Arduino Pro Mini Board и 16x2 LCD модул.
Тук arduino се използва за четене на време от ds1307 и го показва на 16x2 LCD. DS1307 изпраща час / дата, използвайки 2 реда към arduino. За индикация на алармата се използва и зумер, който издава звуков сигнал, когато алармата е активирана. По-долу е показана блок-схема, за да се разбере работата на този часовник в реално време.
Както можете да видите на схемата, DS1307 чип SDA и SCL чип са свързани към arduino щифтове SDA и SCL с издърпващ резистор, който държи стойността по подразбиране HIGH на данни и тактови линии. Кристалният осцилатор 32.768KHz е свързан с чип DS1307 за генериране на точно 1 секунда закъснение, а 3-волтовата батерия също е свързана към щифт 3 -ти (BAT) на DS1307, който поддържа времето да тече след спиране на електричеството. 16x2 LCD е свързан с arduino в 4-битов режим. Контролният пин RS, RW и En са директно свързани към arduino пин 2, GND и 3. А пинът за данни D0-D7 е свързан към 4, 5, 6, 7 на arduino. Звуков сигнал е свързан с ардуинов щифт номер 13 чрез транзистор NPN BC547, имащ резистор 1 k в основата си.
Три бутона, а именно set, INC и Next се използват за настройка на алармата на пин 12, 11 и 10 на arduino в активен нисък режим. Когато натиснем set, активира се режимът на настройка на алармата и сега трябва да настроим алармата с помощта на бутона INC, а бутонът Next се използва за преминаване към цифра. Пълната настройка на макет на този часовник в реално време с аларма е показана на изображението по-долу. Можете също така да проверите подробен урок за цифров будилник с AVR микроконтролер.
Описание на програмата
За да програмираме за този часовник в реално време, използвахме някои библиотеки за извличане на време / дата от DS1307 и за показване на LCD, които са дадени по-долу:
Инициализирането на RTC, LCD и входния изход се извършва в цикъл за настройка.
Останалите неща като време за четене, настройка на алармата се извършват в секция void loop.