- Подключение RTC часы реального времени DS1302, DS1307, DS3231 к Arduino
- Подключение:
- Программа:
- Подключаем и разбираемся с ошибками часов DS1302 для arduino
- 17 комментариев
- Часы реального времени, RTC (Trema-модуль)
- Общие сведения:
- Видео
- Спецификация для чипа DS1307Z:
- Спецификация для чипа DS3231:
- Подключение:
- Способ — 1 : Используя проводной шлейф и Piranha UNO
- Способ — 2 : Используя Trema Set Shield
- Способ — 3 : Используя проводной шлейф и Shield
- Питание:
- Подробнее о модулях:
- Примеры:
- Вывод времени в Монитор последовательного порта:
- Установка времени модуля:
- Получение времени в переменные и вывод их в монитор:
- Установка системного времени в модуль (времени компьютера):
- Будильник:
- Описание основных функций библиотеки:
Подключение 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 достаточно вызвать один раз. Источник Подключаем и разбираемся с ошибками часов DS1302 для arduinoПриветствую вас пользователи nookery.ru! Я уже не один год время от времени создаю проекты на arduino, для себя и друзей. У меня как и у многих из вас, возникают различные вопросы и проблемы, и это нормально ведь главное учиться и не останавливаться на достигнутом. Не давно я достал свой старый проект и вспомнил сколько проблем у меня с ним возникло. Сейчас я опишу одну из них. В моем проекте использовались часы DS1302, с подключением которых у меня особо не возникло проблем. Пробежавшись по не скольким сайтам нашел схему, в основном она была одна и та же на всех сайта. В моем проекте я подключил на цифровые выводы arduino 8 9 10, вы же можете их подключить как угодно, у меня они просто единственные остались свободные. Установил множество различных библиотек для работы с часами, но рабочими в моем случаи было только две, остальные были либо принципиально с другим вариантом подключения, либо модифицированные, что меня абсолютно не устраивало. Все хорошо, что хорошо кончается, кода я загрузил скетч: К моему разочарованию я увидел не то что хотел, а именно каждую секунду выводилось время как и положено дата и время, но в моем случаи выводилось реальное время и еще какое то левое, 2000-00-00 00:00:00 покапавший в библиотеке оказалось что это время вшито внутри нее. Но это никак не помогло мне, так как реальное и фейковое время поочередно выводились у меня на дисплей каждую секунду. Причем в lcd дисплее выводились не время с часов DS1302, а какие то иероглифы, по поочередно. На многих сайтах упоминалось о том что час сломаны, плохая пропайка итд. Но я не опускал руки и все же нашел причину. Оказалось что все дело в не полной схеме, а точнее не хватала резистора 10 кОм на землю -5v. Которые снижали шум внутри цепи, и предотвращали вывод не верной информации с часов. Я накидал полную схему: С этой схемой все стабилизировалось и часы DS1302 стали работать как надо. Ниже я выложил две библиотеки которые работали у меня, но написаны одна на C# другая на C++ так как же в них разные команды вывода информации, но в обоих есть скетч примеры в архиве с комментариями. 17 комментариевМужик, спасибо большое. хотел было выбрасывать их уже) Рад что помогло, однако было замечены сбои при продолжительной работе в течении нескольких дней, хотя скорее всего в моем случаи это вызывали реле и элементы питания. В библиотеке перечислены пины: И в течение!! — учите русский язык — отымённый предлог Золотой Вы человек! Спасибо за помощь в устранении проблемы с перепутанными пинами. Александр, перепутанные порты не при чем. Учить русский — хорошо. А намерение помочь людям — важнее! Большое спасибо — помогли! Умный Александр — порты не при чем. Собрал все по инструкции не работает выводил скажем нули, перевернул провода CLK и RST на плате и часы пошли. Большое спасибо за статью! Два дня не мог разобраться что за чушь получаю на выходе с этих часов! :))) РЕЗИСТОР на 10 кОм. Теперь понимаю почему почти все модули реального времени используют аналоговые пины а не цифровые. Теперь буду смотреть как вывести время на 4 матрицы 8х8. Реально резюк помог. А не подскажите как использовать в операторе if и часы и минуты одновременно Конкретно по методам не подскажу, студии нет ардуина под рукой, но суть сводиться к следующему. Если минуты равны 20 и часы равны 5 то выполняем какое то действие в скобках. Огромное спасибо! Тоже уже выкидывать собирался. Так же чуть не поступил 😀 До этого у людей работало, у вас нет?) Подскажите пожалуйста ошибку. При компиляции выдает (‘hour’ was not declared in this scope) #include Источник Часы реального времени, 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:
Спецификация для чипа DS3231:
Все модули линейки «Trema» выполнены в одном формате Подключение:Модуль подключается к аппаратной или программной шине I2C Arduino и имеет адрес 0x68. Модуль удобно подключать 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. Питание:
Подробнее о модулях:Для работы с RTC модулями на базе чипов DS1302, DS1307, DS3231, . , предлагаем воспользоваться библиотекой iarduino_RTC, Преимуществом данной библиотеки является удобная реализация получения времени. Вы можете получать время не только через переменные (для сек., мин., часов., . ), но и одной строкой, указав, что именно в ней должно быть. Подробнее про установку библиотеки читайте в нашей инструкции.. Примеры:Вывод времени в Монитор последовательного порта:Установка времени модуля:Получение времени в переменные и вывод их в монитор:Установка системного времени в модуль (времени компьютера):Будильник:В библиотеке реализовано 7 функций: 3 основных (begin, settime, gettime) и 4 дополнительных (blinktime, period, settimeUnix, gettimeUnix). Описание основных функций библиотеки:Данная библиотека может использовать как аппаратную, так и программную реализацию шины I2C. Источник |