Appletaxi.ru

Реальное авто
4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

RTC DS3231; высокоточные часы реального времени

RTC DS3231 — высокоточные часы реального времени

RTC DS3231 - высокоточные часы реального времениDS3231 — высокоточные часы реального времени (real-time clock, RTC) со встроенными I2C интерфейсом, термокомпенсированным кварцевым генератором (TCXO) и кварцевым резонатором. Прибор имеет вход для подключения резервного автономного источника питания, позволяющего осуществлять хронометрирование и измерение температуры даже при отключенном основном напряжении питания. Встроенный кварцевый резонатор повышает срок службы прибора и уменьшает необходимое количество внешних элементов. DS3231 доступен в модификациях с коммерчески и индустриальным рабочим температурным диапазоном и упакован в 300 mil 16 контактный SO корпус.

RTC обеспечивает отсчет секунд, минут, часов, дней недели, дней месяца и года. Дата конца месяца определяется автоматически с учетом високосного года. Часы реального времени работают в 24 или 12- часовом формате с индикацией текущей половины суток (AM/PM). Прибор имеет два ежедневных будильника и выход прямоугольного сигнала с программируемой частотой. Обмен данными с прибором ведется через встроенный последовательный I2C совместимый интерфейс.

Прецизионный термокомпенсированный источник опорного напряжения и схема сравнения отслеживают напряжение основного питания VCC и при его снижении ниже заданного порога формируют сигнал сброса и осуществляют перевод схемы на работу от резервного источника питания. Дополнительный вывод RST может использоваться для внешнего сброса.

Почему именно DS3231?

У тех же Maxim/Dallas Semiconductor номенклатура RTC устройств насчитывает десятки микросхем. Среди них немало достойных моделей. И при желании их, конечно, можно купить, например, в ЧИП и ДИП. Но всё же большинство покупаемых деталей — это Аликспресс, а что он предлагает нам на запрос RTC? — Убогий DS1302, DS1307 и DS3231, что-то другое встречается значительно реже. Из указанных трёх микросхем будильник есть только в DS3231. Таким образом, DS3231 — это наиболее доступная микросхема (или модуль) RTC с функцией будильника и высокой точностью.

Читайте так же:
Регулировка фар на валдае своими руками

Функция delay()

Функция delay() позволяет приостановить выполнение текущей программы на указанное в параметре время. Синтаксис команды выглядит следующим образом:

Время указывается в миллисекундах (1 сек = 1000 мс). Данный параметр может иметь тип «unsigned long», который находится в диапазоне от 0 до 4294967295. Ниже пример использования команды delay():

В приведенном выше примере, светодиод загорается на 0,5 секунды, затем гаснет на 1 секунду и так далее, пока питание Arduino не будет отключено.

Этакий разработчик идей, имеющий открытый вход к запуску на платформе Ардуино. Главное требование в использовании – наличие интернета: Wi-Fi или мобильный трафик. Только в этом случае Blynk будет готов к выполнению. Начать использование можно спустя несколько минут, после окончания настроек. Программой поддерживается АО по выбору пользователя.

Основные функции приложения Blynk заключаются в управлении устройствами при помощи удаления и добавления протоколов HTTP, а также запросов GET и POST. Значения параметров можно обновлять и получать. Запросы обновляются в самом приложении.

Вариативность – важная точка программы. Имея связь с работающими платформами, можно соединиться с сервером любым удобным способом. Данный инстинктивный портал обладает простотой в использовании над проектом. Библиотека постоянно обновляется для всех приложений Arduino Blynk.

Клиентов, желающих включать кофе машинку со своего смартфона, заинтересует это приложение. Это, пожалуй, единственный сервис с подобными возможностями. И не смотря на, то, что он практически безлимитный, является трудным Openhab. В сравнении с другими сервисами обладает быстрой скоростью при запуске.

Тестируем часы реального времени

Первым делом посмотрим тестовый скетч, который считывает время с модуля RTC один раз в секунду. Также выясним, что произойдет, если снять батарею и заменить ее, что заставляет часы реального времени сбросится. Прежде всего, снимем батарею при отключенном питании Arduino. Подождем 3 секунды и вернем батарею на место. Это приведет к сбросу RTC.

Выберем пример скетча из меню Arduino IDE Файл → Образцы → DS1307RTC → ReadTest и загрузим его в микроконтроллер

Читайте так же:
Регулировка вылета руля лансер

Ардуино — будильник

С помощью пульта можно будет программировать время и будильник, включать/отключать будильник и устанавливать отсрочку сигнала. То есть делать всё не вставая с дивана.

Так же будут рассмотрены варианты получения времени.

Что понадобится

Ардуина

Дисплей TM1637

Два светодиода — красный и зелёный . Красный будет гореть когда включён будильник, а зелёный будет зажигаться при переключении в режим установки будильника.

Пищалка (buzzer)


Можно не покупать, а выдрать откуда-либо.

ИК-приёмникнаиболее предпочтительный вариант — TSOPxx38 (38kHz).

tsop

Во втором варианте потребуется модуль часов DS 3231.

В начале вариант для тех, кто хочет просто подключить/проверить дисплей.

Подключаем всё по следующей схеме:

Скачиваем и устанавливаем библиотеку для дисплея TM1637.

Если всё работает, то переходим к следующему этапу. Добавим к схеме светики, пищалку и ик-приёмник…

У Вас может быть другая распиновка ик-приёмника. Резисторы 300-1000 ом.

Сначала залейте скетч для обнуления EEPROM…

Теперь я (немного забегая вперёд) опишу алгоритм, а после перейдём к программированию пульта.

Инструкция и как работает

Установите время на часах. Нажмите кнопку перехода в режим будильника (загорится зелёный светик и на дисплее будет отображаться будильник) и установите нужное время. Нажмите кнопку включения будильника (загорится красный светик).
Чтоб вернуться в режим часов нужно снова нажать ту же кнопку. Если не возвращаться в режим часов, то через минуту это произойдёт автоматически.

Сигнал будильника будет воспроизводиться в течении минуты, после этого будет десятиминутная пауза и снова сигнал в течении минуты. Так будет происходить до тех пор, пока будильник не будет выключен. Если во время воспроизведения сигнала нажать кнопку отсрочки, то звук выключится, а время будильника переведётся на десять минут вперёд.
То есть в момент пробуждения у вас будет два варианта — нажать кнопку отключения будильника и вылезать из тряпок, либо нажать кнопку отсрочки и поваляться ещё 10 минут.

Читайте так же:
Регулировка клапанного зазора субару

После нажатия кнопки отключения будильника установленное время вернётся к изначальному значению. То есть, вы встаёте в 7:00 утра, будильник зазвенел, вы нажали отсрочку, будильник перевёлся на 7:10, зазвенел, вы таки встали, отключили будильник — будильник вернулся на 7:00.

В момент нажатия отсрочки появляется индикация будильника.

Время будильника, его состояние (включён/отключён) и уровень яркости дисплея сохраняются в энергонезависимой памяти.

Нажатия на кнопки сопровождаются звуковым сигналом.

Программирование пульта

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

Нужно выбрать кнопки, которыми вы будете устанавливать время на часах (прибавлять/убавлять часы и минуты, четыре кнопки). Кнопки для установки будильника — прибавлять/убавлять часы и минуты будильника (четыре кнопки). Кнопка включения/отключения будильника (одна кнопка). Кнопка отсрочки будильника на 10 минут (одна кнопка) и кнопка перехода в режим установки будильника (одна кнопка). Кнопки для регулировки яркости (две штуки).

Заполучим коды кнопок. Откройте «Монитор последовательного порта», и нажмите на пульте кнопку, которой планируете устанавливать время — прибавлять часы:


Нажатия должны быть короткими. Иногда печатаются сразу два числа, первое число это код кнопки (то, что нам нужно), а второе это код повтора (он нам не интересен).

Скопируйте это число и вставьте в скетч:

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

Вставляем в скетч:

Проделываем всё то же самое для остальных кнопок. В скетче есть комментарии.

И в конце комментируем или удаляем строку…

Заливаем скетч, и в принципе можно пользоваться. Однако такой способ подсчёта времени не выдерживает никакой критики, поэтому предложу пару вариантов. Первый — это использование модуля DS3231 (очень точный и стабильный), а второй — это ежесуточная коррекция времени от большого компьютера. Начну с последнего.

Читайте так же:
Регулировка гбо на инжекторных автомобилях

Сразу же скажу, что второй вариант подходит тем, у кого есть компьютер с линуксом или роутер с альтернативной прошивкой.

Синхронизация от компьютера

Идея заключается в следующем, часы подключены (USB, UART) к компьютеру с запущенной на нём программой, которая «слушает» USB-порт в ожидании запроса от часов. Ровно в 00:00:10 часы отправляют запрос компьютеру, а тот в ответ отсылает часам своё системное время.

Добавим в скетч необходимый функционал. Там где счётчик времени добавим блок отвечающий за запрос…

И в конец основного цикла добавим блок отвечающий за приём:

Не забудьте про коды кнопок пульта.

Далее скачиваем программу chasikom, кладём её в домашнюю папку, подключаем часы к компу и запускаем:

У вас будет свой юзер и возможно другое устройство (/dev/ttyUSB0). Проверить можно так:

Через десять секунд установится точное время.

Если нужна прога для какого-либо роутера, тогда напишите в комментах.

Вариант с DS3231

Добавляем в схему модуль:

Скачиваем и устанавливаем библиотеку DS3231, заливаем новый скетч:

Не забывайте про коды кнопок пульта.

Библиотека для DS3231 написана так, что если отсоединить модуль, то программа зависнет в ожидании ответа от модуля.

Теперь возьмите пульт, выставите время (в этом скетче нет коррекции от большого компьютера) и передёрните ардуине питание. Если всё работает правильно, то на часах будет текущее время.

Ну и наконец скетч для работы с модулем часов и коррекцией времени:

На этом пожалуй всё.

Вступайте в Telegram-группу Arduino

Скетч для Arduino

Проверка часов реального времени

Первый скетч, который стоит запустить — это программа, которая будет считывать данные с модуля часов реального времени раз в секунду.

Для начала давайте посмотрим, что произойдет, если мы извлечем батарейку и заменим ее на другую, пока Arduino не подключен к USB. Подождите 3 секунды и извлеките батарейку. В результате чип на часах реального времени перезагрузится. После этого вставьте код, который приведен ниже (код также можно выгрузить в меню Examples→RTClib→ds1307 в Arduino IDE) и загрузите его на Arduino.

Читайте так же:
Ошибка синхронизации системного времени

Вам также понадобится библиотека OneWire.h, скачть ее можно здесь

// функции даты и времени с использованием часов реального времени DS1307, подключенные по I2C. В скетче используется библиотека Wire lib

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector