Оглавление:

Smart Lock с распознаванием лиц с LTE Pi HAT: 4 шага
Smart Lock с распознаванием лиц с LTE Pi HAT: 4 шага

Видео: Smart Lock с распознаванием лиц с LTE Pi HAT: 4 шага

Видео: Smart Lock с распознаванием лиц с LTE Pi HAT: 4 шага
Видео: Камера-ЛАМПА со слежением и определением человека. 2024, Ноябрь
Anonim
Умный замок с распознаванием лиц с LTE Pi HAT
Умный замок с распознаванием лиц с LTE Pi HAT

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

Шаг 1. Вещи, использованные в этом проекте

Компоненты оборудования

  • Raspberry Pi 3 Модель B
  • Модуль камеры Raspberry Pi V2
  • Роща - реле
  • LTE Cat 1 Pi HAT (Европа)
  • 10,1-дюймовый ЖК-дисплей 1200x1980 HDMI IPS

Программные приложения и онлайн-сервисы

  • WinSCP
  • Блокнот ++

Шаг 2: Подключение оборудования

Подключение оборудования
Подключение оборудования

В этом проекте мы планируем делать снимки с помощью Picamera и распознавать на них лица, а затем выводить результат распознавания на экран. Если лица известны, откройте дверь и отправьте, кто открыл дверь, на указанный номер телефона с помощью SMS.

Итак, вам нужно подключить камеру к интерфейсу камеры Raspberry Pi и установить антенну и Grove - Relay to LTE Pi, а затем подключить HAT к вашему Pi. Экран можно подключить к Raspberry Pi через кабель HDMI, не забудьте подключить питание к экрану и Pi.

Шаг 3: Программирование программного обеспечения

Распознавание лица

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

Шаг 1. Используйте raspi-config для настройки памяти камеры и графического процессора.

sudo raspi-config

Выберите «Параметры интерфейса» - «Камера», чтобы включить камеру, затем выберите «Дополнительные параметры» - «Разделение памяти», чтобы установить память графического процессора, ее следует изменить на 64. После завершения перезагрузите Raspberry Pi.

Шаг 2. Установите необходимые библиотеки.

sudo apt-get update

sudo apt-get upgrade sudo apt-get install build-essential / cmake / gfortran / git / wget / curl / graphicsmagick / libgraphicsmagick1-dev / libatlas-dev / libavcodec-dev / libavformat-dev / libboost-all-dev / libgtk2. 0-dev / libjpeg-dev / liblapack-dev / libswscale-dev / pkg-config / python3-dev / python3-numpy / python3-picamera / python3-pip / zip sudo apt-get clean

Шаг 3. Создайте массив поддержки picamerea.

sudo pip3 install --upgrade picamera [массив]

Шаг 4. Установите dlib и распознавание лиц.

sudo pip3 установить dlib

sudo pip3 установить face_recognition

Шаг 5. Загрузите и запустите пример распознавания лиц.

git clone - single-branch

cd./face_recognition/examples python3 facerec_on_raspberry_pi.py

ВНИМАНИЕ. Если вы получили ошибку ImportError: libatlas.so.3: невозможно открыть файл общих объектов: нет такого файла или каталога, выполните следующую команду, чтобы исправить это.

Реле

Когда распознавание лиц будет готово, мы можем продолжить добавление дополнительных функций. Мы подключили Grove - Relay к LTE Cat 1 Pi HAT, но он использует цифровой порт, а не порт I2C.

Это распиновка для Raspberry Pi 3B, мы можем видеть контакты SDA и SCL, расположенные на контактах 3 и 5 платы.

Изображение
Изображение

Таким образом, мы можем управлять реле, выводя цифровой сигнал на контакт 5. Запустите следующую программу python на своем Raspberry Pi, если ничего не пойдет не так, вы услышите Ti-Ta от реле.

импортировать RPi. GPIO как GPIO

RELAY_PIN = 5 GPIO.setmode (GPIO. BOARD) GPIO.setup (RELAY_PIN, GPIO. OUT) GPIO.output (RELAY_PIN, GPIO. HIGH)

