Настройка часов для ардуино

Часы реального времени, RTC (Trema-модуль)

Общие сведения:

Trema-модуль RTC (DS1307Z) и Trema-модуль RTC (DS3231) — высокоточные энергонезависимые модули, которые можно использовать в таких проектах как часы, будильник, секундомер и т.д., а также, с его помощью, можно запускать Ваши процессы по расписанию.

Trema-модуль RTC (DS1307Z) построен на базе чипа DS1307Z, который снабжен: интерфейсом I2C (частота 100 кГц, адрес 0x68), 64 однобайтными регистрами (56 из которых доступны для хранения данных пользователя), компаратором (для переключения между основным и резервным питанием), блоком подзарядки аккумуляторной батареи. Модуль позволяет считывать: секунды, минуты, часы, дни, дни недели, месяц и год.

Trema-модуль RTC (DS3231) — построен на базе чипа DS3231, который снабжен: интерфейсом I2C, кварцевым резонатором на 32,768 кГц, датчиком температуры (для температурной компенсации кварцевого резонатора), регистрами данных, двумя будильниками, компаратором (контролирующим уровень заряда батареи), блоком подзарядки аккумуляторной батареи и выходами меандра (с фиксированной 32,768 кГц, и программируемой частотой 1,0 Гц — 8,192 кГц). Модуль позволяет устанавливать и считывать: секунды, минуты, часы, дни, дни недели, месяц, год и состояние. Считывать температуру и устанавливать: секунды, минуты, часы, и дни будильников

Видео

Спецификация для чипа DS1307Z:

  • Питание модуля: 5 В.
  • Напряжение питания батареи: 2,0 .. 3,5 В (номинально 3 В).
  • Потребляемый ток (в режиме ожидания): до 200 мкА.
  • Потребляемый ток (во время передачи данных): до 1,5 мА.
  • Потребляемый ток (во время резервного питания): 300 . 800 нА.
  • Тактовая частота шины I2C: до 100 кГц.
  • Уровень «0» на шине I2C: -0,5 . 0,8 В.
  • Уровень «1» на шине I2C: 2,2 . VСС 0,3 В.
  • Рабочая температура: 0 . 70 °C.
  • Габариты 30×30 мм.

Спецификация для чипа DS3231:

  • Питание модуля: 3,3 В или 5 В (оба напряжения входят в диапазон допустимых значений).
  • Потребляемый ток (в режиме ожидания): до 170 мкА.
  • Потребляемый ток (во время передачи данных): до 300 мкА.
  • Потребляемый ток (во время резервного питания, без передачи данных): до 3,5 мкА.
  • Тактовая частота шины I2C: до 400 кГц.
  • Уровень «0» на шине I2C: -0,3 . 0,3 * Vcc В.
  • Уровень «1» на шине I2C: 0,7 * Vcc . Vcc + 0,3 В.
  • Напряжение питания батареи: 2,3 .. 5,5 В (номинально 3,0 В).
  • Рабочая температура: 0 . 70 °C.
  • Точность хода: ±2 ppm (примерно ± 1 минута в год)
  • Габариты 30×30 мм.

Все модули линейки «Trema» выполнены в одном формате

Подключение:

Модуль подключается к аппаратной или программной шине I2C Arduino и имеет адрес 0x68.
Для удобства подключения, предлагаем воспользоваться TremaShield.

Модуль удобно подключать 3 способами, в зависимости от ситуации:

Способ — 1 : Используя проводной шлейф и Piranha UNO

Используя провода «Папа — Мама», подключаем напрямую к контроллеру Piranha UNO.

Способ — 2 : Используя Trema Set Shield

Модуль можно подключить к любому из I2C входов Trema Set Shield.

Способ — 3 : Используя проводной шлейф и Shield

Используя 4-х проводной шлейф, к Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO и тд.

При подключении RTC модулей на базе чипов DS1302, DS1307, DS3231 к другим платам, например, WEMOS D1 mini или WEMOS D1 mini Pro на базе микроконтроллера ESP8266, и т.д. перед подключением библиотеки iarduino_RTC нужно подключить библиотеку Wire, как это описано в разделе Wiki — расширенные возможности библиотек iarduino для шины I2C.

