Aller au contenu

Détecter l’ouverture des portes et fenêtres

Tuto Raspberry pi 4 ovh
Publié dans Tutoriels · 6 Mars 2012
Tags: DOMOTIQUERASPBERRYPORTE

Détecter l’ouverture des portes et fenêtres

Aujourd’hui nous allons voir comment détecter l’ouverture d’une porte, d’une fenêtre, ou de quoi que ce soit qui s’ouvre ou qui se ferme, avec le raspberry PI et un petit composant à environ 3€.

L’état de la porte (ouverte/fermée) sera visible depuis une interface web, ou depuis notre interface de reconnaissance/synthèse vocale YURI (implantée dans les précédents tutoriaux sur le raspberry PI)

Le principe :

Un mini aimant est fixé sur le bord de la partie mobile votre porte (que nous appellerons le battant), et un petit capteur sera fixé sur la partie fixe de la porte (que nous appellerons tenant), ce capteur est nommé “capteur à effet de hall”.

C’est quoi ce composant cheulou au nom barbare ?

Un capteur à effet de hall est simplement un composant qui vas renvoyer 1 ou 0 si il est, ou non, à proximité d’un champs magnétique (par exemple émis par un aimant)

D’une certaine manière, c’est un bête interrupteur, à ceci près qu’il ne réagit pas à une pression mais à une “magnétisation” proche.

Mais alors, pas besoin d’un composant, pourquoi ne pas utiliser juste deux fils qui se touchent ?

Et bien surtout à cause du frottement, l’avantage du capteur a effet de hall est qu’il n’y a aucun contact “physique” puisque celui ci est magnétique donc :

  1. Pas de risque que le montage bloque la porte
  2. Pas de risque que l’usure du frottement abime le circuit
  3. Moins casse gueule et moche qu’un bête système de fils
  4. Sur la partie mobile, pas besoin de fils, d’alimentation, ou du moindre circuit : un aimant est en moyenne actif 400 ans, ne nécessite aucune alimentation,ne coute rien, et peut être minuscule.

Vous l’aurez compris, ce capteur à effet de hall sera branché au raspberry PI et lui enverra du 0 (l’aimant est lointain donc la porte est ouverte) ou sur 1 (l’aimant est proche donc la porte est fermée), le rapsberry Pi mettra à jour sa base de données (ici un simple fichier texte) qui sera alors consulté par l’interface web et par YURI.

Ce que je ne vous dis pas

Oai je sais, c’est con puisqu’au final je vous le dis, mais respectez mon style littéraire bande de gaufres ! :D

J’ai dis plus haut que le capteur renvoyait une valeur digitale (0 ou un 1) et fonctionnait un peu comme un interrupteur, je vous ai mentis :D

En réalité le capteur seul est plus une “résistance” qui vas varier en fonction de la proximité du champs magnétique et renvoyer une valeur analogique (0.2,1.4 etc…), et c’est un problème pour nous qui avons besoin d’un 0 ou d’un 1.

C’est la raison pour laquelle nous avons commandé un capteur avec un petit circuit associé, ce circuit comportes quelques autres composants qui vont traiter la valeur analogique et, a partir d’un certain seuil, définir qu’elle envoie un 0 ou un 1 (ex : si la résistance est entre 0 et 2,5 on envoie 0, sinon on envoie 1) .

Et la ou cette petite carte est top, c’est que vous avez la possibilité de régler ce seuil !! En effet un ptit potentiomètre qui se présente sous la forme d’une vis (donc réglable avec un tournevis plat) permet de faire varier ce seuil, ainsi nous pourrons agir sur la sensibilité de notre détection de porte en fonction de la porte et de la puissance de l’aimant choisis.

Je vous conseille bien évidemment de commander les aimants conseillés ci dessous qui sont minuscules et surpuissants, mais sur la théorie n’importe quel aimant avec un peu de portée fait l’affaire :).

Le matériel :

Le montage :

Une grand mère unijambiste pourrait faire ce montage dans le noir mais je vais quand même vous le spécifier histoire que les lecteurs les moins sobres puissent nous suivre :

ouverture

nb : J’ai choisis de relier les données sur le pin physique 11 du raspberry, qui correspond au numéro “0” avec la librairie wiring PI.

Le code :

On vas avoir :

Un programme en C qui vas vérifier toutes les x secondes l’état du pin “0” (qui sera donc à 0 ou 1 en fonction de si la porte est ouverte ou fermée) et envoyer l’état a une page php.

Une page php qui vas enregistrer la valeur dans une base de données (ici un fichier texte)

Enfin une page html basique qui vas faire un appel ajax au fichier texte de la base de donnée toutes les x secondes et afficher “porte fermée” ou “porte ouverte” en fonction du contenu du fichier texte.

Notez que dans le fichier PHP nous avons aussi prévu quelques lignes pour yuri (yuri requête sur la page php, qui vas vérifier l’état du fichier et retourner à yuri la phrase a dire en conséquence “porte fermée” ou “porte ouverte”).

  1. Téléchargez le programme ICI
  2. Décompressez son contenu dans /var/www/capteurOuverture
  3. Réglez les permissions des fichiers (sudo chmod -R 777 /var/www/capteurOuvertureou moins bourrin avec un 775 ou un chown www-data)
  4. Si vous voulez utiliser YURI, copiez le xml ouverture.xml du zip dans votre répertoire macros de yuri, et éditez le en remplaçant  “votre.raspberry.pi” par l’adresse réseau de votre raspberry PI

L’utilisation

Lancez le programme en C avec les paramètres :

  1. Adresse de la page php
  2. Numéro wiring Pi du pin auquel vous avez relié le capteur

ex : ./capteurOuverture /var/www/capteurOuverture/capteurOuverture.php 0

Lancez l’adresse http://votre.raspberry.pi/capteurOuverture (en remplaçant évidemment “votre.raspberry.pi” par l’adresse réseau de votre raspberry PI)

Ouvrez/fermez votre porte et visualisez le résultat sur l’interface web

Interrogez yuri en ouvrant/fermant votre porte




Mentions Légales - raspberry-pi.ovh 2022 © Copyright- Raspberry Pi est une marque déposée de la Raspberry Foundation - Les contenus rédigés par raspberry-pi.ovh sont distribués sous license open source.
Retourner au contenu