Эти часы реального времени на базе 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 мы использовали здесь 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 с помощью подтягивающего резистора, который удерживает значение по умолчанию HIGH на линиях данных и часов. 32.768KHz кварцевый генератор соединен с чипом DS1307 для генерирования точного 1 второй задержки, и в 3 - вольтовой батарее также подключена к контакту 3 - го (BAT) из DS1307, который держит время работы после сбоя электроэнергии. ЖК-дисплей 16x2 подключен к Arduino в 4-битном режиме. Управляющий вывод RS, RW и En напрямую подключены к контактам 2, GND и 3 Arduino. А контакт данных D0-D7 подключен к 4, 5, 6, 7 Arduino. Зуммер подключен к контакту 13 Arduino через транзистор NPN BC547, имеющий на базе резистор 1 кОм.
Три кнопки, а именно установить, INC и Next, используются для установки сигнала тревоги на контакты 12, 11 и 10 Arduino в активном низком режиме. Когда мы нажимаем set, активируется режим установки будильника, и теперь нам нужно установить будильник с помощью кнопки INC, а кнопка Next используется для перехода к цифре. Полный макет этих часов реального времени с будильником показан на рисунке ниже. Вы также можете ознакомиться с подробным руководством по цифровому будильнику с микроконтроллером AVR.
Описание программы
Чтобы запрограммировать эти часы реального времени, мы использовали некоторые библиотеки для извлечения времени / даты из DS1307 и для отображения на ЖК-дисплее, которые приведены ниже:
И инициализация RTC, ЖК-дисплея и ввода-вывода выполняется в цикле настройки.
Остальные вещи, такие как время чтения, установка будильника, выполняется в разделе пустого цикла.