Часы_на_tm1637_и_ds3231

Часы_на_tm1637_и_ds3231

Анатолий Беляев (aka Mr.ALB). Персональный сайт

Да пребудут с вами Силы СВЕТА!

2020-04-16
Добавлена страница в разделе Здоровье про
Катушки Мишина

2017-01-19
Добавлен раздел
Веды

Часы на RTC DS3231 и TM1637

Продолжаю использовать недорогие и миниатюрные платы Arduino Pro Mini. На этой странице представляю проект часов. Обычные такие часы .

Подразделы

Прежде чем делать свой скетч, посмотрел в Интернете, что делают другие. И вот мне попался интересный проект http://arduinolab.pw/index.php/2016/06/23/chasy-na-arduino/ , решил взять его за основу.

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

  1. Отсутствие регулировки яркости индикатора.
  2. Отсутствие гашения незначащего нуля.

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

Кто-то делает автоматическую регулировку яркости с помощью фоторезистора. Так вполне можно сделать, но я не стал, нет необходимости в такой опции, хотя проект и можно расширить, или модернизировать на такой вариант.

Ещё хотел реализовать будильник, но потом что-то передумал и выведенная кнопка на переднюю панель для установки будильника так и осталась не подключенной. Может быть при необходимости и доработаю часы под будильник.

Схема часов

Схема часов не сложная. Благодаря тому, что индикатор управляется по протоколу IIC (I2C), соединений совсем немного. Блок питания используется импульсный, обратноходовый, от какой-то зарядки для телефона. Выдаёт он +6,5 В. Это напряжение подаётся на стабилизатор Arduino Pro Mini – на контакт RAW.

Pic 1 Схема электрическая принципиальная для скетча #8

Монтажную схему см. ниже.

Pic 2 Схема монтажная для скетча #8

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

Конструкция часов

Корпус традиционно склеен из пластика ABS. Габариты 80 х 60 х 54 мм (Ш х Г х В). Сама конструкция представляет собой блок из модулей: индикатора, реального времени, платы с Ардуино, модуля питания и планки с кнопками. Arduino Pro Mini вставлено в панельку DIP24, которая распаяна на монтажной плате. К этой плате и идут соединения от модулей. Конструктивно модули соединены между собой стойками из нейлона и винтами М3. К этим же стойкам прикручивается и задняя крышка. Блок из модулей вставлен в корпус и фиксируется снизу так же винтом М3.

Обращу внимание на то, что сверху установлена клавиша выключения внешнего питания. Нет смысла жечь индикатор пока целый день на работе. Так как в модуле реального времени имеется своя литивая батарейка на 3 В, то время продолжает отсчитываться независимо от питания Ардуино и индикатора. Очень удобная функция.

Кнопки управления вынес на переднюю панель и немного утопил вглубь. Сейчас объясню зачем так. Есть у меня часы ASSISTANT ah-1066 , габариты у них чуть-чуть больше, а индикатор такой же, зелёненький. Так у них кнопки управления вынесены на верхнюю крышку, что с моей точки зрения и опыта эксплуатации такой конструкции не совсем удобно, да и пыль на них оседает. Батарейки в тех часах мизинчиковые (ААА) 3 шт. – недолговечно. Нет регулировки яркости индикатора. Поэтому, создавав свою конструкцию старался устранить эти недостатки. К примеру, когда кнопки впереди, то легко подстраивать или устанавливать время, так как одновременно видишь и индикатор, и кнопки.

Читайте также:  Строим_бытовку_на_даче_своими_руками

Ниже небольшой фотоотчёт по конструкции часов.

Pic 3 Часы. Внешний вид, разные ракурсы Pic 4 Часы. Внешний вид, разные ракурсы Pic 5 Часы. Внешний вид, вид снизу Pic 6 Часы. Внешний вид, снята задняя крышка Pic 7 Часы. Вынут блок часов из корпуса Pic 8 Часы. Вынут блок-модуль часов из корпуса Pic 9 Часы. Блок-модуль часов разъединён. Отделена плата RTC DS3231 Pic 10 Часы. Блок-модуль часов разъединён. Отделена плата RTC DS3231 Pic 11 Часы. Блок-модуль часов разъединён. Отделена плата индикатора TM1637 и панель кнопок Pic 12 Часы. Окончательный вариант

Скетч часов

Далее представлен скетч. Рассмотрю некоторые его особенности. Так, у автора для мигания точек используется сигнал с модуля реального времени с контакта SQW, который подаётся на контакт 2 Ардуино. На этом контакте установлено внешнее прерывание 0 на изменение ( CHANGE ). Можно реализовать и по-другому, к примеру, через Таймер1. Оставил так, как у автора, может быть в другом проекте сделаю через Таймер1, для разнообразия.

Весь код подробно закомментирован, с его пониманием, надеюсь, проблем не будет. Хочу лишь обратить внимание, что когда происходит запись значения в EEPROM, то индикатор гашу на пол секунды, чтобы видеть, что команда записи отработала. В некотором роде – индикация записи.

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

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

Часы на Arduino используя DS3231

Сегодня поговорим о часах на Arduino из-за того что эта тема очень востребованная. Часы будут обычные, без температуры, даты, просто обычные часы с установкой времени кнопками.

Для этого нам понадобится 7-сигментный индикатор на TM1637

И модуль часов реального времени DS3231

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

Модуль часов подключается к I2C шине и только нога SQW подключается на нулевое прерывание, на UNO это вторая нога. На этом выходе генерируется сигнал с периодом в одну секунду, который дергает прерывание и мигают двоеточие на индикаторе, то есть если его отключить – точки остановятся, не будут мигать.

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

Читайте также:  Модульные_диваны_что_это

По поводу кода смысла рассказывать нет, только основное.

Тут вот к 6-й и 7-й ноге подключен индикатор.

К 3-й 4-й 5-й подключены кнопки, можно задавать любые другие при необходимости все остальное менять нельзя.

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

В статье рассказано о том, как из ардуины и дисплея TM1637 сделать часы-будильник, управляемый при помощи любого ИК-пульта.

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

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

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

Ардуина

Дисплей TM1637

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

Пищалка (buzzer)


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

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


Во втором варианте потребуется модуль часов 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

Ссылка на основную публикацию
Частичный_ремонт_мягкой_кровли
Технология ремонта мягкой кровли Мягкая кровля является одним из популярных видов покрытия крыши. Он успешно используется как при строительстве частных...
Цветочный_бордюр_вдоль_дорожки
Как украсить сад бордюрными цветами Бордюрные цветы все больше обретают популярность среди садоводов-любителей с каждым годом. И это неудивительно! Ведь...
Цветочный_клещ_на_комнатных_растениях_фото
Паутинный клещ на комнатных растениях Каждый хочет иметь растение дома, неважно с практической точки зрения или с эстетической, но комнатные...
Частные_дома_в_сша_фото
Американские дома (53 фото) Внешний облик отдельного американского дома зависит, прежде всего, от социального статуса его хозяина, культурных традиций и...
Adblock detector