Подключение DS1302 к Ардуино по I2C / SPI

Содержание

Модуль часов реального времени DS1302

DS1302 Аrduino — это модуль часов реального времени с возможностью бесперебойного питания от литиевой батарейки. Рассмотрим схему подключения модуля к плате Ардуино и продемонстрируем код, с помощью которого можно установить нужную дату и время. Также мы разместили описание универсальной библиотеки iarduino_RTC.h для работы с модулями DS1302, DS1307 и DS3231.

Модуль DS1302 (RTC): схема, описание

Ориентация по времени полезна при создании устройства для автоматического полива растений, включении света или отопления по строгому расписанию и т.д. Контроллер Arduino не имеет встроенных часов, поэтому при необходимости выполнения задач микроконтроллером Arduino Uno в строго определенное время суток, понадобится использовать в проекте модуль часов DS1302 или ближайшие аналоги.

Распиновка ds1302

Распиновка ds1302. Часы реального времени Arduino DS1302

Микросхема отличается низким энергопотреблением и позволяет отсчитывать время с точностью до секунд. Подключение ds1302 к Ардуино осуществляется с помощью пяти контактов. Выводы VCC и Gnd отвечают за питание модуля. Контакты CLK,DAT и RESX подключают к цифровым пинам микроконтроллера. В скетче можно самим указать задействованные цифровые пины (в нашем примере использован 6,7 и 8 пин).

Как подключить DS1302 к Arduino (RTC)

Для этого занятия нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • модуль DS1302, DS1307 или DS3231;
  • LCD монитор 1602 i2c;
  • провода «папа-мама».

DS1307 подключение к Ардуино

DS1307 схема подключения к Ардуино Уно

Модули часов DS1307 и DS3231 подключаются к плате Ардуино через I2C протокол, как LCD дисплей I2C. Контакт SDA подключается к пину A4, контакт SCL к пину A5 Ардуино Уно. При подключении данных модулей к плате Arduino Mega следует использовать порты SDA (20 пин) и SCL (21 пин). При этом в скетче необходимо снять комментарий в строчке с нужным модулем, а строчку с модулем 1302 наоборот закомментировать.

Скетч. Работа с модулем ds3231 Ардуино DS1307

Пояснения к коду:

  1. для работы с программой необходимо скачать библиотеку iarduino_RTC.h.
  2. с помощью команды time.settime(); можно установить дату и время, которые будут выводится на монитор порта Arduino IDE каждую секунду.

Подключение DS1307 к дисплею LCD 1602 i2c

Схема подключения DS1302 с дисплеем

Схема подключения часов реального времени с дисплеем

Рассмотрим два варианта подключения модуля RTC к Arduino и текстового дисплея 1602. В первом варианте используется протокол SPI для модуля часов, поэтому к предыдущей схеме потребуется добавить только дисплей с iic модулем. А в скетче следует расскомментировать соответствующую строку. После внесения правок в схему и программу — загрузите следующий скетч в микроконтроллер.

Скетч. Часы с экраном LCD 1602 и DS1302

Пояснения к коду:

  1. в данном примере с помощью команды time.gettime(); можно выводить на текстовый экран текущее время и дату в разном формате.

При подключении экрана и модуля RTC к одной шине iic — порты SDA(A4) и SCL(A5), следует указать в скетче какой модуль используется. Схема подключения размещена выше, кроме того вы можете использовать сканер шины i2c для того, чтобы увидеть адреса устройств. Если адреса, которые установлены производителем по умолчанию вы не изменяли — соберите схему и загрузите следующий пример в плату.

Схема подключения DS1307 и LCD к i2c шине Ардуино

Схема подключения DS1307 и LCD по i2c

Скетч. Часы с LCD 1602 и DS1302 I2C Arduino

Пояснения к коду:

  1. как видите, скетч отличается от предыдущего только одной строчкой

Библиотека RTC.h Arduino: описание команд

Для работы с модулями часов Ардуино, в библиотеке реализовано 5 функций:

begin(); // запуск модуля

settime(секунды, минуты, часы, день, месяц, год, день недели); // указать время
— год указывается без учета века, в формате 0-99
— часы указываются в 24-часовом формате, от 0 до 23
— день недели указывается в виде числа от 0-воскресенье, 6-суббота

gettime("строка с параметрами"); // получить время
— gettime(d-m-Y, H:i:s, D); ответит строкой 12-06-2020, 18:30:05, Fri
— gettime(H); ответит строкой 18

функцией gettime можно получать различную информацию:

  • s — секунды от 00 до 59 (два знака)
  • i — минуты от 00 до 59 (два знака)
  • h — часы в 12-часовом формате от 01 до 12 (два знака)
  • H — часы в 24-часовом формате от 00 до 23 (два знака)
  • d — день месяца от 01 до 31 (два знака)
  • D — день недели наименование от Mon до Sun (три знака)
  • m — месяц от 01 до 12 (два знака)
  • M — месяц наименование от Jan до Dec (три знака)
  • Y — год от 2000 до 2099 (четыре знака)
  • y — год от 00 до 99 (два знака)

blinktime(параметр)
— указывает функции gettime мигать одним из параметров времени

period(минуты)
— устанавливает период обращения к модулю в минутах (от 0 до 255)

Заключение. В часы на Ардуино с дисплеем 1602 и DS1302 можно добавить функцию показа температуры и будильник. Данный модуль позволяет существенно расширить функции микроконтроллера, которые должны выполняться в определенное время суток. Если у вас возникли вопросы по сборке и программированию часов на Arduino с DS1302 и LCD дисплеем — оставляйте их в комментариях к записи.


Источник: xn--18-6kcdusowgbt1a4b.xn--p1ai