Цей годинник реального часу на базі Arduino - це цифровий годинник для відображення реального часу за допомогою RTC IC DS1307, який працює за протоколом I2C. Годинник реального часу означає, що він працює навіть після збою живлення. При повторному підключенні живлення відображається реальний час незалежно від часу та тривалості, коли він був у вимкненому стані. У цьому проекті будильника Arduino ми використали РК-модуль 16x2 для відображення часу у форматі "година, хвилина, секунди, дата, місяць та рік". Також додана опція сигналізації, і ми можемо встановити час будильника. Після збереження часу тривоги у внутрішній EEPROM пам’яті arduino він зберігається навіть після скидання або відмови електроенергії. Годинники реального часу зазвичай використовуються в наших комп’ютерах, будинках, офісах та електроніці, щоб постійно оновлювати їх у реальному часі.
Протокол I2C - це спосіб підключення двох або більше пристроїв за допомогою двох проводів до однієї системи, тому цей протокол також називають двопровідним протоколом. Він може використовуватися для зв'язку 127 пристроїв з одним пристроєм або процесором. Більшість пристроїв I2C працюють на частоті 100 кГц.
Кроки для записування даних ведучого в підлеглий (режим прийому підлеглого)
- Надсилає умову START на ведений.
- Надсилає адресу підлеглого рабу.
- Надіслати біт запису (0) у ведений.
- Отримано біт ACK від веденого пристрою
- Надсилає слова, адресовані рабу.
- Отримано біт ACK від веденого пристрою
- Надсилає дані на підлеглий.
- Отримано біт ACK від веденого пристрою.
- І останній надсилає умову STOP веденому.
Кроки для зчитування даних від веденого до ведучого (режим передачі веденого)
- Надсилає умову START на ведений.
- Надсилає адресу підлеглого рабу.
- Надіслати зчитуваний біт (1) підлеглому.
- Отримано біт ACK від веденого пристрою
- Отримані дані від підлеглого
- Отримано біт ACK від веденого пристрою.
- Надсилає умову STOP веденому.
Для побудови цього цифрового годинника на базі RTC DS1307 IC ми використовували тут Arduino Pro Mini, але ви також можете використовувати будь-яку іншу модель Arduino, таку як Arduino Uno або Arduino Nano. Разом із платою Arduino, DS1307 RTC IC, ми використовували РК-модуль 16x2 для відображення часу та дати, кристалічний осцилятор, регулятор напруги 7805, зумер та кілька транзисторів та резисторів.
Принципова схема та опис
У цій цифровій схемі годинника на базі Arduino ми використали три основні компоненти, а саме IC DS1307, міні-плату Arduino Pro та РК-модуль 16x2.
Тут arduino використовується для зчитування часу з ds1307 та відображення його на РК-дисплеї 16x2. DS1307 надсилає час / дату за допомогою 2-х рядків на arduino. Звуковий сигнал також використовується для індикації сигналу тривоги, який подає звуковий сигнал при активації будильника. Нижче наведена блок-схема для розуміння роботи цього годинника реального часу.
Як ви можете бачити на принциповій схемі, мікросхеми SDA і SCL мікросхеми DS1307 з'єднані з виводами SDA і SCL Arduino за допомогою підтягуючого резистора, який утримує значення за замовчуванням ВИСОКЕ для даних і тактових ліній. Кристалічний генератор 32,768 кГц підключений до мікросхеми DS1307 для генерування точної затримки на 1 секунду, а 3-вольтовий акумулятор також підключений до 3- го контакту (BAT) DS1307, який зберігає час після відмови електрики. РК-дисплей 16x2 підключений до arduino в 4-розрядному режимі. Керуючий штифт RS, RW та En безпосередньо підключені до pin 2, GND та 3. Arduino. А контакт D0-D7 підключений до 4, 5, 6, 7 Arduino. Звуковий сигнал з'єднаний з ардуїновим виводом номер 13 через транзистор NPN BC547, що має в основі 1 к резистор.
Три кнопки, а саме set, INC і Next, використовуються для встановлення сигналу тривоги 12, 11 і 10 arduino в активному низькому режимі. Коли ми натискаємо set, активується режим встановлення будильника, і тепер нам потрібно встановити будильник за допомогою кнопки INC, а кнопка Next використовується для переходу до цифри. Повне налаштування макетів цього годинника реального часу з будильником показано на малюнку нижче. Ви також можете переглянути детальний підручник з цифрового будильника за допомогою мікроконтролера AVR.
Опис програми
Для програмування цього годинника реального часу ми використали деякі бібліотеки для вилучення часу / дати з DS1307 та для відображення на РК-дисплеї, які наведені нижче:
А ініціалізація RTC, РК-дисплея та вхідного виводу виконуються в циклі налаштування.
Інші речі, такі як час читання, налаштування будильника, виконуються в розділі порожнього циклу.