Питание:

  • При наличии основного (Vcc = 5 В) и резервного (Vbat = 3 В) источника питания, модули работают от основного источника питания.
  • При отсутствии резервного питания, модули работают от основного источника питания.
  • При отсутствии основного питания, модули работают от резервного (продолжает отсчитывать время, но не отвечает на запросы по шине I2C).
  • При отсутствии основного и резервного питания, модули отключаются и все их регистры сбрасываются.

Подробнее о модулях:

Для работы с RTC модулями на базе чипов DS1302, DS1307, DS3231, . , предлагаем воспользоваться библиотекой iarduino_RTC,

Преимуществом данной библиотеки является удобная реализация получения времени.

Вы можете получать время не только через переменные (для сек., мин., часов., . ), но и одной строкой, указав, что именно в ней должно быть.

Подробнее про установку библиотеки читайте в нашей инструкции..

Примеры:

Вывод времени в Монитор последовательного порта:

Установка времени модуля:

Получение времени в переменные и вывод их в монитор:

Установка системного времени в модуль (времени компьютера):

Будильник:

В библиотеке реализовано 7 функций: 3 основных (begin, settime, gettime) и 4 дополнительных (blinktime, period, settimeUnix, gettimeUnix).

Описание основных функций библиотеки:

Данная библиотека может использовать как аппаратную, так и программную реализацию шины I2C.
О том как выбрать тип шины I2C рассказано в статье Wiki — расширенные возможности библиотек iarduino для шины I2C.

Источник

Урок 18. Подключение RTC часы реального времени с кнопками

В этом уроке мы научимся не только выводить, но и устанавливать время RTC модуля при помощи трёх кнопок.

Нам понадобится:

  • Arduino х 1шт.
  • RTC модуль Trema на базе чипа DS1307 х 1шт.
  • LCD дисплей LCD1602 IIC/I2C(синий) или LCD1602 IIC/I2C(зелёный) х 1шт.
  • Trema Shield х 1шт.
  • Trema-модуль i2C Hub х 1шт.
  • Trema-модуль кнопка c проводами х 3шт.
  • Шлейф «мама-мама»для шины I2С х 2шт.

Для реализации проекта нам необходимо установить библиотеки:

  • Библиотека iarduino_RTC (для подключения RTC часов реального времени DS1302, DS1307, DS3231)
  • Библиотека LiquidCrystal_I2C_V112 (для подключения дисплеев LCD1602 по шине I2C)

О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki — Установка библиотек в Arduino IDE .

Видео

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

Подключение модулей RTC и LCD, данного урока, осуществляется к аппаратным выводам SDA, и SCL.

RTC модуль Trema на базе чипа DS1307 / LCD дисплей на базе чипа LCD1602 Arduino Uno
GND GND
Vcc +5V
SDA (Serial DAta) A4
SCL (Serial CLock) A5

подключение кнопок: кнопка «SET» к выводу 2, кнопка «UP» к выводу 3 и копка «DOWN» к выводу 4.

Код программы:

При подключении библиотеки «iarduino_RTC» нужно указать, с каким модулем ей работать, в данном случае это модуль Trema на базе чипа DS1307:

Аналогичный алгоритм действий при подключении библиотеки «LiquidCrystal_I2C» для работы с LCD дисплеем LCD1602 IIC/I2C(синий) или LCD1602 IIC/I2C(зелёный) :

Осталось подключить 3 кнопки: «SET», «UP» и «DOWN» . Для этого им нужно назначить номера выводов и указать, что эти выводы работают как вход:

В библиотеке «iarduino_RTC», для работы с датой и временем реализованы две функции: settime() — установка и gettime() — получение времени.

В библиотеке «iarduino_RTC» доступны 9 числовых переменных: seconds, minutes, hours, Hours, midday, day, weekday, month и year, значения которых обновляются после каждого вызова функции gettime(). Эти переменные мы будим использовать для изменения даты и времени.

Еще одна функция библиотеки «iarduino_RTC», которая нам понадобится, это blinktime(), она заставляет функцию gettime(), мигать одним из параметров времени (0 — не мигать, 1 — мигать секундами, 2 — мигать минутами, 3 — мигать часами, 4 — мигать днями и т.д.).

И последнее, о чем надо позаботиться перед созданием кода программы — это алгоритм работы кнопок и определение переменных

Алгоритм работы кнопок следующий:

  • В режиме вывода даты или времени (обычный режим):
    • Кратковременное нажатие на кнопку SET переключает вывод даты и вывод времени
    • Удержание кнопки SET переводит часы в режим установки даты или времени (зависит от того, что было на дисплее, дата или время)
    • Кнопки UP и DOWN неактивны.
  • В режиме установки даты или времени:
    • Кратковременное нажатие на кнопку SET — переход между устанавливаемыми параметрами (сек, мин, час, дни, мес, год, д.н.)
    • Удержание кнопки SET выводит часы из режима установки
    • Каждое нажатие на кнопку UP увеличивает значение устанавливаемого параметра даты или времени
    • Каждое нажатие на кнопку DOWN уменьшает значение устанавливаемого параметра даты или времени

Исходя из алгоритма, нам понадобятся две переменные, назовем их: VAR_mode_SHOW и VAR_mode_SET . Первая будет указывать режим вывода (1-выводим_время, 2-выводим_дату). Вторая, будет указывать режим установки времени (0-нет, 1-сек, 2-мин, 3-час, 4-день, 5-мес, 6-год, 7-д.н.).

Источник

Подключение RTC часы реального времени DS1302, DS1307, DS3231 к Arduino

Для подключения RTC часов реального времени DS1302, DS1307, DS3231, была разработана универсальная библиотека.

Подключение:

Подключение DS1307 к Arduino :

RTC DS1307 Arduino UNO
GND GND
VCC +5V
SDA A4
SCL A5

Подключение DS1302 к Arduino :

RTC DS1302 Arduino UNO
GND GND
VCC +5V
RST 10 (Можно изменить на другие в скетче)
CLK 13 (Можно изменить на другие в скетче)
DAT 12 (Можно изменить на другие в скетче)

Подключение DS3231 к Arduino :

RTC DS3231 Arduino UNO
GND GND
VCC +5V
SDA A4
SCL A5

Программа:

В зависимости от того какой модуль Вы подключаете, необходимо в программе указать

Для DS1307:

Для DS1302 :

Для DS3231 :

Пример установки текущего времени в RTC модуль (DS1307):

Пример считывания текущего времени с RTC модуля (DS1307) и вывод в «Последовательный порт» :

Преимущества библиотеки:

— библиотека имеет внутренние функции аппаратной обработки протоколов передачи данных I2C и SPI, а следовательно не требует подключения дополнительных библиотек, но и не конфликтует с ними, если таковые всё же подключены.

— библиотека имеет внутренние функции программой обработки протокола передачи данных 3-Wire

— для инициализации модуля необходимо вызвать функцию begin с названием модуля.

— подключение модулей осуществляется к аппаратным выводам arduino используемой шины (за исключением 3-Wire)

— простота установки и чтения времени функциями settime и gettime

функция settime может устанавливать дату и время, как полностью, так и частично (например только минуты, или только день, и т.д.)

функция gettime работает как функция date в php, возвращая строку со временем, но если её вызвать без параметра, то функция ничего не вернёт, а время можно прочитать из переменных в виде чисел.

— библиотека расширяемая, то есть для того, чтоб она работала с новым модулем, нужно указать параметры этого модуля в уже существующих массивах файла RTC.h (тип шины, частота шины в кГц, режимы работы, адреса регистров и т.д.), как всё это сделать, описано в файле extension.txt

Таким образом добавив новый модуль в библиотеку, мы лишь увеличим область занимаемой динамической памяти на

36 байт, при этом не затронув область памяти программ.

— при вызове функции begin, библиотека читает флаги регистров модуля и при необходимости устанавливает или сбрасывает их так, чтоб модуль мог работать от аккумуляторной батареи, а на программируемом выводе меандра (если таковой у модуля есть) установилась частота 1Гц, тогда этот вывод можно использовать в качестве внешнего посекундного прерывания.

— при работе с модулем DS1302 не нужны никакие резисторы на выводе GND (которые нужны для его работы с другими библиотеками этого модуля), это достигнуто тем, что для шины 3-Wire указана конкретная частота 10кГц, не зависимо от частоты CPU arduino.

— в библиотеке реализована еще одна не обязательная функция period, принимающая в качестве единственного аргумента — количество минут (от 1 до 255)

если в течении указанного времени была вызвана функция gettime несколько раз, то запрос к модулю по шине будет отправлено только в первый раз, а ответом на все остальные запросы будет сумма времени последнего ответа модуля и времени прошедшего с этого ответа.

Функцию period достаточно вызвать один раз.

Источник

Adblock
detector