Содержание
Узнаем как реализовать на основе 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.
Перед загрузкой кода загрузите библиотеки из приведенных ниже ссылок.
Итоговый результат
На видео ниже вы можете посмотреть итоговый результата этого проекта.
На этом пока всё. Желаем вам новых классных идей и устройств.
В статье рассказано о том, как из ардуины и дисплея 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
Часы будильник на Arduino.
Ссылки на используемые компоненты:
ЖК-дисплей LCD1602 (синий экран) – http://ali.pub/alnru
Модуль расширителя интерфейса (I2C) – http://ali.pub/dwj5n
Часы реального времени Ds3231 – http://ali.pub/1e3pfr
Часы будильник с MP3 плеером на Arduino.
Ссылки на используемые компоненты:
ЖК-дисплей LCD1602 (синий экран) – http://ali.pub/alnru
Модуль расширителя интерфейса (I2C) – http://ali.pub/dwj5n
Часы реального времени Ds3231 – http://ali.pub/1e3pfr
Часы будильник с MP3 плеером на Arduino
Оставьте комментарий:
Навигация по сайту:
Юный Технарь:
Помощь проекту:
Деньги можно перечислить на карту Сбербанка России:
4276 5400 2194 5088
Поиск
Последние статьи
FLProg – Как создать сеть из двух ESP826…
FLProg – Как создать сеть из двух ESP8266.
ESP8266 +FLProg +KAскада – Как создать т…
КаСкада – как одновременно управлять несколькими ESP8266.
Мой канал на YouTube
Подпишитесь!
2015, Arduinoprom.ru – блог Чилингаряна Грачика. Все авторские права на тексты принадлежат ему.
При размещении текстов и видеоматериалов на сторонних ресурсах активная гиперссылка ОБЯЗАТЕЛЬНА.
Все логотипы и товарные знаки, размещенные на сайте, принадлежат только их законным владельцам (правообладателям).