Итак, идея заключается в том, что мы загружаем известные лица из папки, распознаем лица, снятые программой picamera, если лицо находится в папке, управляющее реле для разблокировки двери. Мы можем упаковать их в класс, вот метод load_known_faces () и метод unlock (), готовую программу можно скачать в конце статьи.

def load_known_faces (сам):

known_faces = os.listdir (self._ known_faces_path) для known_face в known_faces: self._ known_faces_name.append (known_face [0: len (known_face) - len ('. jpg')]) known_face_image = face_recognition.load_image_file (self._ known_facespath)) self._ known_faces_encoding.append (face_recognition.face_encodings (known_face_image) [0]) return len (self._ known_faces_encoding) def unlock (self): if self._ matched.count (True)> 0: GPIO.output (self._ relay_pin, GPIO. HIGH) print ('Дверь открыта') time.sleep (5) GPIO.output (self._ relay_pin, GPIO. LOW) self._ reset_recognise_params () return True self._ retry_count + = 1 print ('Попробуйте еще раз… { } '. format (self._ retry_count)) return False

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

sudo pip3 установить matplotlib

Импортируйте их в свой код и измените блокировку if в методе unlock () следующим образом:

img = Image.open ('{} / {}. jpg'.format (self._ known_faces_path, self._ known_faces_name [0]))

plt.imshow (img) plt.ion () GPIO.output (self._ relay_pin, GPIO. HIGH) print ('Дверь открыта') plt.pause (3) plt.close () GPIO.output (self._ relay_pin, GPIO. LOW) self._ reset_recognise_params () return True

Теперь, если лицо распознано, изображение в папке будет отображаться на экране.

Изображение
Изображение

SMS

Иногда мы хотим узнать, кто находится в нашей комнате, и теперь есть место для LTE Cat 1 Pi HAT. Подключите к нему SIM-карту и выполните следующие действия, чтобы проверить, будет ли она работать.

Шаг 1. Включите UART0 в Raspberry Pi

Используйте nano для редактирования config.txt в / boot

судо нано /boot/config.txt

добавьте dtoverlay = pi3-disable-bt в его нижнюю часть и отключите службу hciuart

sudo systemctl отключить hciuart

затем удалите console = serial0, 115200 в cmdline.txt в / boot

судо нано /boot/cmdline.txt

После того, как все будет сделано, вам следует перезагрузить Raspberry Pi.

Шаг 2. Скачайте пример и запустите его.

Откройте терминал на своем Raspberry Pi, введите в него эту команду построчно.

cd ~

git clone https://github.com/Seeed-Studio/ublox_lara_r2_pi_hat.git cd ublox_lara_r2_pi_hat sudo python setup.py установить cd test sudo python test01.py

Если вы видите эти выходы на своем терминале, LTE Cat 1 Pi HAT работает хорошо.

Обнаружен 40-контактный разъем GPIO

Включение CTS0 и RTS0 на GPIO 16 и 17 rts cts при пробуждении… имя модуля: LARA-R211 RSSI: 3

Теперь мы знали, что HAT работает хорошо, как использовать его для отправки SMS? Первое, что вам нужно знать, это то, что Raspberry Pi взаимодействует с HAT через отправку AT-команд через UART. Вы можете отправлять AT-команды в LTE HAT, запустив этот код на Python

из импорта ublox_lara_r2 *

u = Ublox_lara_r2 () u.initialize () u.reset_power () # Закрыть сообщение отладки u.debug = False u.sendAT ('')

AT-команда для отправки SMS выглядит следующим образом

AT + CMGF = 1

AT + CMGS =

Итак, вот метод _send_sms ():

def _send_sms (сам):

if self._ phonenum == None: вернуть False для разблокировки в self._ognize_face_names (): if self._ ublox.sendAT ('AT + CMGF = 1 / r / n'): print (self._ ublox.response) если self. _ublox.sendAT ('AT + CMGS = "{}" / r / n'.format (self._ phonenum)): print (self._ ublox.response) if self._ ublox.sendAT (' {} войдите в комнату. / x1a'.format (unlocker)): print (self._ ublox.response)

ВНИМАНИЕ: библиотека LTE Cat 1 Pi HAT, написанная python2, не очень совместима с python3. Если вы хотите использовать ее с распознаванием лиц, загрузите ее по ссылке в конце этой статьи.

Рекомендуемые: