Table des matières:

Caméra de détection de mouvement Raspberry Pi 3 avec flux en direct : 6 étapes
Caméra de détection de mouvement Raspberry Pi 3 avec flux en direct : 6 étapes

Vidéo: Caméra de détection de mouvement Raspberry Pi 3 avec flux en direct : 6 étapes

Vidéo: Caméra de détection de mouvement Raspberry Pi 3 avec flux en direct : 6 étapes
Vidéo: Caméra sans fil WIFI à 5€ incroyable ! DIY Vidéosurveillance Raspberry Pi [Chmaude77 - EP03] 2024, Novembre
Anonim
Caméra de détection de mouvement Raspberry Pi 3 avec flux en direct
Caméra de détection de mouvement Raspberry Pi 3 avec flux en direct

introduction

Dans ce projet, vous apprendrez à construire une caméra de détection de mouvement que vous pourrez utiliser comme piège photographique, moniteur pour animaux de compagnie/bébé, caméra de sécurité et bien plus encore.

Ce Projet est organisé en plusieurs étapes:

  • introduction
  • Configurer votre Pi
  • SSH dans votre Pi
  • Envoi par e-mail de votre adresse IP au démarrage
  • Installation et configuration de Motion
  • Envoi par e-mail de vidéos à partir de Motion lors de la détection
  • Dépannage et sources

Ce dont vous aurez besoin:

  • Un modèle Raspberry Pi 3 b ~~$35
  • Carte Micro SD de 8 Go ~~$10
  • Webcam USB ~~$20 (ce projet a utilisé une webcam Logitech HD c270)
  • câble micro-usb ~~$5
  • Soit:
  • batterie rechargeable de 5 volts (batterie de secours du téléphone), cela rend votre projet sans fil ~~ 20 $
  • ou
  • adaptateur mural usb ~~$5
  • Une connexion Wi-Fi

Ce à quoi vous aurez besoin d'accéder pour la configuration:

  • Un moniteur
  • Une souris et un clavier
  • Un ordinateur avec un emplacement pour carte SD
  • Un convertisseur de carte Micro SD vers carte SD (doit être fourni avec votre carte micro SD)

Étape 1: Configuration de votre Pi

Configuration de votre Pi
Configuration de votre Pi

Maintenant, configurons votre Pi

Pour commencer, assurez-vous d'avoir tous les éléments requis de la dernière étape. Ensuite, suivez les étapes sur le site Web de Raspberry Pi pour installer Raspbian Jessie sur votre carte Microsd, que vous trouverez ici.

Une fois que vous avez installé Raspbian sur votre Pi, il est temps de configurer certaines fonctionnalités de base.

Wifi

La première étape pour tirer le meilleur parti de votre Pi consiste à le connecter à Internet. Vous avez peut-être déjà terminé cette étape en localisant le symbole WiFi dans le coin supérieur droit de l'écran principal de votre Pi et en vous y connectant, ou en faisant la même chose avant d'installer Raspbian à la dernière étape. Si vous ne parvenez pas à vous connecter à votre réseau WiFi à partir de l'interface de bureau de votre Pi, vous pouvez suivre les instructions ici pour configurer le WiFi via la ligne de commande.

SSH

Un outil très pratique à votre disposition lorsque vous utilisez votre Pi est la possibilité d'émettre des commandes à votre Pi dans ce qu'on appelle une configuration sans tête. En utilisant un Secure SHell ou SSH, vous pouvez contrôler votre Pi à distance depuis un ordinateur. Avec cette méthode, tout ce dont vous aurez besoin pour éditer votre Pi est une source d'alimentation pour le garder allumé, plus de moniteur et de clavier !

Étape 2: SSH dans votre PI

SSH dans votre PI
SSH dans votre PI
SSH dans votre PI
SSH dans votre PI

SSH dans votre Raspberry Pi est facile et très utile, car le processus vous permet d'émettre des commandes vers votre Pi depuis n'importe quel ordinateur avec rien de plus qu'une connexion WiFi.

