Часы-будильник на модуле RTC DS1302

Цель этого проекта - освоить работу с модулем часов реального времени (Real Time Clock) на базе чипа DS1302 от компании Maxim Integrated.

Модуль часов реального времени DS1302

Модуль часов реального времени DS1302

На выходе проекта мы получим часы-будильник, на экране которого можно увидеть текущее время, дату и день недели, а также комнатную температуру. Функция будильника имеет широкий спектр настроек : от одиночного включения до срабатывания в определенный день недели. В качестве источника сигнала используется пьезопищалка и светодиод. Система позволяет настраивать все необходимые параметры и записывать их в память Arduino.

СОСТАВ СИСТЕМЫ

PLC Arduino UNO с шилдом Sensor Shield v 5.0 (питание 7-12 В постоянного тока), LCD-дисплей с шиной I2C, DC-DC конвертер для питания дисплея, пьезопищалки и светодиода, кнопочный пост с тремя кнопками и модуль часов реального времени. Для работы этого модуля нужна батарейка CR2032 на 3 вольта. Измерение температуры производится самодельным температурным преобразователем.

КАК РАБОТАЕТ

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

Часы-будильник на базе RTC DS1302

Часы-будильник на базе RTC DS1302

КНОПКИ УПРАВЛЕНИЯ

Управлять системой можно с помощью трех кнопок : НАСТРОЙКИ, ВВЕРХ и ВНИЗ. Рассмотрим их функции подробно :

Кнопка НАСТРОЙКИ

При нажатии этой кнопки вы попадете в меню настроек и будете циклично переходить по пунктам меню. После последнего пункта меню вы снова вернетесь на основной экран (время, дата и температура). Так как количество пунктов меню довольно много, все они разбиты на четыре логические группы : установка будильника, настройка часов и даты, калибровка термодатчика и сохранение/загрузка. Каждый блок предваряет приветственный экран, от куда вы можете сразу перейти к следующей группе настроек (кнопка ВВЕРХ) или выйти из настроек (кнопка ВНИЗ).

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

Пройдемся по пунктам меню Настройки.

Группа настроек будильника

Alarm Settings
приветственный экран группы настроек будильника.
HourNow HH:MM:SS / HourNew HH:MM:SS
настройка часов будильника (верхняя строчка - текущее время, нижняя - вновь устанавливаемое).
Min_Now HH:MM:SS / Min_New HH:MM:SS
настройка минут будильника.
Sec_Now HH:MM:SS / Sec_New HH:MM:SS
настройка секунд будильника.
Day_Now DD.MM.YY / Day_New DD.MM.YY
настройка дня будильника (верхняя строчка - текущая дата, нижняя - вновь устанавливаемая).
Mon_Now DD.MM.YY / Mon_New DD.MM.YY
настройка месяца будильника.
YearNow DD.MM.YY / YearNew DD.MM.YY
настройка года будильника.
Week Mode
режим будильника по дням недели. Имеются следующие варианты :
Buzzer Time
продолжительность звонка в секундах. Звонок можно остановить и раньше, нажав кнопку ВНИЗ.
Alarm ON/OFF
включение - выключение будильника. Если будильник включен, то на экране за днем недели появится буква "А".
Buzzer Check
проверка звонка и светодиода. Нажмите кнопку ВВЕРХ для проверки.
Save Alarm Sett.
сохранение настроек будильника в память контроллера. Все настройки будильника хранятся в оперативной памяти, поэтому при обесточке они будут стерты (вернутся к заводским). Чтобы после восстановления питания Arduino не настраивать будильник вновь, сохраните параметры в энергонезависимую память.

Группа настроек времени и даты

Time Settings
приветственный экран группы настроек времени и даты.
HourOld HH:MM:SS / HourNew HH:MM:SS
установка часов (верхняя строчка - текущее время, нижняя - вновь устанавливаемое).
Min_Old HH:MM:SS / Min_New HH:MM:SS
установка минут.
Sec_Old HH:MM:SS / Sec_New HH:MM:SS
установка секунд.
Day_Old DD.MM.YY / Day_New DD.MM.YY
установка дня месяца (верхняя строчка - текущая дата, нижняя - вновь устанавливаемая).
Mon_Old DD.MM.YY / Mon_New DD.MM.YY
установка месяца.
YearOld DD.MM.YY / YearNew DD.MM.YY
установка года.
WeekOld Xxxxxxxx / WeekNew Xxxxxxxx
установка дня недели.
Save Time Setin
сохранение настроек времени и даты в память контроллера, а также перепрошивка модуля часов реального времени DS1302.

