Съдържание:

Човешки детектор Raspberry Pi + камера + колба: 6 стъпки
Човешки детектор Raspberry Pi + камера + колба: 6 стъпки

Видео: Човешки детектор Raspberry Pi + камера + колба: 6 стъпки

Видео: Човешки детектор Raspberry Pi + камера + колба: 6 стъпки
Видео: Detecting human in depth image using Mask R-CNN 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, с който свържете сензора. За Power pin искате да се уверите, че той се свързва към 5V щифта на Raspberry Pi за захранване. За моя проект избирам да свържа изходния щифт с Pin11 на Pi.

След като свържете всичко, можете да изпратите текстови съобщения на сензора си, като изпълните скриптове като този по -долу:

импортиране на RPi. GPIO като GPIOимпортиране на време GPIO.cleanup () GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Прочетете изхода от PIR сензор за движение на Pin 11, докато е True: i = GPIO.input (11) if i == 0: #Когато изходът от сензора за движение е НИЗКИ печат "Няма откриване", i time.sleep (0.1) elif i == 1: #Когато изходът от датчика за движение е ВИСОК отпечатване " Открито движение ", 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 инсталирайте пикамера

След всички настройки можете да тествате камерата си, като стартирате скриптове като този по -долу:

от пикамера внос PiCamera

от времето импортирайте спяща камера = PiCamera () camera.start_preview () sleep (2) camera.capture ('image.jpg') camera.stop_preview ()

Картината ще се съхранява като 'image.jpg' в директорията като същата като тази на скрипта на вашата камера. Забележете, че искате да сте сигурни, че „сън (2)“е налице и броят е по -голям от 2, така че камерата да има достатъчно време да регулира светлинното състояние.

Стъпка 4: Комбинирайте PIR сензор за движение и модул за камера

Идеята на моя проект е, че сензорът за движение и камерата ще бъдат обърнати в една и съща посока. Всеки път, когато сензорът за движение улавя движения, камерата ще направи снимка, за да можем да проверим какво причинява движенията след това.

Скриптът:

импортиране на RPi. GPIO като GPIO от дата -час импортиране на дата -час на импортиране от пикамера импортиране на PiCamera

GPIO.cleanup ()

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

камера = PiCamera ()

pic_name = 0

camera.start_preview ()

time.sleep (2)

докато е вярно:

i = GPIO.input (11) if i == 0: #Когато изходът от датчика за движение е LOW, ако брояч> 0: end = str (datetime.now ()) log_f = open ('static/log.txt', ' a ') съобщение = съобщение +'; край в ' + край +' / n 'печат (съобщение) log_f.write (съобщение) log_f.close () final =' static/' + str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (окончателен) брояч = 0 отпечатайте "Няма натрапници", i time.sleep (0.1) elif i == 1: #Когато изходът от датчика за движение е ВИСОК, ако брояч == 0: текущ = str (datetime.now ()) съобщение = 'Открит човек:' + 'започване от' + текущ брояч = брояч + 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', на моя проект:

от appfolder импортиране appFlaskот колба импортиране render_template, пренасочване импортиране os

APP_ROOT = os.path.dirname (os.path.abspath (_ файл_)) # се отнася до 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 шаблони / view.html static / log.txt 0-j.webp

Стъпка 6: Резултат

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

За тази реализация, след като всичко е настроено правилно, трябва да имате достъп до вашия Raspberry Pi, като въведете неговия IP адрес в браузъра и резултатът трябва да изглежда като картина в горната лента на тази стъпка.