Будильник на Raspberry Pi и модуле часов реального времени DS1307

В данной статье мы рассмотрим подключение модуля часов реального времени (Real Time Clock Module, RTC) DS1307 к плате Raspberry Pi и создание на их основе будильника. Хотя плата Raspberry Pi имеет встроенные часы и можно было бы создать будильник на их основе, но без подключения к сети Интернет внутренние часы платы сбрасываются после каждой перезагрузки системы, поэтому для создания будильника мы будем использовать внешний модуль учета времени – модуль DS1307. Данный модуль содержит в своем составе батарейку, поэтому он способен хранить точное время даже при отключении питания от схемы. Ранее на нашем сайте мы рассматривали создание подобного будильника на основе платы Arduino и на основе микроконтроллера AVR.

Внешний вид будильника на Raspberry Pi и модуле часов реального времени DS1307

В данном проекте мы также будем использовать ЖК дисплей 16x2 для отображения текущего времени, времени срабатывания будильника и статуса будильника (ON/OFF). После запуска программы на Raspberry Pi мы можем отключить ее от монитора и управлять работой будильника (устанавливать время его срабатывания) с помощью ЖК дисплея 16x2 и пяти кнопок.

Распиновка контактов ввода/вывода (GPIO) платы Raspberry Pi

Каждый из 17 универсальных контактов ввода/вывода (GPIO) платы Raspberry Pi может выдерживать ток до 15mA. А суммарный ток от всех контактов ввода/вывода не должен превышать 50mA – таким образом, в среднем на каждый контакт будет приходиться ток примерно 3mA. Поэтому дважды проверьте соединения в схеме прежде чем подавать питание на плату Raspberry Pi. Более подробно о контактах ввода/вывода и подключении кнопки к плате Raspberry Pi вы можете прочитать в следующей статье.

Необходимые компоненты

  1. Плата Raspberry Pi (купить на AliExpress).
  2. ЖК дисплей 16x2 (купить на AliExpress).
  3. Резистор 1 кОм – 6 шт. (купить на AliExpress).
  4. Кнопка – 5 шт.
  5. Конденсатор – 1000 мкФ (купить на AliExpress).
  6. Модуль часов реального времени DS1307 (купить на AliExpress).
  7. Транзистор 2N2222 (купить на AliExpress).
  8. Зуммер (Buzzer) (купить на AliExpress).
  9. Источник питания.
  10. Макетная плата.
  11. Соединительные провода.

Настройки платы Raspberry Pi для проекта будильника

Прежде чем приступать к написанию программы для платы Raspberry Pi необходимо произвести в ней некоторые настройки и установить библиотеку для работы с модулем часов реального времени. Для этого выполните следующую последовательность шагов.

Шаг 1. Зайдите в меню настроек платы Raspberry Pi и включите в них работу с протоколом I2C как показано на следующем рисунке.

Включение работы с протоколом I2C в Raspberry Pi

Шаг 2. Создайте новую папку на рабочем столе платы Raspberry Pi и назовите ее “Alarm Clock”.

Шаг 3. Скачайте библиотеку для работы с модулем часов реального времени по следующей ссылке:

https://codeload.github.com/switchdoclabs/RTC_SDL_DS1307/zip/master

Шаг 4. Распакуйте архив со скачанной библиотекой в созданный ранее каталог на рабочем столе (“Alarm Clock”).

Шаг 5. Откройте окно терминала в Raspberry Pi и введите в нем следующую команду:

Эта команда устанавливает инструменты протокола I2C, необходимые для работы с RTC (реального времени) модулем. После этого перезагрузите плату Raspberry Pi с помощью команды ‘sudo reboot’.

Шаг 6. Теперь нам нужно проверить адрес I2C RTC модуля. Перед этим подключите модуль RTC в схему, показанную на рисунке ниже. Затем введите в окне терминала команду:

Шаг 7. Если приведенная команда выполнится успешно, то на экране монитора вы увидите следующую картину:

Получение адреса I2C 0x68 для RTC модуля

Шаг 8. Если все работает нормально, то вы увидите адрес I2C 0x68 для RTC модуля, запишите это значение.

На этом настройка платы Raspberry Pi для данного проекта будет закончена.

Схема проекта

Схема будильника на Raspberry Pi и RTC модуле DS1307 представлена на следующем рисунке.

Схема будильника на Raspberry Pi и RTC модуле DS1307Соединения между платой Raspberry Pi и ЖК дисплеем показаны в следующей таблице.

Соединения между платой Raspberry Pi и ЖК дисплеем

Соединения между платой Raspberry Pi и пятью кнопками показаны в следующей таблице.

Соединения между платой Raspberry Pi и пятью кнопками

Объяснение работы проекта

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

В программе на Python мы будем считывать значение точного времени с RTC модуля DS1307 и показывать его на экране ЖК дисплея 16x2. На второй строке ЖК дисплея 16x2 мы будем отображать время срабатывания будильника и его статус (ON/ OFF – включен/выключен). Управлять работой будильника мы будем с помощью 5 кнопок, присутствующих в схеме. 2 кнопки будут использоваться для инкрементирования/декрементирования значения часов будильника, 2 кнопки – для инкрементирования/декрементирования значения минут будильника и 1 кнопка для включения/выключения будильника. Более подробно все эти процессы вы можете посмотреть на видео, приведенном в конце статьи.

Программа на Python будет непрерывно сравнивать текущее время с установленным временем будильника и при их совпадении она будет включать зуммер, подключенный к контакту GPIO 22 платы Raspberry Pi через NPN транзистор 2N2222.

Исходный код программы на Python

Видео, демонстрирующее работу будильника

(Проголосуй первым!)
Загрузка...
121 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *