Publié le 20 juin 2014 - par

Raspberry Pi et détecteur de présence infra-rouge

panasonic_250pxJ’ai publié un article sur une caméra de surveillance réalisée avec un Raspberry Pi et le logiciel motion début janvier. Cette page a reçu des milliers de visites et généré une centaine de commentaires.
La mise en oeuvre de motion n’est pas forcément à portée des débutants en Linux/RasPi. Je vous propose une solution alternative à base de détecteurs infrarouge trouvés chez Farnell.

Si vous avez regardé un peu la page « A propos« , vous avez découvert que je suis un électronicien qui a migré vers l’informatique. Mais il en reste toujours des traces…

En particulier, ayant commencé mes premiers montages avec des tubes, puis des transistors au germanium (:-D) avant de passer au silicium, je suis encore étonné de découvrir les prouesses réalisées dans le domaine de la miniaturisation.

En particulier, j’ai été épaté de découvrir des capteurs de déplacement infrarouge en un seul composant. Et j’ai été encore plus épaté quand je les ai eu en main et que j’ai vu leur taille ! J’ai donc été épaté deux fois ( :mrgreen:  )…

Les capteurs Panasonic retenu pour les tests

Les capteurs Panasonic retenu pour les tests

Je vous propose dans un premier temps un descriptif de ces petits bijoux, avec un coup d’œil aux produits concurrents et enfin une application sur le Raspberry Pi.

Les capteurs Panasonic NaPiOn

Les concurrents sur ebay

Pour réaliser cet article, j’ai fait un tour de ce qui existe, en particulier sur ebay, où on trouve de tout, par exemple divers capteurs PIR :

pir_ebay_01

Ce modèle rassemble sur une carte l’ensemble des éléments nécessaires à la détection de mouvement. Pour les performances on trouve une détection à moins de 3m. Il y a aussi ce genre de matériel, qui occupe une place plus importante mais détecte les mouvements jusqu’à 7m :

pir_ebay_02pir_ebay_02_aLa carte électronique est ici bien garnie. En électronique, le risque de panne est proportionnel au nombre de composants et de soudures… La courbe a même des allures d’exponentielle…

La notice technique donne assez peu de détails sur le fonctionnement du capteur.

pir_ebay_02_b

Les détecteurs Panasonic

Et puis j’ai fait les catalogues de mes fournisseurs habituels et chez Farnell, je suis tombé sur des capteurs Panasonic complètement intégrés dans un boîtier de transistor type TO5.

boitier

Ils existent en version digitale (tout ou rien) et analogique (tension variable). Pour relier ces capteurs au GPIO de notre framboise314, j’ai choisi le modèle digital qui se branche sans adaptation.

detecteur_modeles

Il y a aussi différents modèles en fonction de la zone couverte : 5m, spot, 10m et déplacements lents. Ils existent avec lentille blanche ou lentille noire pour les adapter au milieu.

detecteur_5m_01

Pour les tests j’ai retenu deux modèles dans la gamme noire : le modèle 5m et le modèle 10m.

La technologie NaPiOn

Elle consiste à rassembler tous les éléments dans un seul boîtier (image ci-dessous).napion_panasonic

Comme le boîtier est métallique et relié à la masse, les éventuels problèmes d’interférences, parasites… sont éliminés.

Présentation physique des détecteurs PIR

Vue de dessus des capteurs Panasonic

Vue de dessus des capteurs Panasonic

Les deux capteurs sont plus petits qu'une pièce de 5 centimes d'euro...

Les deux capteurs sont plus petits qu’une pièce de 5 centimes d’euro…

A gauche le capteur 5m, à droite le capteur 10m présente une lentille de plus grande dimension

A gauche le capteur 5m, à droite le capteur 10m présente une lentille de plus grande dimension

Vue de dessus des lentilles

Vue de dessus des lentilles

Le boîtier métallique vu de dessous. On voit bien la patte de masse, reliée au boîtier, ainsi que l'ergot repère à droite

Le boîtier métallique vu de dessous. On voit bien la patte de masse, reliée au boîtier, ainsi que l’ergot repère à droite

Gros plan sur le brochage du capteur 5m.  Celui du capteur 10 (en arrière plan) est identique.

Gros plan sur le brochage du capteur 5m. Celui du capteur 10 (en arrière plan) est identique.

Notice technique

La notice technique concerne l’ensemble des capteurs. Voici quelques éléments pour mieux connaître leurs caractéristiques :

detecteur_principeTout d’abord, le montage préconisé par Panasonic est en partie haute. La zone couverte par les capteurs permettent de couvrir différentes zones.

Les capteurs détectent les modifications produites dans la gamme des infrarouges lorsqu’une personne se déplace. Ils se déclenchent pour un déplacement de 30cm environ, 20 cm pour le capteur de déplacements lents.

Schéma synoptique des capteurs

Schéma synoptique des capteurs

La totalité du capteur est contenue dans un boîtier TO5, couvert par une lentille chargée de faire converger les rayons infrarouges sur la zone sensible (PIR) au travers d’un filtre optique infrarouge. Le boîtier intègre une alimentation stabilisée, un amplificateur et un comparateur (cas du capteur à sortie digitale). L’ensemble est protégé des perturbations par le blindage formé par le boîtier métallique.

detecteur_axesLe positionnement du capteur a son importance car les zones couvertes ne sont pas symétriques. Le repérage des axes est différent et la position de la découpe devra être ajustée pour que les zones prévues soient protégées.

Dimensions des capteurs (à gauche 10m, à droite 5m)

Dimensions des capteurs (à gauche 10m, à droite 5m)

Précaution de montage à respecter pour que la lentille puisse jouer pleinement son rôle

Précaution de montage à respecter pour que la lentille puisse jouer pleinement son rôle (à gauche capteur 5m, à droite capteur 10m)

Zones couvertes par le capteur 5m

Zones couvertes par le capteur 5m

Répartition des zones sensibles du capteur PIR

Répartition des zones sensibles du capteur PIR sur le capteur 5m

Zones couvertes par le capteur 10m et zones sensibles du capteur PIR

Zones couvertes par le capteur 10m et zones sensibles du capteur PIR

Schéma de branchement

detecteur_branchementCe schéma se réduit à sa plus simple expression. Alimentation en 5V ou en 3.3V (le + à Vdd, le masse à GND), et sortie (Out) vers le circuit commandé. Ici c’est un transistor qui reçoit l’information pour commander une charge.

J’ai réalisé ce circuit avec un 2N2222 et une LED en intercalant une résistance de 100 KΩ entre la sortie du capteur et la base du transistor (j’ai omis la résistance entre base et masse).

panasonic_ledOn voit ci-dessus une photo du montage lors des essais du capteur 5m. Les deux capteurs ont fonctionné parfaitement sous 5V avec une alimentation stabilisée ou comme ci dessus en 3,3V, fourni par le Raspberry Pi qu’on distingue dans le fond. Chaque capteur a fonctionné 24h/24 pendant 1 semaine sans problème.

Connexion au Raspberry Pi

La connexion au Raspberry Pi a été réalisée en reliant directement la sortie du capteur au GPIO 7 du port P1.

Le programme ci-dessous a permis de vérifier le déclenchement du capteur et de prendre des photos de « l’intrus »… C’est un script que j’ai récupéré sur un des liens figurant dans les sources ci-dessous et modifié. Il y a sans doute possibilité de faire beaucoup mieux.

#!/usr/bin/python
#
# Detecter des mouvements avec un capteur infrarouge
#
#
# Importation des librairies pythons
import RPi.GPIO as GPIO
import time
import urllib
import os

# Utiliser les BCM GPIO et pas les numeros des pins sur P1
GPIO.setmode(GPIO.BCM)

