Система мониторинга посетителей на основе Raspberry Pi и камеры

В данной статье мы рассмотрим создание системы мониторинга посетителей на основе платы Raspberry Pi и специализированной камеры для нее. Мы рассмотрим подключение камеры к Raspberry Pi, которая будет захватывать изображение (делать фотоснимок) всех посетителей, которые будут проходить через ворота/дверь (Gate). Каждый посетитель, подходящий к двери/воротам, должен будет нажать кнопку чтобы открыть их – в это время камерой будет производиться фотографирование посетителя и сохранение этого изображения в память карты вместе с датой и временем прихода посетителя.

Внешний вид проекта системы мониторинга посетителей на основе Raspberry Pi и камеры

Данный проект может найти применение в системах безопасности. Кнопку в данном проекте может нажимать не только посетитель, но и оператор/охранник, осуществляющий допуск лиц на контролируемую территорию. Также данный проект является уроком по подключению камеры к плате Raspberry Pi.

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

  1. Плата Raspberry Pi (купить на AliExpress).
  2. Камера для Raspberry Pi (купить на AliExpress).
  3. ЖК дисплей 16x2 (купить на AliExpress).
  4. Электродвигатель постоянного тока.
  5. Микросхема драйвера двигателей L293D (купить на AliExpress).
  6. Зуммер (Buzzer) (купить на AliExpress).
  7. Светодиод (купить на AliExpress).
  8. Резисторы 1 кОм, 10 кОм (купить на AliExpress).
  9. Потенциометр 10 кОм (купить на AliExpress).
  10. Конденсатор 100 нФ (купить на AliExpress).
  11. Кнопка.
  12. Источник питания.
  13. Макетная плата.
  14. Соединительные провода.

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

Принцип работы нашего проекта достаточно прост. При нажатии кнопки камера используется для получения фотоснимка посетителя – команду на это ей дает плата Raspberry Pi. Фотоснимок (изображение) сохраняется в памяти платы вместе с датой и временем визита посетителя. После этого ворота открываются на некоторое время чтобы впустить посетителя и затем снова закрываются. Зуммер используется для подачи звукового сигнала во время нажатия кнопки, а светодиод для индикации того, что плата Raspberry Pi готова принять нажатие кнопки, то есть система функционирует. Структурная схема работы проекта показана на следующем рисунке.

Структурная схема работы проекта

Фотографии посетителей сохраняются в памяти платы Raspberry Pi в виде изображений, имя файла изображения будет содержать дату и время фотоснимка как показано на рисунке ниже. То есть мы не сохраняем время и дату отдельно – мы сохраняем их в имени файла изображения. Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Внешний вид сохраняемых изображений с камеры

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

Схема системы мониторинга посетителей на Raspberry Pi и камеры представлена на следующем рисунке.

Схема системы мониторинга посетителей на Raspberry Pi и камеры

ЖК дисплей в схеме используется для отображения времени/даты визита и некоторых других сообщений о состоянии системы. ЖК дисплей подключен к плате Raspberry Pi в 4-битном режиме, его контакты RS, EN, D4, D5, D6 и D7 подключены к контактам GPIO 18, 23, 24, 16, 20 и 21 платы. Модуль камеры подключен к соответствующему разъему платы Raspberry Pi. Зуммер подключен к контакту 26 платы, светодиод – к контакту 5 платы 5 через резистор 1 кОм, кнопка - к контакту 19 платы. Электродвигатель постоянного тока, играющий в нашем проекте роль ворот (Gate), подключен к контактам 17 и 27 платы Raspberry Pi через драйвер двигателя L293D.

Для подключения камеры (Pi Camera) вставьте ее ленточный кабель (Ribbon cable) в соответствующий слот для него на плате Raspberry Pi.

Подключение камеры к плате Raspberry Pi Подключение камеры к плате Raspberry Pi крупным планом

Внешний вид собранной конструкции проекта показан на следующем рисунке.

Внешний вид собранной конструкции проекта

Настройка платы Raspberry Pi

Для работы нашего проекта после первоначальной настройки операционной системы Raspberry Pi необходимо в нее файлы библиотеки для работы с камерой (Pi camera library files), это можно сделать с помощью следующих команд:

Внешний вид процесса установки библиотеки для работы с камерой в Raspberry Pi

После этого необходимо войти в меню настроек операционной системы чтобы включить в них использование камеры.

После этого выберите пункт Enable camera (включить использование камеры).

Включение возможности работы с камерой в Raspberry Pi

Далее необходимо перезагрузить Raspberry Pi чтобы изменения вступили в силу.

Объяснение программы для Raspberry Pi

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

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

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

Функция def capture_image() используется для захвата изображения посетителя с временем и датой.

Функция def gate() используется для управления двигателем постоянного тока, который в нашем проекте используется в качестве ворот (Gate).

Также запрограммируем ряд функций для работы с ЖК дисплеем (их коды приведены в конце статьи):

  • def begin() – для инициализации ЖК дисплея;
  • def lcdcmd(ch) – для передачи команд на ЖК дисплей;
  • def lcdwrite(ch) – для передачи данных на ЖК дисплей;
  • def lcdprint(Str) – для передачи строки на ЖК дисплей.

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

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

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

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

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

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

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