Группа настроек термодатчика

Temperature Set.
приветственный экран группы настроек термодатчика. Эти настройки сразу принимаются системой, подтверждение не нужно. Но они хранятся в оперативной памяти, поэтому, чтобы не потерять, сохраните их в энергонезависимую память.
Temp Correction
поправка температуры в ºC. Значение по умолчанию - 0ºC. Нижняя граница -100ºC, верхняя +100ºC. Эта поправка добавляется к замеренной температуре. Если поправка отличается от нуля, то на экране за температурой появится восклицательный знак.
Min_Volt
нижняя граница вольтажа с аналогового порта датчика Pt100, переведенная в цифровой вид. Значение по умолчанию - 39. Нижняя граница 0, верхняя 1023. Эта величина и далее необходимы для калибровки самодельного преобразователя термосопротивления Pt100.
MinPt
соответствующая нижней границе температура в ºC. Значение по умолчанию - 0ºC. Нижняя граница 0ºC, верхняя +1000ºC.
Max_Volt
верхняя граница вольтажа с аналогового порта датчика Pt100, переведенная в цифровой вид. Значение по умолчанию - 546. Нижняя граница 0, верхняя 1023.
MaxPt
соответствующая верхней границе температура в ºC. Значение по умолчанию +100ºC. Нижняя граница 0ºC, верхняя +1000ºC.

Группа настроек сохранение - загрузка

Read/Save/Defual
приветственный экран группы сохранение - загрузка.
Read Settings
чтение настроек из энергонезависимой памяти Arduino. При нажатии кнопки ВВЕРХ настройки из памяти PLC перейдут в оперативную.
Save Settings
запись настроек в энергонезависимую память Arduino. При нажатии кнопки ВВЕРХ текущие параметры запишутся в постоянную память PLC. При перезагрузке контроллера (выключение - включение) именно эти настройки загрузятся в программу. Обратите внимание, при сохранении параметров модуль RTC DS1302 не перепрошивается, время и дата не меняются. В память будут занесены цифры, которые вы подставляли при последней настройки часов и даты. Это сделано для удобства, чтобы заново не вбивать параметры. Если вы хотите установить новые дату и время, зайдите в соответствующий пункт меню настроек.
Load Default
загрузка значений по умолчанию. При нажатии кнопки ВВЕРХ параметры, определенные в начале скетча, загрузятся в оперативную память PLC (в текущие настройки). Эта функция может быть полезна, когда вы запутались в регулировках и хотите все вернуть в исходное положение. Но есть и еще одна причина ее использования. Если вы на одну и ту же плату Arduino постоянно записываете скетчи разных проектов, возможна ситуация, когда параметры одного проекта запишутся в настройки другого. Конечно, это можно исправить, но представьте, что в параметре, где должно быть, например, число 10, стоит 32000. Вручную кнопками ВВЕРХ или ВНИЗ корректировать это очень долго, проще сбросить настройки к заводским, а уже затем их подправить. Здесь также модуль RTC DS1302 не перепрошивается, время и дата не меняются.

Кнопки ВВЕРХ-ВНИЗ

В настройках этими кнопками меняются значения параметров.

В основном экране при нажатии кнопки ВВЕРХ вы увидите настройки будильника, а кнопкой ВНИЗ можно остановить сигнал будильника.

ИНДИКАЦИЯ LCD

Верхняя строчка :

Нижняя строчка :

Индикация LCD

Индикация LCD

ПОДКЛЮЧЕНИЕ

Здесь приведено соединение всех элементов системы управления, Arduino (через шилд), модуля часов и датчика температуры. В виде схемы подключение представлено ниже.

Плата Arduino и Sensor-shield

Часы реального времени RTC DS1302

Схема подключения будильника

Схема подключения будильника

ПЛАТА ДЛЯ СИГНАЛКИ

Для удобства использования сигнального зуммера и светодиода вы можете собрать небольшую плату. Схема монтажа представлена ниже.

Схема пайки сигналки на макетной плате

Схема пайки сигналки на макетной плате

Примечания :

  1. Все подводы и отводы выполнены в трех вариантах : клеммница, штыревой соединитель "папа" и "мама" для проводов Dupont.
  2. Мощность резистора 0,25 ватт.

ЧТО НУЖНО ДЛЯ ПРОЕКТА