# Pin GPIO utilisee
GPIO_PIR = 7

print "Test du capteur de presence IR (CTRL-C pour quitter)"

# Configurer la pin 7 en entree
GPIO.setup(GPIO_PIR,GPIO.IN)

# Initialisation des variables
Current_State  = 0
Previous_State = 0

try:
  print "Attente detection..."
  # Boucle jusqu a ce que la sortie du capteur passe a 0
  while GPIO.input(GPIO_PIR)==1:
    Current_State = 0
  print " Pret"

  # Tourne en boucle jusqu'a ce que l utilisateur quitte (par CTRL+C)
  while True :

    # Lire l'etat du capteur
    Current_State = GPIO.input(GPIO_PIR)

    if Current_State==1 and Previous_State==0:
      # Le detecteur a envoye un signal
      print " Mouvement detecte !"
      os.system("raspistill -o image.jpg");
      # On attend  secondes
      time.sleep(5)
      # On enregistre l'ancien etat
      Previous_State=1
    elif Current_State==0 and Previous_State==1:
      # Le capteur est a nouveau pret
      print " Pret "
      Previous_State=0

    # On attend 1 seconde
    time.sleep(1)

except KeyboardInterrupt:
print " Quit"
# Reinitialisation des parametres GPIOs
GPIO.cleanup()

Utilisation avec le Raspberry Pi

Qu’est-ce qu’on peut faire avec un Raspberry Pi et ces capteurs?

  • Un détecteur de présence avec prise de vue de la zone
  • Un détecteur d’absence de mouvement (surveillance de personne âgée)
  • Une caméra de surveillance déclenchée par une présence

Combien ça coûte ?

Comptez 13€ H.T. pour le capteur 5m et un peu plus de 22€ H.T pour le capteur 10m.

Conclusion

Si des capteurs « ebayens » peuvent convenir pour des applications ludiques, les nécessités de la domotique, de la sécurité ou de la surveillance de personne ne peuventt admettre de faille. Ces capteurs professionnels garantiront la fiabilité et la stabilité des réalisations destinées à ces applications.

Pour retrouver ces références :

Sources

Share Button

A propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. .

44 réflexions au sujet de « Raspberry Pi et détecteur de présence infra-rouge »

  1. Ramzi

    Bonjour,
    J’ai testé le capteur infrarouge de 7m, il est certe volumineux par rapport à ceux présentés. voici un script shell que j’ai écrit en m’inspirant du votre.

    #———————————————————————————————-
    #!/bin/bash

    etat_courant=0
    etat_precedant=0

    echo « Prêt »

    while true
    do
    etat_courant=`gpio read 7`
    if [ « $etat_courant » == 1 ] && [ « $etat_precedant » == 0 ]
    then
    echo « Mouvement détécté »
    date=`date + »%Y_%m_%d-%H:%M:%S »`

    raspistill -tl 100 -o /home/pi/image_motion/$date%04d.jpg -t 5000 -w 800 -h 600
    etat_precedant=1

    elif [ « $etat_courant » == 0 ] && [ « $etat_precedant » == 1 ]
    then
    echo « Prêt »
    etat_precedant=0
    fi

    sleep +0.1s
    done
    #———————————————————————————————-

    Répondre
    1. msg

      La présence de la ligne « import urllib » laisse penser que l’auteur a prévu l’envoi d’un SMS d’alerte .
      Fonction d’envoi SMS récemment proposé chez Free .

      Répondre
      1. admin Auteur de l’article

        Bonjour msg
        effectivement WordPress a « mangé » les indentations
        j’ai du rajouter des   pour qu’il accepte d’indenter…
        merci !
        Cordialement
        François

        Répondre
  2. Laurent

    Bonjour, article intéressant, cependant, pouvez vous détailler le montage et nous présenter un prototype complet et utilisable.
    En fait, l’idée est super mais si on a pas fait d’électronique on ne comprend pas tout.
    Merci

    Répondre
      1. thierry

        Bonjour,
        ce montage est parfait sauf que vous deviez mettre l’explication détaillée comme vous l’avez dit dans le message précédent sauf que je ne le trouve pas ..
        Parce que comme la dit laurent quand on ne si connait pas trop en électronique ce montage a reproduire est quasi impossible , surtout que je n’y comprends pas grand chose parce que je suis qu’un debutant on dira… En tout cas ce site est super quand on debute avec le raspberry !
        Merci d’avance !
        Cordialement.

        Répondre
  3. Ping : Raspberry Pi et détecteur de prés...

  4. Ping : Raspberry Pi et détecteur de prés...

  5. Ping : Raspberry Pi et détecteur de prés...

  6. Aussudre

    Bonjour,
    Mais aussi merci pour tous ces articles passionnant sur notre belle Framboise.
    Si vous aimez les détecteurs et étant un grand fan des produits Arduino et dérivés (totalement compatible RPI en voltage) ; allez faire un tour chez BangGood (.com) ;
    Pour faire simple, ce site est Chinois, lent, pas cher, mais c’est une vrai caverne d’alibaba sérieuse et fiable ! j’ai acheté la collection de tous les détecteurs PIR, HALL, DOPPLER de détections ;
    Et quand je dis pas cher : c’est 10x moins cher et ça marche ! par contre comptez environ entre 21 à 28 jours de délai pour le « shipping » qui est aussi gratuit ; Donc si vous n’êtes pas pressé …

    Merci encore et continuez

    François

    Répondre
    1. admin Auteur de l’article

      Merci François
      je vais aller y faire un tour et sans doute qques emplettes
      … s’ils prennent paypal en paiement
      Cordialement
      François

      Répondre
  7. Ping : Ce qu’il ne fallait pas manquer cette semaine du 21/06 au 28/06 - High-tech & Divertissement

  8. Ping : Ce qu’il ne fallait pas manquer cette semaine du 21/06 au 28/06 | Maroc Domotique

  9. Ping : RaspiFouine : un piège à fouine à base de Raspberry Pi | Framboise 314, le Raspberry Pi à la sauce française….

  10. jr

    Bonjour,

    Merci pour cet article très intéressant! Je prévoyais justement de construire quelque chose de similaire, mais étant vraiment débutant en électronique (je suis carrément une grosse bille), je crains de faire des erreurs, d’oublier du matos et de tout faire cramer.
    Auriez vous, par hasard, la liste des composants que vous utilisez (resistance, carte, cables, etc)?
    Je vous en demande beaucoup, mais vous aurez permis d’éviter un incendie!

    Merci encore!

    Répondre
  11. Ping : Raspberry Pi 2を買いました | NegativeMindException

  12. manu

    je sais que je remonte un vieux dossier mais comment faire pour avoir plusieurs sauvegardes de photos et non pas une qui prend la place de l’autre ?

    Dans l’attente, d’une réponse je vous remercie par avance

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Manu
      bah, ça date à peine d’un an 😉
      Vous pouvez horodater les images au leu de les écraser.
      Elles seront nommées en fonction de la date et de l’heure de capture, donc vous les garderez toutes…
      Attention au remplissage de la carte quand même si vous avez un matou qui vient se pavaner devant votre détecteur IR …
      Voyez par exemple http://www.epingle.info/?p=2796
      pour la méthode à appliquer filename=-$(date -u + »%d%m%Y_%H%M-%S »).jpg
      cordialement
      François

      Répondre
      1. manu

        Bonjour et merci pour l’aide,

        cela fonctionne, une autre question entre la détection et la prise de vue il se passe 5 sec comment réduire se temps au minimum puisque le but est de surprendre des animaux à l ‘extèrieur ?

        j’ai mis time.sleep(1) mais ça ne change rien

        Encore merci

        manu

        Répondre
        1. michael

          bonjour

          j’ai le meme probleme, environ 5s entre l’action du print ‘detection’ et le fait que le capteur soit a niveau pret.
          As tu trouvé une solution ?

          Répondre
          1. François MOCQ Auteur de l’article

            Bonjour Michaël
            Sur ce genre de matériel à moins d’appli spéciale (?)
            on ajoute même souvent une tempo logicielle pour éviter les déclenchements répétés.
            Par exemple :
            Détection => déclenchement tempo 30s
            => enregistrement d’une séquence vidéo de 20s
            je ne sais pas si ça répond à la question
            j ai parcouru la doc mais pas vu de choses en relation avec ce blocage
            http://www.farnell.com/datasheets/73642.pdf
            maintenant il est possible aussi qu’il y ait un time out dans le capteur.
            cordialement
            François

  13. abdi

    bonjour
    je réalise un projet domotique « avec une maquette « , je dois utiliser un capteur de mouvent ou presence
    que pensez vous de ce capteur « panasonic » le noir , présenté au haut de la page, ?
    et sa porté est de 7-10 mètre, peut on le reduire en qlq cm?
    cordialement
    abdi

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Abdi
      ça fonctionne très bien ces capteurs. Je les ai personnellement utilisés pour des réalisations comme Raspifouine 😉 https://www.youtube.com/watch?v=EOSB8Es-Tco
      par contre il n’y a aucun réglage et les modèles 5m détectent à 5m et les modèles 10m … à 10 mètres
      Si vous voulez détecter à quelques centimètres il faut un autre modèle de capteur comme celui ci réglables de 3 à 80 cm
      http://www.ebay.com/itm/Adjustable-Infrared-proximity-switch-photoelectric-detect-sensor-Robot-Car-DIY-/251409670527
      cordialement
      François

      Répondre
          1. abdi

            oui ce capteur sharp , je l ai dejà, utiliser l’année dernière, dans un petit projet où on devait commander une balle dans un tube. en gros il calculait la distance entre la balle et la turbine « qui soufflait »
            mais là je veux simuler une présence
            un petit capteur avec un rayon IR , « et une fois que qlq chose passe devant, donc coupe le rayon IR », déclenchera les LEDS,
            que pensez vous ce type de capteur .

  14. abdi

    bonjour François 🙂
    je viens de recevoir le petit capteur infrarouge « ajustable »
    ça été rapide 🙂 🙂
    j’ai regardé sur internet pour me documenter sur ce capteur, afin de caractériser et régler « la distance de détection »
    http://www.electronicaestudio.com/docs/SHT-015d.pdf
    je suis tombé sur ce site mais il explique pas , l’intérêt de cette petite résistance , « je pense c’est pour régler la distance! » c’est vraiment ca? si non ça sert à quoi ? 🙂
    deuxième question, est ce que j’ai vraiment besoin de caractériser le capteur à part régler la distance de détection ?
    merci d’avance
    « je vous rappelle que mon but est de détecter la présence d’un objet à proximité »

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      la résistance « R » branchée sur le fil Y est une résistance de « tirage » pour faire apparaitre le signal. Attention si le capteur est alimenté en 5V c est ok pour l’arduino mais il faut ramener la tension à 3,3v pour le GPIO du Raspi (un pont diviseur)
      Le réglage de distance est l’ajustable à côté du fil de sortie du signal
      cordialement
      François

      Répondre
  15. Ping : Tuto Raspberry Pi, Technologie - FSDNOEL : Mon Sapin de Noel à base de framboise

  16. David de Wisbot

    Bonjour François,
    je suis en plein là dedans dans les PIR. Merci pour cet article. Une question: le Raspi offre du voltage en 5V et en 3V3 mais il n’accepte que les signaux en 3V3. J’ai testé le PIR spécial Raspi (avec les 2 potentiomètres orange et le drapeau anglais sur ta photo plus haut). Lui pas de soucis il prend du 5 V en entrée et fournit un signal en 3V3 (très précis d’ailleurs). Mais as-tu testé les autres PIR plus fins. J’ai l’impression qu’ils retournent du 5V en signal, n’est-ce pas? Biensur il est possible d’abaisser la tension mais c’est encore du bricolage et des composants « inutiles ». Qu’en penses-tu? Merci d’avance
    Cordialement

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour David
      les capteurs Panasonic s’alimentent en 3v3 et sortent donc du… 3v3 donc pas de souci d’adaptation. Sinon un pont diviseur suffit pour ramener le 5v à 3v3…
      cordialement
      François

      Répondre
      1. David de Wisbot

        merci pour la rapidité. Super pour le panasonic qui m’a l’air plus compact. Le pont diviseur c’est effectivement ce que j’appelle du bricolage 🙂 Je fais plutot de l’integration façon lego et la soudure c’est pas un art facile…

        Répondre
  17. Mike

    Bonjour,

    Merci beaucoup pour tous vos tutos qui sont toujours très bien fournis.
    J’ai un soucis concercant la detection qui se fait de manière intempestive.
    J’ai changé de capteur ( j’ai essayé le 5 et 10m ), changé de Rpi, je pense avoir tout essayé…
    En fait pour être plus clair, le détecteur se déclenche meme sans présence…
    Y’a t il une astuce…avec une resistance de pull up peut être ?

    Merci de votre réponse !

    Cordialement

    Répondre
        1. Mike

          Et voici mon petit bout de prog :
          import RPi.GPIO as GPIO
          import time

          PIR = 7
          GPIO.setmode(GPIO.BCM)
          GPIO.setup(PIR, GPIO.IN)

          try:
          time.sleep(1)
          while True:
          if GPIO.input(PIR):
          print(« Detection »)
          time.sleep(1)
          except KeyboardInterrupt:
          GPIO.cleanup()

          Répondre
          1. François MOCQ Auteur de l’article

            re-bonjour Mike
            en liaison directe je ne me souviens pas d’avoir eu des fausses détections
            essayez de mettre une résistance 33K minimum entre sortie et masse
            47K ou 100k par exemple et refaites une mesure au voltmètre (au moins c’est bien, vous êtes équipé 🙂 )
            Si vous attaquez directement un port GPIO attention il ne supporte pas le 5v !
            alimentez bien le capteur en 3.3v
            Ca doit faire antenne et ramasser des parasites (le GPIO en entrée a une haute inpédance)
            tenez moi au courant cordialement
            François

  18. Mike

    Bien, je crois que cette petite résistance de Pull-down de 68K remplit bien son rôle.
    Mon montage est allumée depuis 30 min et il n’y a plus de detections intempestives.
    Je continue mes tests…
    Merci de votre aide !!
    Cordialement

    Mike

    Répondre
    1. michael

      bonjour

      j’ai le meme souci que toi, une detection intenpestive, meme le capteur posé dans une boite noire, il continue de me donnez des detections.

      du coup, je m’oriente vers la solution de la résistance, mais je n’ai pas compris, il faut la placer entre la borne out et gnd du capteur ?
      aurais tu un shéma s’il te plait ?

      Répondre
      1. Mike

        Bonsoir,

        Oui, c’est tout à fait ça, je te confirme que ça marche.
        En fait, le but est simplement de créer des états haut et bas plus nets.
        Tu places donc une résistance ( dit de Pulldown car vers la masse ) entre la sortie du capteur et la masse. Cette résistance peut être entre 47k et 100k, comme disait Francois.

        Merci encore Francois, l’installation fonctionne très bien pour l’instant

        Répondre
          1. michael

            merci pour vos réponse

            je vais allez chercher une resistance et je vous dirais ce que cela donne 🙂

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *
Time limit is exhausted. Please reload CAPTCHA.