Pour SSH dans votre Pi, vous devez suivre ces 3 étapes simples.

Tout d'abord, vous devez activer SSH sur votre Pi. Pour ce faire, ouvrez une fenêtre de commande dans votre Pi et tapez:

sudo raspi-config

Cette commande permet d'entrer dans un menu de configuration. à partir de là, vous voudrez utiliser les touches fléchées, tabulation et entrée pour accéder d'abord aux options d'interfaçage, puis pour activer SSH, ainsi que la caméra, puis quitter et redémarrer le pi.

Ensuite, vous devrez trouver l'adresse IP de votre Pi. Dans un terminal de commande, tapez:

sudo ifconfig

Et votre adresse IP doit être dans la section wlan0 qui apparaît, juste sous Link encap: ethernet. Dans l'image de démonstration ci-dessus, l'adresse IP est 192.168.1.10.

Enfin, vous devrez soit ouvrir l'application de terminal intégrée sur un mac, soit rechercher et suivre les instructions d'une application ssh tierce pour Windows. Dans l'application Terminal, saisissez:

ssh pi@VOTRE ADRESSE IP

Si vous n'avez pas modifié le mot de passe dans Raspi-config, votre mot de passe à saisir lorsque vous y êtes invité sera le mot de passe par défaut: framboise.

À partir de là, vous devriez être prêt à partir !

Étape 3: Envoyez votre adresse IP par e-mail au démarrage

Envoyez votre adresse IP par e-mail au démarrage
Envoyez votre adresse IP par e-mail au démarrage

Dans cette étape, nous allons nous concentrer sur la façon d'accéder à votre Raspberry Pi, quel que soit le réseau sur lequel vous vous trouvez. Selon le réseau, l'adresse IP du Pi change. Et si vous n'avez pas de configuration de moniteur, vous devrez vous connecter au Pi pour déclencher le protocole de détection de mouvement, modifier les préférences de mouvement ou accéder à tout autre élément de l'appareil. Pour résoudre ce problème, nous allons écrire un script python qui nous envoie par e-mail l'adresse IP actuelle du Pi au démarrage. Le script python est le suivant et a été stocké dans un répertoire marqué "background".

#start dans le répertoire personnel

disque ~

#créer un dossier d'arrière-plan

fond mkdir

#créer un script python

sudo nano emailip.py

#écrire dans emailip.py

socket d'importation

s = socket.socket(socket. AF_INET, socket. SOCK_DGRAM)

s.connect(("8.8.8.8", 80))

print(s.getsockname()[0])x = s.getsockname()[0]s.close()

importer smtplib

depuis email. MIMEMultipart import MIMEMultipart

depuis email. MIMEText importer MIMEText

fromaddr = "VOTRE ADRESSE"

toaddr = "ADRESSE DE RECEPTION"

msg = MIMEMultipart()

msg['From'] = fromaddr

msg['À'] = toaddr

msg['Sujet'] = "Adresse IP"

body = xmsg.attach(MIMEText(body, 'plain'))

serveur = smtplib. SMTP('smtp.gmail.com', 587)

serveur.starttls()

server.login(fromaddr, "VOTRE MOT DE PASSE")

texte = msg.as_string()

server.sendmail(fromaddr, toaddr, text)

serveur.quit()

#puis cela le fait au redémarrage

sudo nano /etc/rc.local

#entrer dans /etc/rc.local

tandis que ! /sbin/ifconfig wlan0 | grep -q 'inet addr:[0-9]';

dort 3

terminé

_IP=$(nom d'hôte -I) || vrai

if ["$_IP"]; alors

printf "Mon adresse IP est %s\n" "$_IP"

python /home/pi/Background/emailip.py &

Fi

sortie 0

#et tu as fini

Étape 4: Installation et configuration de Motion

Installation et configuration de Motion
Installation et configuration de Motion

#mettre à jour pi

sudo apt-get mise à jour

sudo apt-get mise à niveau

#Télécharger

sudo apt-get install motion

#modifiez maintenant ce fichier avec les modifications suivantes

sudo nano /etc/motion/motion.conf

#pour définir une norme pour ce didacticiel, modifiez

#################

démon sur

stream_localhost désactivé

webcontrol_localhost désactivé

ffmpeg_output_movies sur

rép_cible /var/lib/motion

##################

#options de streaming du navigateur Web local

##################

stream_maxrate 100 #Cela permettra le streaming en temps réel mais nécessite plus de bande passante et de ressources

framerate 60 #Cela permettra de capturer 60 images par seconde #plus cela est élevé, plus le traitement vidéo est lent

width 640 #Cela change la largeur de l'image affichée

hauteur 480 #Cela change la hauteur de l'image affichée

##################

#envoi par e-mail des paramètres vidéo dans …/motion.conf

##################

#supprimer le "; " devant la ligne, le point-virgule commente la ligne

on_event_start python /home/pi/background/motionalert.py %f

on_movie_end python /home/pi/background/motionvid.py %f

##################

#astectique

##################

#choix décrits dans le dossier

output_pictures locate_motion_style

##################

#puis changer

sudo nano /etc/default/motion

#dire

start_motion_daemon=oui

#Enfin, démarrez le B****

démarrage du mouvement du service sudo

#vous pouvez changer la commande pour "arrêter" ou "redémarrer"

Étape 5: Envoi par e-mail de vidéos à partir de Motion lors de la détection

Envoi par e-mail de vidéos à partir du mouvement lors de la détection
Envoi par e-mail de vidéos à partir du mouvement lors de la détection

E-mail lorsqu'un mouvement est détecté:

#commencer à la maison

dircd ~

#créer un script python d'alerte de mouvement

sudo nano /home/pi/background/motionalert.py

#écrivez

importer smtplib

à partir de datetime importer datetime

depuis email. MIMEMultipart import MIMEMultipart

depuis email. MIMEText importer MIMEText

fromaddr = "VOTRE ADRESSE"

toaddr = "ADRESSE DE RECEPTION"

msg = MIMEMultipart()

msg['From'] = fromaddr

msg['À'] = toaddr

msg['Subject'] = "Mouvement détecté"

body = 'Un mouvement a été détecté.\nHeure: %s' % str(datetime.now())

msg.attach(MIMEText(body, 'plain'))

serveur = smtplib. SMTP('smtp.gmail.com', 587)

serveur.starttls()

server.login(fromaddr, "VOTRE MOT DE PASSE")

texte = msg.as_string()

server.sendmail(fromaddr, toaddr, text)

serveur.quit()

Envoyer la vidéo du mouvement par e-mail lorsque la vidéo est enregistrée:

#commencer à homedircd ~

#create motion video python scriptsudo nano /home/pi/background/motionvid.py

importer smtplib

depuis email. MIMEMultipart import MIMEMultipart

depuis email. MIMEText importer MIMEText

depuis email. MIMEBase importer MIMEBase

à partir d'encodeurs d'importation d'e-mails

fromaddr = "VOTRE E-MAIL"

toaddr = "ADRESSE E-MAIL QUE VOUS ENVOYEZ"

msg = MIMEMultipart()

msg['From'] = fromaddr

msg['À'] = toaddr

msg['Subject'] = "Motion Cam activé"

body = "Vidéo de mouvement détecté"

msg.attach(MIMEText(body, 'plain'))

importer le système d'exploitation

rootpath = '/var/lib/motion'

filelist = [os.path.join(rootpath, f) pour f dans os.listdir(rootpath)]

filelist = [f pour f dans filelist if os.path.isfile(f)]

le plus récent = max (liste de fichiers, clé = lambda x: os.stat(x).st_mtime)

nom de fichier = le plus récent

importer le système d'exploitation

rootpath = '/var/lib/motion'

filelist = [os.path.join(rootpath, f) pour f dans os.listdir(rootpath)]

filelist = [f pour f dans filelist if os.path.isfile(f)]

le plus récent = max (liste de fichiers, clé = lambda x: os.stat(x).st_mtime)

pièce jointe = open(le plus récent, "rb")

part = MIMEBase('application', 'octet-stream')

part.set_payload((pièce jointe).read())

encoders.encode_base64(partie)

part.add_header('Content-Disposition', "attachment; filename= %s" % filename)

msg.attach(partie)

serveur = smtplib. SMTP('smtp.gmail.com', 587)

serveur.starttls()

server.login(fromaddr, "VOTRE MOT DE PASSE")

texte = msg.as_string()

server.sendmail(fromaddr, toaddr, text)

serveur.quit()

Étape 6: Dépannage et sources

Dépannage et sources
Dépannage et sources

Dépannage:

Parce que ce projet comporte plusieurs étapes, il y a plusieurs points où les choses peuvent mal tourner. Vous trouverez ci-dessous quelques-unes des erreurs possibles qui pourraient survenir et comment les corriger.

  • Lors de la configuration de votre pi pour vous envoyer par e-mail son adresse IP actuelle, il est crucial de modifier le fichier rc.local comme indiqué précédemment car cela permet un léger délai avant que le programme ne s'active après le redémarrage. Sinon, le pi ne sera pas encore connecté au wifi et l'e-mail ne sera pas envoyé.
  • Lors de l'édition du fichier motion.conf, assurez-vous de supprimer les points-virgules devant certains paramètres. Le point-virgule supprime une action donnée, sinon la modification ne prendra pas effet.
  • Le fichier motion.conf est très bien organisé et détaillé. N'hésitez pas à modifier les paramètres à votre guise, mais comprenez qu'ils peuvent affecter le succès du système de capture de mouvement.
  • Après avoir configuré les options d'alerte par e-mail et de vidéo par e-mail, il est important de noter que l'e-mail de la vidéo de détection de mouvement prendra un peu plus de temps à envoyer que l'e-mail d'alerte initial. C'est parce que la vidéo se termine quelques secondes après que le mouvement n'est plus détecté, et parce que la pièce jointe de l'e-mail peut être suffisamment volumineuse pour nécessiter quelques minutes pour être reçue. Dans certains cas, si le mouvement est maintenu pendant une très longue période, il peut être trop important pour être envoyé. Pour cette raison, c'est toujours une bonne idée de vérifier le livestream après avoir reçu l'e-mail d'alerte initial.

Pourquoi le mouvement ?:

Lorsque nous nous sommes lancés pour la première fois dans ce projet, nous avons considéré plusieurs ressources différentes. Nous avons d'abord envisagé d'utiliser la PiCam, une unité de caméra spécialement conçue pour le Raspberry Pi. La PiCam est certainement un appareil capable et a de nombreuses applications, mais elle se limite à l'utilisation de programmes spécialement conçus pour elle et est relativement chère par rapport aux webcams polyvalentes bon marché. Ainsi, afin de rendre ce projet accessible à un public plus large, nous avons décidé d'utiliser une webcam USB commune. La question suivante était de savoir quel logiciel intégrer. Nous avons initialement envisagé OpenCV, un logiciel gratuit qui permet de nombreux types de projets de vision par ordinateur et d'imagerie. L'un des problèmes ici est qu'OpenCV est un fichier volumineux qui prend beaucoup de mémoire et une configuration longue. La configuration comporte également plusieurs étapes, laissant encore plus de place à l'erreur. Nous avons constaté que pour notre projet spécifique, Motion était plus simple à configurer et à faire fonctionner, mais beaucoup plus robuste dans son exécution.

Sources

Sources de code:

www.techradar.com/how-to/computing/how-to-b…

pimylifeup.com/raspberry-pi-webcam-server/

www.pyimagesearch.com/2015/06/01/home-surve…

naelshiab.com/tutorial-send-email-python/

www.raspberrypi.org/documentation/linux/us…

learn.adafruit.com/adafruits-raspberry-pi-…

learn.adafruit.com/adafruits-raspberry-pi-…

pinout.xyz/pinout/i2c

Crédits photos:

Escargot SSH:

Logo du courrier:

Webcam Logitech:

Fenêtre SSH:

Conseillé: