Часы будильник на ардуино

Часы будильник на ардуино

Узнаем как реализовать на основе Arduino будильник с помощью модуля RTC DS3231.

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

Мы будем использовать библиотеку EEPROM для хранения времени будильника, которое мы будем вводить, используя модуль клавиатуры 4X4.

Когда новое введенное время будильника будет соответствовать текущему времени будильника, тогда зуммер начнет подавать звуковой сигнал, пока мы не удержим клавишу "C" на клавиатуре. Клавиша "#" будет использоваться для изменения пароля.

Шаг 1. Требуемые компоненты

Необходимыми компонентами для устройства будильника Arduino являются:

  • Arduino Uno
  • 128X32 Монохромный OLED дисплей
  • Модуль RTC DS3231
  • 4X4 клавиатура
  • 9В аккумулятор или батарея
  • Зуммер
  • Переключатель
  • Соединительные провода

Шаг 2. Схема соединения

Принципиальная схема устройства будильника Arduino достаточно большая. Прежде всего, подключите OLED к Arduino. Соединения для OLED с Arduino следующие:

  • CS-выход OLED на пин 10 Arduino
  • DC-вывод OLED на пин 9 Arduino
  • RST вывод OLED на вывод 8 Arduino
  • D1 или CLK вывод OLED на вывод 11 Arduino
  • D0 или DIN-штырь OLED на вывод 13 Arduino

Затем подключите модуль DS3231 к Arduino. Соединения следующие:

  • Подключите GND DS3231 к GND Arduino.
  • Подключите VCC DS3231 к 5V Arduino.
  • Подключите SDA DS3231 к A4 Arduino.
  • Подключите SCL DS3231 к A5 Arduino.

После этого подключите клавиатуру 4X4 к Arduino. Подключите первые 4 контакта клавиатуры, строка A0, A1, A2, A3 и последние четыре, которые относятся к контактам столбца к 6, 5, 4 и 3.

Подключите положительный контакт зуммера к контакту 7 Arduino и отрицательный сигнал зуммера к GND Arduino.

В конце, подключите положительный провод батареи к одному концу переключателя, а другой конец переключателя — к Vin Arduino.

Затем подключите отрицательный провод батареи к заземлению Arduino.

Шаг 3. Код для Ардуино бдильника

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

Первым делом мы включили библиотеки для клавиатуры, DS3231 RTC и OLED. Библиотека EEPROM, которую мы включили, поможет нам сохранить время будильника. OLED работает с Arduino через связь SPI, поэтому мы включили библиотеку SPI. Аналогично, мы включили библиотеку «Wire» для DS3231, потому что DS3231 работает с Arduino через связь I2C, а библиотека «Wire» предназначена для связи I2C.

В приведенной ниже части кода мы определили контакты для DS3231, зуммера и OLED. Затем мы инициализировали некоторые переменные, которые помогут нам хранить некоторые данные. После этого мы определили контакты для клавиатуры 4X4.

В функции настройки (setup) мы запустили связь «wire» и «rtc». Затем мы объявили пин зуммера в качестве выхода и назвали функцию «welcome», которая напечатает «Добро пожаловать» на OLED.

В функции цикла (loop) мы получаем время и дату из модуля RTC DS3231 и сохраняем их в переменных. Затем мы ищем, нажата ли какая-либо клавиша или нет.

Если нажата клавиша «C», она выключит зуммер и изменит минуты на 60, что остановит будильник от включения на следующий день. Если нажата кнопка «#», она запросит новое время будильника.

Читайте также:  Какая скорость интернета в китае

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

Следующая функция Ардуино будильника сохранит время сигнала, введенное вами в переменную, чтобы мы могли сравнить ее с текущим временем.

Функция ниже отображает текущее время, текущую дату и время сигнала на OLED.

Перед загрузкой кода загрузите библиотеки из приведенных ниже ссылок.

Итоговый результат

На видео ниже вы можете посмотреть итоговый результата этого проекта.

На этом пока всё. Желаем вам новых классных идей и устройств.

Узнаем как реализовать на основе Arduino будильник с помощью модуля RTC DS3231.

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

Мы будем использовать библиотеку EEPROM для хранения времени будильника, которое мы будем вводить, используя модуль клавиатуры 4X4.

Когда новое введенное время будильника будет соответствовать текущему времени будильника, тогда зуммер начнет подавать звуковой сигнал, пока мы не удержим клавишу "C" на клавиатуре. Клавиша "#" будет использоваться для изменения пароля.

Шаг 1. Требуемые компоненты

Необходимыми компонентами для устройства будильника Arduino являются:

  • Arduino Uno
  • 128X32 Монохромный OLED дисплей
  • Модуль RTC DS3231
  • 4X4 клавиатура
  • 9В аккумулятор или батарея
  • Зуммер
  • Переключатель
  • Соединительные провода

Шаг 2. Схема соединения

Принципиальная схема устройства будильника Arduino достаточно большая. Прежде всего, подключите OLED к Arduino. Соединения для OLED с Arduino следующие:

  • CS-выход OLED на пин 10 Arduino
  • DC-вывод OLED на пин 9 Arduino
  • RST вывод OLED на вывод 8 Arduino
  • D1 или CLK вывод OLED на вывод 11 Arduino
  • D0 или DIN-штырь OLED на вывод 13 Arduino

Затем подключите модуль DS3231 к Arduino. Соединения следующие:

  • Подключите GND DS3231 к GND Arduino.
  • Подключите VCC DS3231 к 5V Arduino.
  • Подключите SDA DS3231 к A4 Arduino.
  • Подключите SCL DS3231 к A5 Arduino.

После этого подключите клавиатуру 4X4 к Arduino. Подключите первые 4 контакта клавиатуры, строка A0, A1, A2, A3 и последние четыре, которые относятся к контактам столбца к 6, 5, 4 и 3.

Подключите положительный контакт зуммера к контакту 7 Arduino и отрицательный сигнал зуммера к GND Arduino.

В конце, подключите положительный провод батареи к одному концу переключателя, а другой конец переключателя — к Vin Arduino.

Затем подключите отрицательный провод батареи к заземлению Arduino.

Шаг 3. Код для Ардуино бдильника

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

Первым делом мы включили библиотеки для клавиатуры, DS3231 RTC и OLED. Библиотека EEPROM, которую мы включили, поможет нам сохранить время будильника. OLED работает с Arduino через связь SPI, поэтому мы включили библиотеку SPI. Аналогично, мы включили библиотеку «Wire» для DS3231, потому что DS3231 работает с Arduino через связь I2C, а библиотека «Wire» предназначена для связи I2C.

Читайте также:  Озон промокод за регистрацию

В приведенной ниже части кода мы определили контакты для DS3231, зуммера и OLED. Затем мы инициализировали некоторые переменные, которые помогут нам хранить некоторые данные. После этого мы определили контакты для клавиатуры 4X4.

В функции настройки (setup) мы запустили связь «wire» и «rtc». Затем мы объявили пин зуммера в качестве выхода и назвали функцию «welcome», которая напечатает «Добро пожаловать» на OLED.

В функции цикла (loop) мы получаем время и дату из модуля RTC DS3231 и сохраняем их в переменных. Затем мы ищем, нажата ли какая-либо клавиша или нет.

Если нажата клавиша «C», она выключит зуммер и изменит минуты на 60, что остановит будильник от включения на следующий день. Если нажата кнопка «#», она запросит новое время будильника.

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

Следующая функция Ардуино будильника сохранит время сигнала, введенное вами в переменную, чтобы мы могли сравнить ее с текущим временем.

Функция ниже отображает текущее время, текущую дату и время сигнала на OLED.

Перед загрузкой кода загрузите библиотеки из приведенных ниже ссылок.

Итоговый результат

На видео ниже вы можете посмотреть итоговый результата этого проекта.

На этом пока всё. Желаем вам новых классных идей и устройств.

В предыдущем уроке 18, мы подключили Trema RTC часы реального времени с Trema кнопками и LCD I2C дисплеем к arduino Uno, написали скетч, для установки времени при помощи кнопок.

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

Нам понадобится:

  • Arduino х 1шт.
  • RTC модуль Trema на базе чипа DS1307 х 1шт.
  • LCD дисплей LCD1602 IIC/I2C(синий) или LCD1602 IIC/I2C(зелёный) х 1шт.
  • Trema Shield х 1шт.
  • Trema-модуль i2C Hub х 1шт.
  • Trema-модуль кнопка c проводами х 3шт.
  • Шлейф «мама-мама»для шины I2С х 2шт.
  • Trema-модуль зуммер х 1шт.
  • Trema-модуль светодиод х 1шт. (белый, синий, красный, оранжевый или зелёный)

Для реализации проекта нам необходимо установить библиотеки:

  • Библиотека iarduino_RTC (для подключения RTC часов реального времени DS1302, DS1307, DS3231)
  • Библиотека LiquidCrystal_I2C_V112 (для подключения дисплеев LCD1602 по шине I2C)

О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki — Установка библиотек в Arduino IDE .

Видео:

Схема подключения:

Подключение модулей RTC и LCD, данного урока, осуществляется к аппаратным выводам SDA, и SCL.

RTC модуль Trema на базе чипа DS1307 / LCD дисплей на базе чипа LCD1602 Arduino Uno
GND GND
Vcc +5V
SDA (Serial DAta) A4
SCL (Serial CLock) A5

Подключение кнопок: кнопка «SET» к выводу 2, кнопка «UP» к выводу 3 и копка «DOWN» к выводу 4.

Читайте также:  0X80240438 магазин windows 10

Зуммер подключаем к выводу 5, а светодиод к выводу 13 (дублируя встроенный в arduino).

Алгоритм работы кнопок следующий:

  • В режиме вывода даты/времени/будильника (обычный режим):
  • Кратковременное нажатие на кнопку SET переключает режимы вывода: даты/времени/будильника
  • Удержание кнопки SET переводит часы в режим установки даты/времени/будильника (зависит от того, каким был режим вывода)
  • Кнопки UP и DOWN, в режиме вывода будильника, активируют/деактивируют будильник.
    Если будильник активен, то в правом верхнем углу экрана появляется значок будильника.
  • В режиме установки даты/времени/будильника:
    • Кратковременное нажатие на кнопку SET — переход между устанавливаемыми параметрами (сек, мин, час, дни, мес, год, д.н.)
    • Удержание кнопки SET выводит часы из режима установки
    • Каждое нажатие на кнопку UP увеличивает значение устанавливаемого параметра даты или времени
    • Каждое нажатие на кнопку DOWN уменьшает значение устанавливаемого параметра даты или времени
    • Во время работы сигнализации будильника:
      • Удержание любой кнопки в течении 1 секунды, отключает сигнализацию (без выполнения их действий, в любом режиме)
      • Код программы:

        Работа кнопок, вывод и установка времени, описывались в уроке 18, в этом уроке рассмотрим работу будильника:

        В начале кода добавляем две константы: PIN_alarm_TONE и PIN_alarm_LED, указывающие номера выводов зуммера и светодиода.
        А также добавляем четыре переменные: VAR_alarm_MIN , VAR_alarm_HOUR , VAR_alarm_FLAG1 и VAR_alarm_FLAG2 .

        • VAR_alarm_MIN — переменная в которой хранится значение минут, при котором сработает будильник (по умолчанию 0 минут)
        • VAR_alarm_HOUR — переменная в которой хранится значение часов, при котором сработает будильник (по умолчанию 0 часов)
        • VAR_alarm_FLAG1 — флаг разрешения работы будильника, false — не активен, true — активен (по умолчанию true — активен)
        • VAR_alarm_FLAG2 — флаг указывающий на то, что будильник сработал "сигнализация" (по умолчанию false — не сработал)

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

        В функции loop, после вывода информации на дисплей, добавляем проверку: не пора ли включить будильник?

        • если будильник включён (установлен флаг VAR_alarm_FLAG1)
        • если в текущем времени 0 секунд (time.seconds==00)
        • если количество минут текущего времени (time.minutes) равно количеству минут установленных в будильнике (VAR_alarm_MIN)
        • если количество часов текущего времени (time.Hours) равно количеству часов установленных в будильнике (VAR_alarm_HOUR)
          то устанавливаем флаг VAR_alarm_FLAG2 (указывающий на то, что будильник сработал)
        • если установлен флаг VAR_alarm_FLAG2, то запускаем действия будильника (действия описаны в функции Func_alarm_action)
          Так как проверка будильника и запуск функции Func_alarm_action() находится внутри условия if(millis()%1000==0)<. >, то действия будильника будут выполняться один раз в секунду.

        Теперь всё готово для создания полного кода:

        Разберемся в коде действий будильника:

        Действия будильника описаны в функции Func_alarm_action().

        В этой функции мы включаем светодиод, далее подаём три коротких звуковых сигнала (с частотой 2000Гц, длительностью и паузой 100мс), после чего выключаем светодиод.

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

        Ссылка на основную публикацию
        Adblock detector