Оглавление:

Детектор людей Raspberry Pi + камера + колба: 6 шагов
Детектор людей Raspberry Pi + камера + колба: 6 шагов

Видео: Детектор людей Raspberry Pi + камера + колба: 6 шагов

Видео: Детектор людей Raspberry Pi + камера + колба: 6 шагов
Видео: Камера на VMX Raspberry Pi . Получение изображения с камеры 2024, Июль
Anonim
Детектор людей Raspberry Pi + камера + колба
Детектор людей Raspberry Pi + камера + колба

В этом руководстве я расскажу о шагах своего проекта Raspberry Pi IoT - Использование датчика движения PIR, модуля Raspberry Camera для создания простого устройства безопасности IoT и доступа к журналу обнаружения с помощью Flask.

Шаг 1: Датчик движения PIR

Датчик движения PIR
Датчик движения PIR

PIR означает «пассивное инфракрасное излучение», и этот датчик движения улавливает движения, наблюдая в инфракрасном свете и регистрируя изменения в инфракрасном свете. Следовательно, когда лист и человек проходят мимо датчика, он обнаруживает только человека, поскольку мы, люди, выделяем тепло и, таким образом, излучаем инфракрасные лучи. Следовательно, датчик движения - хороший выбор для обнаружения движений человека.

Шаг 2: Настройка датчика движения PIR

Настройка датчика движения PIR
Настройка датчика движения PIR

Есть три контакта для датчика движения PIR: питания, выхода и заземления. Под контактами вы можете увидеть метки: VCC для питания, Out для выхода и GND для земли. Когда датчик обнаруживает движения, выходной вывод будет выводить ВЫСОКИЙ сигнал на вывод Raspberry Pi, к которому вы подключаете датчик. Для вывода питания убедитесь, что он подключается к выводу 5 В на Raspberry Pi для подачи питания. В своем проекте я решил соединить выходной контакт с контактом 11 на Pi.

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

import RPi. GPIO as GPIOimport time GPIO.cleanup () GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) # Прочитать выходной сигнал датчика движения PIR на контакте 11, пока True: i = GPIO.input (11) if i == 0: # Когда выходной сигнал датчика движения НИЗКИЙ, напечатайте «Нет обнаружения», i time.sleep (0.1) elif i == 1: # Когда выходной сигнал датчика движения ВЫСОКИЙ print " Обнаружено движение ", i time.sleep (0,1)

Запустите сценарий на своем Pi и поместите руки или друга перед датчиком, чтобы проверить, улавливает ли датчик движение.

Шаг 3. Модуль камеры Raspberry Pi и его настройка

Модуль камеры Raspberry Pi и настройка
Модуль камеры Raspberry Pi и настройка

Человек излучает инфракрасные лучи из-за тепла, как и объекты с температурой. Следовательно, животные или горячие предметы также могут срабатывать датчик движения. Нам нужен способ проверить, действительно ли обнаружение. Есть много способов реализовать, но в моем проекте я решил использовать модуль камеры Raspberry Pi, чтобы делать снимки, когда датчик движения улавливает движения.

Чтобы использовать модуль камеры, вы сначала должны убедиться, что контакты вставлены в слот камеры на Pi. Тип

sudo raspi-config

на вашем Pi, чтобы открыть интерфейс конфигурации, и включить камеру в «опциях интерфейса». После перезагрузки вы можете проверить, действительно ли Pi подключен к камере, набрав

vcgencmd get_camera

и он покажет вам статус. Последний шаг - установить модуль picamera, набрав

pip install picamera

После всех настроек вы можете протестировать свою камеру, запустив скрипты, подобные приведенному ниже:

из Picamera импорт PiCamera

из time import sleep camera = PiCamera () camera.start_preview () sleep (2) camera.capture ('image.jpg') camera.stop_preview ()

Картинка будет сохранена как image-j.webp

Шаг 4: объедините датчик движения PIR и модуль камеры

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

Сценарий:

импортировать RPi. GPIO как GPIOfrom datetime import datetime import time from picamera import PiCamera

GPIO.cleanup ()

GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) # Прочитать вывод датчика движения PIR message = 'start' counter = 0 log_f = open ('static / log.txt', 'w') log_f.close ()

камера = PiCamera ()

pic_name = 0

camera.start_preview ()

время сна (2)

в то время как True:

i = GPIO.input (11) if i == 0: # Когда выходной сигнал датчика движения НИЗКИЙ, если counter> 0: end = str (datetime.now ()) log_f = open ('static / log.txt', ' а ') сообщение = сообщение +'; end at '+ end +' / n 'print (message) log_f.write (message) log_f.close () final =' static / '+ str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (final) counter = 0 print "No intruders", i time.sleep (0.1) elif i == 1: # Когда выходной сигнал датчика движения ВЫСОКИЙ if counter == 0: current = str (datetime.now ()) message = «Обнаружен человек:» + «начать с» + текущий счетчик = счетчик + 1 печать «Обнаружен злоумышленник», i time.sleep (0.1) camera.stop_preview ()

Каталоги для log.txt и изображений являются статическими, что необходимо для работы Flask.

Шаг 5: настройка Flask

Настройка для Flask
Настройка для Flask

Flask - это микро-веб-фреймворк, написанный на Python и основанный на наборе инструментов Werkzeug и движке шаблонов Jinja2. Легко внедрять и поддерживать. Для лучшего руководства по Flask я рекомендую эту ссылку: Flask Mega Tutorial.

Главный скрипт моего проекта routes.py:

from appfolder import appFlaskfrom flask import render_template, перенаправить import os

APP_ROOT = os.path.dirname (os.path.abspath (_ file_)) # относится к application_top

APP_STATIC = os.path.join (APP_ROOT, 'статический')

@ appFlask.route ('/', methods = ['GET', 'POST'])

def view (): log_f = open (os.path.join (APP_STATIC, 'log.txt'), 'r') logs = log_f.readlines () final_logs = для входа в журналы: final_logs.append (log. strip ()) name = str (len (final_logs) -1) + '. jpg' return render_template ('view.html', logs = final_logs, filename = name)

HTML-файл view.html находится на верхней панели (потому что, когда я копирую здесь HTML-коды, он фактически превращается в HTML FORMAT…)

И структура проекта должна выглядеть примерно так (но, конечно, файлов больше, чем этих):

iotproject / appfolder / routes.py templates / view.html static / log.txt 0-j.webp

Шаг 6: Результат

Результат
Результат

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