Найти тему
arduino-kidru

Как собрать часы на Ардуино, настройка даты и времени. Управление энкодером.

Оглавление

Сегодня я расскажу, как просто собрать часы на модуле DS3231 и вывеси время и дату на LCD дисплей 1602. Так же эти часы могут работать в 12 и 24 часовом формате времени. Выводят год, дату и время, а также температуру. Полная настройка и установка.

Экран часов
Экран часов

Модуль часов RTC DS3231 позволяет внести в память дату и время, а благодаря батарейке вы можете не бояться потери этих значений. Часы будут ходить и без Ардуино, но показывать время к сожалению не смогут.

В сегодняшнем примере будет показано не только как подключить модуль к Ардуино, но и как его настроить, установить дату и время. Установки будем производить с помощью энкодера. Это избавит нас от кучи лишних кнопок как в других подобных проектах.

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

Сборка таких часов — это простое подключение нескольких проводов согласно схеме. Минимум деталей, простейшая схема.

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

Модуль DS3231 – это очень точные, и простые в подключении часы, поэтому они очень часто применяются в радиолюбительских разработках. Есть ещё модуль DS1307, но это устаревшая модель. Единственный плюс этого модуль — это его цена. Она немного ниже, но и минусов у него много. Главный – это то, что они менее точны и не стабильны при перепадах температуры.

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

Чем эти часы будут отличаться от предыдущего примера.

Ну, во-первых, все регулировки здесь будут с помощью одного энкодера, вместо кнопок.
Второе – это возможность выбора 12 часового или 24 режима. Для этого надо просто нажать и некоторое время удерживать кнопку на энкодере.

Название месяца и дня недели, я вывел на русском языке. В предыдущем мне не удалось это сделать, поэтому там английская версия.

Ну и здесь присутствует некоторая автоматика. Например, если вы будете изменять год, то день недели будет устанавливаться сам. Тоже самое будет если изменять дату. День недели установится сам, по календарю.

Принцип работы часов такой.

Для выбора режима изменения, надо нажать на кнопку энкодера.
Узнать какой элемент сейчас активен, и доступен к редактированию, можно по курсору снизу.
Как только вы выбрали нужный объект (дату или время), надо вращать ручку энкодера, вправо или влево, для уменьшения или увеличения значения.
Доступ к редактированию ограничен по времени, и если вы не начали редактирование в течении 2 секунд, выделение сбросится и надо будет снова его выбирать.
Как я уже говорил, для выбора 12 часового или 24 часового режима часов, надо удерживать нажатой кнопку в течении пары секунд.
12 часовой режим обозначен АМ, а 24 часовой - МТ.
Год можно редактировать с 2000 по 2099год.
По окончании редактирования значение будет сохранено в память.
Точка на экране показывает, что часы находятся в режиме редактирования.

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

Теперь давайте посмотрим, из чего собраны часы и что нам понадобится.

Сегодня нам понадобятся

  • Модуль часов DS3231
  • LCD дисплей 1602 I2C
  • Энкодер. Я применил в виде модуля KY-040
  • И любая плата Ардуино.
Набор Часы с энкодером
Набор Часы с энкодером

Как и во многих предыдущих примерах я взял LCD дисплей 1602, в версии с I2C. Но как и все дешёвые экранчики, у него нет русской кодировки, и для того чтобы это изменить я использовал специальную библиотеку LCD_1602_RUS_ALL которая это изменит.

У меня есть очень хорошее видео про настройки дисплея и русификатор. Вы можете посмотреть его на канале.

Ссылка на библиотеки и скетч примера находится на моём сайте "Ардуино для начинающих".

Теперь давайте посмотрим схему подключения.

Схема сборки часов с энкодером
Схема сборки часов с энкодером

У модуля дисплея, и у модуля часов одинаковые выходы, так как они работаю по одной шине. Шине I2C. Поэтому и подключаем их параллельно. И выводы SDA и SCL подключаем к выводам A4 и A5 соответственно. Питание обоих модулей 5 вольт.

Контакты энкодера подключаем к выводам D2 – D4
D2 – Clock
D3 – Data
D4– Switch. Это кнопка

В модуле контакты Clock и Data подтянуты к питанию резисторами 10 кОм. Если у вас просто энкодер(не модуль), то вам надо самим припаять два резистора.

Если вам нравятся мои видео или статьи, то вы можете поставить лайк, это очень поможет мне в продвижении канала.
Также вы можете написать в комментариях, что бы вы хотели ещё увидеть или прочитать.
У меня более 150 видео и возможно я уже снял урок по этой теме, и его осталось только выложить на Дзэн.
Спасибо за то, что досмотрели или дочитали до конца.
А пока на этом всё.
До скорой встречи.

-4