- Arduino и часы RTC DS3231
- Описание
- Подключение
- Библиотеки
- Примеры
- Подключение RTC часы реального времени DS1302, DS1307, DS3231 к Arduino
- Подключение:
- Программа:
- Урок 18. Подключение RTC часы реального времени с кнопками
- Нам понадобится:
- Видео
- Схема подключения:
- Код программы:
- Алгоритм работы кнопок следующий:
- Обзор часов реального времени DS3231 (RTC)
- Технические параметры
- Общие сведения
- Подключение DS3231 к Arduino
Arduino и часы RTC DS3231
Описание
DS3231 – микросхема часов реального времени, которая при наличии внешнего автономного питания считает время и всегда готова поделиться им с микроконтроллером. Основные характеристики:
- Питание: 2.3.. 5.5V
- Потребление: 180 мкА
- Потребление батарейки: 0.8 мкА
- Считает часы, минуты, секунды, число, месяц, год, день недели
- Встроенный календарь до 2100 года
- Встроенный термометр, точность ±3°С
В продаже можно найти несколько вариантов модулей на базе DS3231, в наборе GyverKIT идёт мини-версия (второй слева):
Подключение
Модуль подключается к шине I2C согласно распиновке микроконтроллера:
У мини-версии модуля пины подписаны немного иначе:
Библиотеки
В примерах на этом сайте мы будем использовать microDS3231 как гораздо более лёгкую и оптимальную. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию microDS3231. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.
Примеры
Чтобы автоматически установить время на модуле, можно прошить следующую программу:
Она установит дату и время, равное времени компиляции программы, то есть текущее. После этого можно работать с модулем, например выведем дату и время разными способами:
Источник
Подключение 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 достаточно вызвать один раз. Источник Урок 18. Подключение RTC часы реального времени с кнопкамиВ этом уроке мы научимся не только выводить, но и устанавливать время RTC модуля при помощи трёх кнопок. Нам понадобится:
Для реализации проекта нам необходимо установить библиотеки:
О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki — Установка библиотек в Arduino IDE . ВидеоСхема подключения:Подключение модулей RTC и LCD, данного урока, осуществляется к аппаратным выводам SDA, и SCL.
подключение кнопок: кнопка «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 — мигать днями и т.д.). И последнее, о чем надо позаботиться перед созданием кода программы — это алгоритм работы кнопок и определение переменных Алгоритм работы кнопок следующий:
Исходя из алгоритма, нам понадобятся две переменные, назовем их: VAR_mode_SHOW и VAR_mode_SET . Первая будет указывать режим вывода (1-выводим_время, 2-выводим_дату). Вторая, будет указывать режим установки времени (0-нет, 1-сек, 2-мин, 3-час, 4-день, 5-мес, 6-год, 7-д.н.). Источник Обзор часов реального времени DS3231 (RTC)Автор: Сергей · Опубликовано 16.01.2017 · Обновлено 13.04.2020 Модуль DS3231 (RTC, ZS-042) — представляет собой недорогую плату с чрезвычайно точными часами реального времени (RTC), с температурной компенсацией кварцевого генератора и кристалла. Модуль включает в себя литиевую батарею, которая поддерживает бесперебойную работу, даже при отключении источник питания. Интегрированный генератор улучшить точность устройства и позволил уменьшить количество компонентов. Технические параметры► Напряжение питания: 3.3В и 5В Общие сведенияБольшинство микросхем, таких как DS1307 используют внешний кварцевый генератор частотой 32кГц, но в них есть существенный недостаток, при изменении температуры меняется частота кварца, что приводит к погрешности в подсчете времени. Эта проблема устранена в чипе DS3231, внутрь которого установили кварцевый генератор и датчик температуры, который компенсирует изменения температуры, так что время остается точным (при необходимости, данные температуры можно считать). Так же чип DS3231 поддерживает секунды, минуты, часы, день недели, дата, месяц и год информацию, а так же следит за количеством дней в месяце и делает поправку на високосный год. Поддерживает работу часов в двух форматов 24 и 12, а так-же возможно запрограммировать два будильника. Модуль работает по двух проводной шине I2C. Теперь немного о самом модуле, построен он на микросхеме DS3231N. Резисторная сборка RP1 (4.7 кОм), необходима для подтяжки линий 32K, SQW, SCL и SDA (кстати, если используется несколько модулей с шиной I2C, необходимо выпаять подтягивающие резисторы на других модулях). Вторая сборка резисторов, необходима для подтяжки линий A0, A1 и A2, необходимы они для смены адресации микросхемы памяти AT24C32N. Резистор R5 и диод D1, служат для подзарядки батарее, в принципе их можно выпаять, так как обычной батарейки SR2032 хватает на годы. Так же установлена микросхема памяти AT24C32N, это как бы бонус, для работы часов RTC DS3231N в ней нет необходимости. Резистор R1 и светодиод Power, сигнализируют о включении модуля. Как и говорилось, модуль работает по шине I2C, для удобства эти шины были выведены на два разъема J1 и J2, назначение остальных контактов, можно посмотреть ниже.Назначение J1 Немного расскажу, о микросхеме AT24C32N, это микросхема с 32к памятью (EEPROM) от производителя Atmel, собранная в корпусе SOIC8, работающая по двухпроводной шине I2C. Адрес микросхемы 0x57, при необходимости легко меняется, с помощью перемычек A0, A1 и A2 (это позволяет увеличить количество подключенных микросхем AT24C32/64). Так как чип AT24C32N имеет, три адресных входа (A0, A1 и A2), которые могут находится в двух состояния, либо лог «1» или лог «0», микросхеме доступны восемь адресов. от 0x50 до 0x57. Подключение DS3231 к ArduinoНеобходимые детали: Подключение: Библиотеки работающий с DS3231 нет в среде разработке IDE Arduino, необходимо скачать «DS3231 » и добавить в среду разработки Arduino. Установка времени DS3231 Источник |