
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05

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

PIR означает «пассивное инфракрасное излучение», и этот датчик движения улавливает движения, наблюдая в инфракрасном свете и регистрируя изменения в инфракрасном свете. Следовательно, когда лист и человек проходят мимо датчика, он обнаруживает только человека, поскольку мы, люди, выделяем тепло и, таким образом, излучаем инфракрасные лучи. Следовательно, датчик движения - хороший выбор для обнаружения движений человека.
Шаг 2: Настройка датчика движения 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, чтобы делать снимки, когда датчик движения улавливает движения.
Чтобы использовать модуль камеры, вы сначала должны убедиться, что контакты вставлены в слот камеры на 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 - это микро-веб-фреймворк, написанный на 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-адрес в браузере, и результат должен выглядеть как изображение на верхней панели на этом этапе.