Table des matières:

Détecteur Humain Raspberry Pi + Caméra + Flacon : 6 Étapes
Détecteur Humain Raspberry Pi + Caméra + Flacon : 6 Étapes

Vidéo: Détecteur Humain Raspberry Pi + Caméra + Flacon : 6 Étapes

Vidéo: Détecteur Humain Raspberry Pi + Caméra + Flacon : 6 Étapes
Vidéo: Face & Movement Tracking System Using a Raspberry Pi + OpenCV + Pan-Tilt HAT + Python 2024, Juillet
Anonim
Détecteur Humain Raspberry Pi + Caméra + Flacon
Détecteur Humain Raspberry Pi + Caméra + Flacon

Dans ce didacticiel, je vais parcourir les étapes de mon projet IoT Raspberry Pi - Utilisation du capteur de mouvement PIR, du module Raspberry Camera pour créer un appareil IoT de sécurité simple et Accès au journal de détection avec Flask.

Étape 1: Capteur de mouvement PIR

Capteur de mouvement PIR
Capteur de mouvement PIR

PIR signifie « Infrarouge passif » et ce capteur de mouvement capte les mouvements en regardant la vue infrarouge et en captant les changements infrarouges. Par conséquent, avec une feuille et un humain passant le capteur, il ne détecte que l'humain puisque nous, les humains, générons de la chaleur et émettons ainsi des rayons infrarouges. Par conséquent, le capteur de mouvement est un bon choix pour détecter les mouvements humains.

Étape 2: Configuration du capteur de mouvement PIR

Configuration du capteur de mouvement PIR
Configuration du capteur de mouvement PIR

Il y a trois broches pour le capteur de mouvement PIR, l'alimentation, la sortie et la terre. Sous les broches, vous pouvez voir les étiquettes, VCC pour Power, Out pour Output et GND pour Ground. Lorsque le capteur détecte des mouvements, la broche de sortie émet un signal HAUT vers la broche Raspberry Pi avec laquelle vous connectez le capteur. Pour la broche d'alimentation, vous voulez vous assurer qu'elle se connecte à la broche 5V du Raspberry Pi pour l'alimentation. Pour mon projet, j'ai choisi de connecter la broche de sortie avec Pin11 sur Pi.

Après avoir tout connecté, vous pouvez envoyer un SMS à votre capteur en exécutant des scripts comme celui ci-dessous:

importer RPi. GPIO en tant que GPIOimport time GPIO.cleanup() GPIO.setwarnings(False) GPIO.setmode(GPIO. BOARD) GPIO.setup(11, GPIO. IN) #Lire la sortie du capteur de mouvement PIR sur la broche 11 tandis que True: i =GPIO.input(11) if i==0: #Lorsque la sortie du capteur de mouvement est FAIBLE, imprimez "Pas de détection", i time.sleep(0.1) elif i==1: #Lorsque la sortie du capteur de mouvement est ÉLEVÉE, imprimez " Mouvement détecté", i time.sleep(0.1)

Exécutez le script sur votre Pi et placez vos mains ou votre ami devant le capteur pour vérifier si le capteur capte le mouvement.

Étape 3: Module de caméra Raspberry Pi et configuration

Module de caméra Raspberry Pi et configuration
Module de caméra Raspberry Pi et configuration

L'homme émet des rayons infrarouges en raison de la chaleur, de même que les objets avec des températures. Par conséquent, les animaux ou les objets chauds peuvent également déclencher le détecteur de mouvement. Nous avons besoin d'un moyen de vérifier si la détection est valide. Il existe de nombreuses façons de mettre en œuvre, mais dans mon projet, j'ai choisi d'utiliser le module caméra Raspberry Pi pour prendre des photos lorsque le capteur de mouvement capte des mouvements.

Pour utiliser le module de caméra, vous devez d'abord vous assurer que les broches sont branchées dans l'emplacement de la caméra sur Pi. Taper

sudo raspi-config

sur votre Pi pour ouvrir l'interface de configuration et activer la caméra dans les "options d'interfaçage". Après le redémarrage, vous pouvez tester si le Pi est réellement connecté à la caméra en tapant

vcgencmd get_camera

et il vous montrera le statut. La dernière étape consiste à installer le module picamera en tapant

pip installer picamera

Après toutes les configurations, vous pouvez tester votre caméra en exécutant des scripts comme celui ci-dessous:

depuis picamera importer PiCamera

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

L'image sera stockée en tant que 'image.jpg' dans le même répertoire que celui de votre script de caméra. Remarquez que vous voulez vous assurer que 'sleep(2)' est présent et que le nombre est supérieur à 2 afin que la caméra ait suffisamment de temps pour régler les conditions d'éclairage.

Étape 4: Combinez le capteur de mouvement PIR et le module de caméra

L'idée de mon projet est que le capteur de mouvement et la caméra soient orientés dans la même direction. Chaque fois que le capteur de mouvement détecte des mouvements, l'appareil photo prend une photo afin que nous puissions vérifier les causes des mouvements par la suite.

Le script:

importer RPi. GPIO en tant que GPIOfrom datetime importer datetime importer l'heure de picamera importer PiCamera

GPIO.cleanup()

GPIO.setwarnings(False) GPIO.setmode(GPIO. BOARD) GPIO.setup(11, GPIO. IN) #Lire la sortie du message du capteur de mouvement PIR = 'start' counter = 0 log_f = open('static/log.txt', 'w') log_f.close()

caméra = PiCamera()

nom_image = 0

camera.start_preview()

heure.sommeil(2)

tant que vrai:

i=GPIO.input(11) if i==0: #Lorsque la sortie du capteur de mouvement est FAIBLE si compteur > 0: end = str(datetime.now()) log_f = open('static/log.txt', ' a') message = message + '; 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 "Pas d'intrus", i time.sleep(0.1) elif i==1: #Lorsque la sortie du capteur de mouvement est HIGH if counter == 0: current = str(datetime.now()) message = 'Humain détecté:' + 'start at ' + current counter = counter + 1 print "Intruder detecté", i time.sleep(0.1) camera.stop_preview()

Les répertoires pour 'log.txt' et les images sont 'statiques', ce qui est nécessaire pour que Flask fonctionne.

Étape 5: Configuration du flacon

Configuration pour le flacon
Configuration pour le flacon

Flask est un micro framework Web écrit en Python et basé sur la boîte à outils Werkzeug et le moteur de modèles Jinja2. Il est facile à mettre en œuvre et à entretenir. Pour un meilleur tutoriel pour Flask, je recommande ce lien: Flask Mega Tutorial

Le script principal, 'routes.py', de mon projet:

from appfolder import appFlaskfrom flask import render_template, rediriger l'os d'importation

APP_ROOT = os.path.dirname(os.path.abspath(_file_)) # fait référence à application_top

APP_STATIC = os.path.join(APP_ROOT, 'statique')

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

def view(): log_f = open(os.path.join(APP_STATIC, 'log.txt'), 'r') logs = log_f.readlines() final_logs = pour les journaux de connexion: final_logs.append(log. strip()) name = str(len(final_logs)-1)+'.jpg' return render_template('view.html', logs=final_logs, filename=name)

Le fichier HTML 'view.html' se trouve dans la barre du haut (car lorsque je copie les codes HTML ici, il passe en fait au FORMAT HTML…)

Et la structure du projet devrait ressembler à quelque chose ci-dessous (mais bien sûr, il y a plus de fichiers que ceux-ci):

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

Étape 6: Résultat

Résultat
Résultat

Pour cette implémentation, après avoir tout configuré correctement, vous devriez pouvoir accéder à votre Raspberry Pi en tapant son adresse IP sur le navigateur, et le résultat devrait ressembler à l'image de la barre supérieure à cette étape.