Raspberry Pi: Capteur de mouvement

Introduction

Dans ce projet, nous verrons comment implémenter un capteur de mouvement PIR en utilisant Raspberry Pi en apprenant comment interfacer un capteur PIR HC-SR501 avec Raspberry Pi. Dans ce projet, lorsque le capteur PIR détecte un mouvement humain, une LED est activée. Avec cette interface, vous pouvez implémenter une simple alarme de détection de mouvement en tant que projet de bricolage.

Aperçu

Les détecteurs infrarouges passifs, souvent appelés capteurs PIR ou « Passive Infra Red » et également détecteurs de mouvement IR et capteurs pyroélectriques, sont des détecteurs de mouvement qui détectent essentiellement les changements dans les rayonnements infrarouges émis par une personne.


Toute chose vivante et non vivante qui a une température supérieure au zéro absolu émettra des rayonnements infrarouges. Puisque l’énergie émise est sous la forme d’un rayonnement infrarouge, dont la longueur d’onde est supérieure à celle de notre lumière visible, nous, humains, ne pouvons pas voir ces rayonnements.

Mais les capteurs PIR sont conçus pour détecter les rayonnements infrarouges. Par conséquent, ils sont employés dans une variété d’applications comme les détecteurs de mouvement, les systèmes de sécurité, les alertes d’intrusion et ainsi de suite.

Le terme «passif» dans le capteur PIR signifie que le capteur n’émettra aucune énergie infrarouge mais détecte plutôt les rayonnements infrarouges émis par d’autres objets. Ceci est en contraste avec les capteurs actifs, qui effectuent à la fois les actions (émission et détection).

Une brève note sur le capteur PIR

Le capteur PIR utilisé dans ce projet se compose d’un capteur infrarouge pyroélectrique, d’un détecteur de mouvement PIR BISS0001, d’une lentille de Fresnel et de quelques autres composants.

Pour les connexions, le capteur PIR a trois broches à savoir VCC, DATA et GND. En outre, le capteur PIR possède deux potentiomètres: un pour ajuster la sensibilité du capteur (ou plutôt la distance de détection du capteur) et l’autre pour ajuster le temps pendant lequel la sortie reste élevée lors de la détection de tout mouvement humain.

La lentille de Fresnel recouvrant le capteur pyroélectrique joue un rôle important dans la focalisation de l’énergie infrarouge sur le capteur. Avec l’aide de cet objectif, le capteur PIR peut détecter des objets dans un angle de 1200. La portée du capteur est de 8 mètres, c’est-à-dire qu’il peut détecter un mouvement humain jusqu’à 8 mètres.

Ajustements du capteur PIR

Comme mentionné précédemment, il y a deux potentiomètres pour ajuster manuellement la sensibilité et le timing de sortie.


À l’aide du premier potentiomètre, vous pouvez ajuster la sensibilité, c’est-à-dire la distance de détection du capteur PIR. La plage peut être réglée de 3 mètres à 8 mètres. Pour augmenter la distance de détection, tournez le POT dans le sens des aiguilles d’une montre et pour le diminuer, tournez-le dans le sens inverse des aiguilles d’une montre.

Connexion au Raspberry Pi

Et finalement du code Python!

from time import sleep

from gpiozero import MotionSensor

pir = MotionSensor(7)

while True:
    if pir.motion_detected:
        print('Mouvement détecté')
        sleep(10)

Evidemment ça c’était la version courte en gpiozero. J’ai comme l’impression que cette librairie nous donne beaucoup de facilités au détriment des capacités de contrôle et aussi des performances. Voici une version en RPi.GPIO.

#####################  SENSEUR DE MOUVEMENT ##################

import RPi.GPIO as GPIO
import time 
# PUIS 
# GPIO.setmode(GPIO.BOARD) # PAR POSITION DANS LE CONNECTEUR

# OU
# GPIO.setmode(GPIO.BCM) # PAR FONCTION 


GPIO.setwarnings(False) # Les messages de warning nous ennoie  
GPIO.setmode(GPIO.BOARD)

PIN_MOTION = 26 # Senseur, GPIO7 – Position 26 
PIN_LED = 3     # LED, GPIO2 – Position 3 
 
# Préparer les fonctions des pins 
GPIO.setup(PIN_MOTION, GPIO.IN) 
GPIO.setup(PIN_LED, GPIO.OUT)  

while True: 
  i=GPIO.input(PIN_MOTION) 
  if i==0: 
    # Si nous ne détectons pas de mouvement 
    print ("Pas d’intrus!") 

    # LED OFF
    GPIO.output(PIN_LED, 0) 
    time.sleep(0.1) 
  elif i==1: 
    # Si nous détectons de mouvement 
    print ("Alerte intrusion!") 
    # LED ON
    GPIO.output(PIN_LED, 1) 
    time.sleep(0.1)