Différences entre les versions de « VORSurv »
(22 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 41 : | Ligne 41 : | ||
* Echanger et partager le savoir et faire participer le maximum d’adhérents | * Echanger et partager le savoir et faire participer le maximum d’adhérents | ||
Comme c'est le cas pour tout nouveau adhérent, la fameuse liste de projets de VoLAB m'a été présentée dès le premier jour par Joel et | Comme c'est le cas pour tout nouveau adhérent, la fameuse liste de projets de VoLAB m'a été présentée dès le premier jour par Joel et Pierre, en me proposant, si j'étais intéressé, de prendre la responsabilité de l'un des projets. | ||
Ligne 435 : | Ligne 435 : | ||
Il s'agit d'un script shell Linux qui initialise les variables, lance les processus et assure leur synchronisation. | Il s'agit d'un script shell Linux qui initialise les variables, lance les processus et assure leur synchronisation. | ||
<nowiki> | <nowiki>############################################################################################################################</nowiki> | ||
############################################################################################################################ | |||
# Nom du script : control.sh | <nowiki># Nom du script : control.sh</nowiki> | ||
# Utilité: le role principal de ce script est d'initialiser des differents variables communes entre les differents pocessus | |||
# et de gerer la synchronisation entre ces processus (voir http://www.vorobotics.com/wiki/index.php?title=VORSurv). | <nowiki># Utilité: le role principal de ce script est d'initialiser des differents variables communes entre les differents pocessus</nowiki> | ||
# Aussi, il se charge de l'execution des commandes reçues depuis le web | |||
# Usage: Ce script se lance, en arriere plan, par rc.local lors du demarrage du systeme. | <nowiki># et de gerer la synchronisation entre ces processus (voir http://www.vorobotics.com/wiki/index.php?title=VORSurv).</nowiki> | ||
# Auteur: Djamel MEBARKI < | |||
# Mise à jour le: 02/02/2016 | <nowiki># Aussi, il se charge de l'execution des commandes reçues depuis le web</nowiki> | ||
############################################################################################################################ | |||
</nowiki> | <nowiki># Usage: Ce script se lance, en arriere plan, par rc.local lors du demarrage du systeme.</nowiki> | ||
<nowiki># Auteur: Djamel MEBARKI <djamel_at_vorobotics.com></nowiki> | |||
<nowiki># Mise à jour le: 02/02/2016</nowiki> | |||
<nowiki>############################################################################################################################</nowiki> | |||
Il utilise également : | |||
* lan_drive.sh : crée le point de montage pour les images | |||
* status.sh : autre nom : scan GPIO voir ci-dessous | |||
* verif_sms.sh : le role de ce script est d'envoyer les sms | |||
Le rôle du programme principal est de synchroniser les différents processus ainsi que l’exécution des actions suivantes en fonction des conditions prédéfinies : | |||
1 - Allumer le projecteur, sauvegarder les traces sur le serveur sécurisé, indiqué dans les fichiers de configuration et envoyer un message d’alerte intrusion, à tous les membres de VoLAB de la liste si les conditions suivantes sont vérifiées : | |||
- Mode de fonctionnement = Distant | |||
- Mouvement signalé simultanément par Motion et Détecteur IR | |||
2 – Après l’envoi de message d’alerte, maintenir l’alimentation du projecteur pendant toute la durée du mouvement afin d’assurer une meilleure qualité des images | |||
3 – Initialisation des variables et fichiers partagés entre tous les programmes | |||
4 - Gestion de l'espace mémoire utilisé comme répertoire de travail par Motion | |||
== Processus 1 : Motion == | == Processus 1 : Motion == | ||
Ligne 494 : | Ligne 519 : | ||
<center>[[Image:Photo-passage-2.JPG]]</center> | <center>[[Image:Photo-passage-2.JPG]]</center> | ||
== Solution | == Solution == | ||
Pour palier à ce problème de fausse détection d'intrusion, un détecteur Infra-Rouge a été installé. Comme les rayons IR ne traversent pas la vitre, ce capteur ne détecte que les intrusions réelles. Un mouvement détecté ne peut être déclaré comme intrusion que s'il est signalé par les deux systèmes en même temps (Motion ET capture infra-rouge). | Pour palier à ce problème de fausse détection d'intrusion, un détecteur Infra-Rouge a été installé. Comme les rayons IR ne traversent pas la vitre, ce capteur ne détecte que les intrusions réelles. Un mouvement détecté ne peut être déclaré comme intrusion que s'il est signalé par les deux systèmes en même temps (Motion ET capture infra-rouge). | ||
Ligne 565 : | Ligne 590 : | ||
<center>[[Image:Detecteur IddddR-2.JPG]]</center> | <center>[[Image:Detecteur IddddR-2.JPG]]</center> | ||
<center>'''RFID - Extension '''</center> | <center>'''RFID - Extension '''</center> | ||
= Qualité d’image = | = Qualité d’image = | ||
Ligne 629 : | Ligne 639 : | ||
<center>[[Image:Interface%20web%20-%203.JPG]]</center> | <center>[[Image:Interface%20web%20-%203.JPG]]</center> | ||
<center>'''Interface Web – Mode de fonctionnement'''</center> | <center>'''Interface Web – Mode de fonctionnement'''</center> | ||
Remarque: la même tâche peut être accomplie grâce aux boutons des faces avant de l'unité principale ou de l'extension. Un appuie de 3s au moins est nécessaire pour changer de mode. Pendant l'appuie la LED rouge est allumée. Laisser le doigt appuyé jusqu'à ce que la LED verte change. LED verte allumé = mode local, LED verte éteinte mode distant (démarre réellement dès que l'opérateur quitte la zone de détection). | |||
<center>[[Image:Interface.JPG]]</center> | <center>[[Image:Interface.JPG]]</center> | ||
Ligne 699 : | Ligne 711 : | ||
= Fichiers sources = | = Fichiers sources = | ||
[http://www.vorobotics.com/uploads/VORSurv/VORSurv_sources170818_2111.7z source des scripts shell] | |||
[http://www.vorobotics.com/uploads/VORSurv/VORSurv_www.7z Sources serveur web] | |||
[http://www.vorobotics.com/uploads/VORSurv/VORSurvBoitier160925.7z fichiers Freecad] | |||
= Licence = | = Licence = | ||
Ce document est mis à disposition selon les termes de la [http://creativecommons.org/licenses/by/4.0/ Licence Creative Commons Attribution 4.0 International]. | Ce document est mis à disposition selon les termes de la [http://creativecommons.org/licenses/by/4.0/ Licence Creative Commons Attribution 4.0 International]. |
Version actuelle datée du 18 août 2017 à 22:16
VoLAB
Association VoRoBoTics
Date : 25/01/2015
Auteur : D.Mebarki, djamel@vorobotics.com
Relecteur : J.Soranzo
Thème: Vidéo surveillance, GPIO, Commande d'un relais, shell, awk
Projet : VORSurv
Problématique
VORSurv est l'un des projets VoLAB. Il fait partie d'une grande liste, collée sur l'une des portes du lab, pour quelle soit visible et lisible pour tous les adhérents : les jeunes et les vieux.
Le cahier des charges
La version initiale du cahier des charges se résume comme suit:
Conception et réalisation d'un système, Made in VoLAB, capable de répondre aux principaux besoins suivants :
- Superviser, en temps réel, l'entrée principale du VoLAB, depuis n'importe quel poste du réseau local
- Détecter et signaler toute intrusion au VoLAB et être capable de conserver les traces (images, date et heure) d'une éventuelle infraction dans un endroit sécurisé physiquement éloigné.
- Envoyer des messages d'alarme, par SMS, à une liste prédéfinie d'adhérents, en cas d'intrusion durant les heures de fermeture du VoLAB
Made in VoLAB ?
- Réalisation d'un projet, l'un de la liste des projets inscrits sur le tableau, et de le personnaliser, en s’appuyant sur les outils, les ressources internes et les compétences des adhérents de VoLAB
- Echanger et partager le savoir et faire participer le maximum d’adhérents
Comme c'est le cas pour tout nouveau adhérent, la fameuse liste de projets de VoLAB m'a été présentée dès le premier jour par Joel et Pierre, en me proposant, si j'étais intéressé, de prendre la responsabilité de l'un des projets.
Analyse du cahier des charges:
D'après l'analyse préliminaire du cahier des charges, le travail demandé consiste à concevoir et réaliser un système capable d'assurer les fonctionnalités suivantes
- Supervision de la porte d'entrée du VoLAB depuis n'importe quel poste du réseau
- Signaler toute éventuelle intrusion, uniquement, durant les heures de fermeture du VoLAB
- Envoyer des SMS d'alerte uniquement au numéros de portables d'une liste prédéfinie facilement modifiable, à télécharger depuis un site sécurisé.
- Sauvegarder une copie des traces (Images, date et heure) sur un serveur distant et sécurisé.
Important
Vous pouvez réaliser le même système chez vous, par vous même, toutefois, nous attirons l'attention sur l'éventuel risque lors des tests de la partie commande.
Dans notre cas, les deux fils, phase et neutre, du câble d'alimentation 230V du projecteur sont commandés par le relais piloté par la carte Raspiberry.
Vous devez s'assurer de la conformité de votre câblage avant d'entamer les tests de cette partie.
Matériel utilisé
-
- Un Raspberry Pi modèle B
- Une carte SD 8GO
- Module caméra PI
- Modem 3/4G avec une carte SIM (SMS illimité de préference)
- Leds : couleur rouge & verte
- Résistances: 1K
- Relais 5V
- Detecteur de mouvement (IR)
- Bouton poussoir
- Transitor BC337
- Diode 1N4000Boitier (conçu et fabrique par VoLAB)
Configuration du système
Preparation de la carte Raspberry
Etape 1: Préparation de la carte SD
La première étape consiste à la préparation de la carte SD et l’installation de l’image du système d’exploitation
Cette procédure est destinée pour l'environnement Windows.
1 – Télécharger et installer le logiciel Sdformater
2 – Télécharger et installer le logiciel Win32DiskImager
3 – Télécharger l’image de votre OS depuis http://www.raspberrypi.org
4 - Lancer le logiciel Sdformater et procéder au formatage de la card SD en fonction des paramètres détectés
5 - Lancer le logiciel Win32DiskImager, selectionner l'image OS téléchargée précédemment et appuyer sur "Write"
Etape 2: Configuration du système
Dès l'insertation de la carte SD et le premier démarrage du système sur le Raspberry, il faut passer à sa configuration en utilisant la commande raspi-config :
sudo raspi-config
- Selection de vos parametres régionales:
- Langue,
- Clavier
- Fuseau horaire
- Activation de l'utilisation du caméra RP
Pensez è redémarrer le système pour s'assurer de la bonne prise en compte de votre nouvelle configuration.
Depuis l'interface Raspi-config
ou
Depuis la ligne de commande:
sudo reboot
Important: Le fonctionnement du système dépendra de la bonne prise en compte de l'utilisation de l'interface du caméra
Installation des logiciels necessaires
Motion:
C'est un logiciel de surveillance pour rasbian, simple à utiliser, qui offre la possibilité de faire de la védio-surveillance et la diffusion en ligne, en temps réel, des images prises par le système.
En comparent la toute dernière images avec la nouvelle image prise, Motion est capable de détecter tout éventuel mouvement.
On trouve plusieurs sites internet qui expliquent très bien l'installation et la configuration de Motion.
Parmi ces sites, on peut citer: http://www.pihomeserver.fr/2013/05/29/raspberry-pi-home-server-video-surveillance-avec-motion/
Le paragraphe suivant décrit la démarche suivie lors de la réalisation de VORSurv
-
-
-
-
- sudo apt-get update
- sudo apt-get upgrade
- sudo apt-get install motion
-
-
-
Après, on diot télecharger et installer les librairies necessaires
- sudo apt-get install -y libjpeg62 libjpeg62-dev libavformat53 libavformat-dev libavcodec53 libavcodec-dev libavutil51 libavutil-dev libc6-dev zlib1g-dev libmysqlclient18 libmysqlclient-dev libpq5 libpq-dev'
Comme nous allons utiliser la caméra RPI, on doit telecharger la version de Motion compatible avec ce type de caméra
-
-
-
-
- wget http://raspbian-france.fr/download/motion-mmal.tar.gz
- tar zxvf motion-mmal.tar.gz
- sudo mv motion /usr/bin/motion
- sudo mv motion-mmalcam.conf /etc/motion.conf
-
-
-
Remarque: Pour l’exécution de certaines commandes, il faut être "root" ou utiliser la commande "sudo"
A l'issue de cette étape, on doit attribuer les bons droits d'accès pour éviter les erreurs lors du lancement du programme.
-
- sudo chmod 664 /etc/motion.conf
- sudo chmod 755 /usr/bin/motion
- sudo touch /tmp/motion.log
- sudo chmod 775 /tmp/motion.log
Avant le lancement du programme, on doit revoir le fichier de configuration, en fonction de la configuration souhaiter et s'assurer que le module Camera RPI est bien installé.
Installation du module caméra RPI
Une excellente video résume bien les étapes d'installation du module caméra de Raspberry, ainsi que les précautions à prendre en considération, lors de cette opération, se trouve sur le lien suivant:
https://www.raspberrypi.org/help/camera-module-setup/
Paramétrage de Motion
Pour le cas du système de VORSurv, nous avons procèdé ainsi:
A) – Activation de l'option start_motion_daemon pour autoriser la lancement de motion dès le démarrage du système sans aucune intervention. Pour faire, il suffut d'éditer le fichier /etc/default/motion et décommenter la ligne : start_motion_daemon=yes
B) Mise à jour du fichier de configuration /etc/motion.conf comme suit:
daemon on
logfile /tmp/motion.log
width 1280
height 720
framerate 2
pre_capture 2
post_capture 2
ffmpeg_video_codec msmpeg4
stream_localhost off
A la fin de cette étape, il faut rebooter le système pour s'assurer du lancement automatique de Motion ou procèder comme suit pour lancer son éxecution manuellement:
sudo service motion start
En cas d'erreur, il faut vérifier le fichier:
/tmp/motion.log
Pour pouvoir diffuser les images, les images prises doivent être accessibles depuis un serveur web ou installer son propre serveur web.
Dans le cas de VORSur, nous avons préféré l'installation un serveur web sur le Raspberry et développer nos propres interfaces pour sécuriser l'accès aux cameras et d'autres fonctionnalités telles que la désactivation ou l'activation d'envoi d'alertes via une interface web, changement du mot de passe administrateur, etc..
Pour ça, nous avons installer un serveur web très light ainsi que le langage PHP
Serveur Web et PHP:
Pour pouvoir diffuser, en temps réel, les images prises par VORSurv, nous avons opté pour l'installation d'un serveur web capable de diffuser le flux d'images à n'importe quel poste de notre réseau local. Un mot de passe sera demandé bien évidement..!
Aussi, nous avons développé des interfaces, accécibles depuis le serveur web, en utilisant le langage PHP, pour le paremétrage et la configuration de VORSURv.
Le but essentiel est de donner la main aux personnes autorisées, de changer le mode de fonctionnement, consulter les logs et visualiser les images depuis n'importe qu'elle lieu.
Serveur WEB Lighttpd:
Comme le besoin se limite à la diffusion des images pour quelques postes de travail, nous avons installé Lighttpd qui est un serveur web très légèr qui s'adapte parfaitement à notre besoin.
sudo apt-get install lighttpd
Installation de PHP
sudo apt-get install php5-common php5-cgi php5
Vérifier la configuration du serveur web, en particulier le répertoire racine "root", des documments accessibles depuis les postes clients
Configuration pour la prise en compte des script php et droits d'accès au répertoire
sudo lighty-enable-mod fastcgi-php
sudo chown www-data:www-data /var/www
sudo chmod 775 /var/www
Attribution des droits du groupe www-data et pi
sudo usermod -a -G www-data pi
A la fin de ces étapes, il faut relancer lighttpd pour s'assurer de la prise en compte de ces nouvelles modifications et tester le bon fonctionnement du serveur web.
Pour effectuer un test, il suffit de taper:
http://127.0.0.1/ ou http://localhost/.
http://@IP/ où @IP est l'adresse IP du serveur web
Aussi, il faut s'assurer du fonctionnement du PHP : Il suffit d'éditer le simple fichier texte suivant, à placer dans le répertoire racine du serveur web: /var/www/test.php
<?PHP
phpinfo()
?>
Envoi de messages d'alerte sur telephone mobile:
Gammu-smsd:
Selon le cahier des charges de VORSurv, l'envoi de messages d'alerte, suite à une intrusion durant la fermeture du VoLAB, se fait par SMS.
Les destinataires sont les adhérents qui font d'une liste variable de numéros de mobiles disponible sur un serveur internet bien évidement sécurisé..
Pour pouvoir envoyer un SMS, VORSurv utilise le logiciel libre gammu.
Installation & configuration de GAMMU:
Etape 1: Inserer la carte SIM dans le dongle 3G
Etape 2: Inserer le dongle 3G dans l'un des ports USB du Raspberry
Installer gammu et gammu-smsd
sudo apt-get install gammu gammu-smsd
Déterminer le port USB utilisé par le modem 3G en utilisant la commande
dmesg
Le numéro du port usb utilisé, ttyUSB0 ou ttyUSB1, sera utilisé pour la mise à jour du fichier de configuration /etc/gammu-smsd
[gammu] #Please configure this! port = /dev/ttyUSB0 connection = at19200 # Debugging #logformat = textall
Si un code pin de la carte SIM est utilisé, il faut le préciser aussi
pin = XXXX
Après la sauvegarde de vos modification, il faut relancer le service
sudo gammu-smsd restart
Afin de s'assurer que le modem est bien installé et que la configuration a été bien prise en compte, on doit faire un test comme suit:
gammu-smsd-inject TEXT NUMERO -text "MESSAGE"
A noter que VORSur utilise une clef USB (Modem 3G), initialement son utilisation est bloquée avec un seul opérateur et pour laquelle Pierre a réussi à lui redonner sa liberté . Du fait, ce modem peut utiliser n'importe quel opérateur mobile.
Vérification :
Avant de passer aux étapes suivantes, on doit faire le Check-list pour s'assurer du bon fonctionnement de tous les logiciels installés.
Fonctionnement du serveur web :
Tapez l'adresse http://@IP/ depuis un navigateur d'un poste du réseau local où @IP est l'adresse IP du serveur (utiliser la commande ifconfig pour connaître l'adresse IP de l'interface réseau du serveur
Si tout va bien on aura la base web suivante :
Test du fonctionnement du PHP
Tapez le lien http://@ip/test.php depuis le navigateur d'un poste connecté au réseau local.
Si tout va bien, on aura la page suivante :
Motion et diffusion des images en temps réel
Tapez le lien http:[mailto://@ip:8081/ depuis le navigateur d'un poste connecté au réseau local.
Si tout va bien, une image de l'objet, en face de la camera, sera affichée dans le navigateur, probablement, avec un petit décalage (latence) dans le temps qui dépendra de la qualité de la liaison réseau et le temps de traitement de l'image.
Pour le cas de VORSurv :
Test du fonctionnement de gammu-smsd
Depuis la ligne de commande, localement, ou depuis l'interface ssh, lancée depuis un autre poste, envoyez un simple message à un numéro de portable comme suit :
gammu-smsd-inject TEXT NUMERO -text "MESSAGE"
Si tout va bien, le message envoyé sera réceptionné, après quelques secondes ou peut-être plus, tout dépend des opérateurs mobile.. !
Si tous les tests sont concluants, à partir de cette étape on peut commencer la configuration du système et répondre aux exigences du cahier des charges de VORSur
Interfaces GPIO
Afin de satisfaire les conditions du cahier des charges, nous aurons besoin de certaines Entrées/Sorties.
Pour assurer ses fonctionnalités, VORSurv utilise quelques Entrées/ Sorites GPIO du Raspberry pour :
Lire le mode souhaité (Bouton poussoir)
Indiqué le mode de fonctionnement : Local ou Distant (Allumer des Leds rouge & verte)
Acquisition du signal envoyé par le détecteur IR
Actionner le relais de sortie pour allumer le projecteur LED de 20W/220V pour obtenir des images de meilleure qualité
Pour cela, nous allons paramétrer le système afin de pouvoir utiliser ces entrées/sorties en mode ligne de commande. Le lien suivant http://wiringpi.com/download-and-install/ est un site complet qui explique, en détails avec des exemples, l'utilisation des GPIO d'un Raspberry
On commande par l'installation de l'utilitaire git
sudo apt-get install git-core
sudo apt-get install git-core
sudo apt-get install git-core
git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin
cd wiringPi
sudo ./build
A partir de cette étape, il est possible d'utiliser les GPIO de la carte Raspberry pour lire les entrées ou écrire des sorties
Il est conseillé de faire quelques exemples pour bien maitriser l'affectation des pins GPIO qui ne sont pas tous des entrées/sorties et les différentes sources de tension disponibles: 3,3V et 5V
A noter que dans le but de ne pas limiter l’utilisation du Raspberry Pi de VoLAB uniquement à l’application VORSurv, nous avons décidé d’optimiser la conception du système afin permettre la réalisation d’autres applications et de les faire tourner sur le même système.
Parmi les applications déjà identifies pour qu’elles soient installées sur le même Raspberry PI :
VORSms : Une application pour l’envoi des SMS à une liste d’adhérents (depuis un fichier) ou des SMS « prédéfinis » tel que l’ouverture du VoLAB, etc
Architecture du système
Petite mise en jambes
Sans aucun doute, notre génération a beaucoup de chance...
Aujourd’hui, pour quelques euros, nous pouvons avoir un ordinateur de la taille de la carte bancaire, plus puissant qu'un PDP11 utilisé par Ken Thompson et Dennis Ritchie pour développer le langage C,
Remarque: Un PDP 11 avait 24KO: 16KO utilisé par l'Operating System et 8KO à partager entre tous les utilisateurs..!VORSurv utilise un Raspberry, model B, d'une CPU de 700GHz et une RAM de 512MO.
Toutefois, afin de garantir une meilleure disponibilité du système, nous avons opté pour l’utilisation de langages de programmation « basique », non exigeants en terme de ressources CPU, RAM etc ..
La configuration et le paramétrage du système sera fait uniquement en utilisant des scripts shell (bash), les langages AWK, Perl et PHP pour la programmation des interfaces web (Administration du système, accès à distance, etc..).
Dans un souci d’optimisation du temps CPU, le système sera composé d’un ensemble de processus qui s’exécutent en parallèle, en interaction permanente via de simples pipes de communication, fichiers texte, pour échanger et partager l’information des ressources communes.
Tel que décrit dans ce schéma, le concept du système est basé sur un programme principal qui contrôle et synchronise un ensemble de sous-programmes qui s'exécutent d'une manière autonome. En fonction des contenus des différents pipes d'échanges inter-processus (simple fichiers textes partagés dans notre cas) le programme principale prendra la décision qui s'impose en fonction de la situation: allumer le projecteur, générer une alarme, envoyer un SMS, déplacer le contenu du répertoire de travail, etc..
Programme principal
Il s'agit d'un script shell Linux qui initialise les variables, lance les processus et assure leur synchronisation.
############################################################################################################################
# Nom du script : control.sh
# Utilité: le role principal de ce script est d'initialiser des differents variables communes entre les differents pocessus
# et de gerer la synchronisation entre ces processus (voir http://www.vorobotics.com/wiki/index.php?title=VORSurv).
# Aussi, il se charge de l'execution des commandes reçues depuis le web
# Usage: Ce script se lance, en arriere plan, par rc.local lors du demarrage du systeme.
# Auteur: Djamel MEBARKI <djamel_at_vorobotics.com>
# Mise à jour le: 02/02/2016
############################################################################################################################
Il utilise également :
- lan_drive.sh : crée le point de montage pour les images
- status.sh : autre nom : scan GPIO voir ci-dessous
- verif_sms.sh : le role de ce script est d'envoyer les sms
Le rôle du programme principal est de synchroniser les différents processus ainsi que l’exécution des actions suivantes en fonction des conditions prédéfinies :
1 - Allumer le projecteur, sauvegarder les traces sur le serveur sécurisé, indiqué dans les fichiers de configuration et envoyer un message d’alerte intrusion, à tous les membres de VoLAB de la liste si les conditions suivantes sont vérifiées :
- Mode de fonctionnement = Distant
- Mouvement signalé simultanément par Motion et Détecteur IR
2 – Après l’envoi de message d’alerte, maintenir l’alimentation du projecteur pendant toute la durée du mouvement afin d’assurer une meilleure qualité des images
3 – Initialisation des variables et fichiers partagés entre tous les programmes
4 - Gestion de l'espace mémoire utilisé comme répertoire de travail par Motion
Processus 1 : Motion
Motion est un logiciel puissant capable de prendre des images, de les traiter et de signaler tout changement aux différences constatées entre deux prises successives.
L’action est prise en fonction du point de consigne fixé dans le fichier de configuration. Dans notre cas, le nombre de 1500 pixels, valeur par défaut, a été conservé.
Une différence de plus de 1500 pixels entre deux images sera considérée comme un événement à signaler Pour la configuration : voir ici
Fichiers pipe utiles : "/var/www/Log/sms.tmp", "/var/www/Log/log.log", /var/www/Log/mov.txt"
Processus 2 : Scan GPIO
VORSur a été conçu pour un fonctionnement permanent : Les messages d’alerte à envoyer par SMS seront générés et envoyés uniquement pendant les heures de fermeture du VoLAB si le mode Distant est activé.
Afin de déterminer le mode sélectionné, le système est équipé d’un bouton poussoir qui permet de sélectionner le mode de fonctionnement : Si le bouton poussoir , connecté aux entrées GPIO du Raspberry, est actionné pendant une période de 3 secondes, le système bascule d’un mode de fonctionnement à l’autre (Local vers Distant ou Distant vers Local).
Un bouton poussoir est raccordé à l'une des pins du GPIO du Raspberry scannée en permanenece par le script pour informer le programme principal de tout éventuel changement d'état.
Le programme Scan GPIO s’exécute en permanence pour surveiller la position du bouton poussoir et mettre à jour le fichier « mode.txt » en fonction du mode sélectionné.
Si le mode Local est sélectionné, le système désactive l’envoi de message d’alerte et un témoin est allumé pour attirer l’attention.
Cette Led verte est l'une des pins GPIO déclarée comme sortie et raccordée à travers une petite résistance comme illustré dans le schéma suivant:
A noter que la sélection du mode de fonctionnement du système se fait soit manuellement par l’utilisation du bouton poussoir, décrit ci-dessus, ou via l’interface web protégée par un mot de passe réservée uniquement aux personnes autorisées (décrite plus loin).
Sensibilité de VORSurv
L'une des premières difficultés rencontrée lors de la réalisation du système est sa sensibilité: Comme l’entrée
principale du VoLAB se trouve du coté de la façade vitrée, tout mouvement ou passage à proximité de l’entrée principale, coté extérieur, a été signalé par le système.
Plusieurs messages d'alertes ont été envoyés très tôt ou durant la nuit dès qu'un passage devant la porte est détecté.
Solution
Pour palier à ce problème de fausse détection d'intrusion, un détecteur Infra-Rouge a été installé. Comme les rayons IR ne traversent pas la vitre, ce capteur ne détecte que les intrusions réelles. Un mouvement détecté ne peut être déclaré comme intrusion que s'il est signalé par les deux systèmes en même temps (Motion ET capture infra-rouge).
Le détecteur infra rouge a été installé et connecté à l’une des entrées GPIO du Raspberry PI qui sera scannée en permanence par le programme principal du système.
Seulement la sortie TOR du module a été raccordée à l’une des entrées GPIO du raspberry PI après un ajustement manuel pour limiter la sensibilité du détecteur en fonction de la distance de proximité.
La génération d’une alerte se fait uniquement dans le cas où le mouvement détecté est signalé par les deux systèmes au même temps : Motion & Détecteur infrarouges
L'acquisition du signal du capteur de mouvement InfraRouge se fait via l'une des pin GPIO selon le principe suivant:
Le signal Data a été raccordé à l'une des entrées/sorties GPIO qui sera scrutée en permanence par le programme principal
Le programme Scan GPIO surveille en permanence les entrées GPIO et mis à jour les deux fichiers suivants :
- mode.txt : Msie à jour en cas de changement de mode via le bouton poussoir
- mouv.txt : Mise à jour en cas de mouvement détecté par le système infrarouges
Ces deux fichiers sont utilisés aussi par d’autres processus pour décider l’action à prendre en fonction de la situation comme suit :
A - Mouvement signalé par Motion seulement
Actions :
Sauvegarder l’image
Envoi via ftp
Mise à jour du fichier VORSur.log
B - Mouvement signalé par Motion et le détecteur d’infrarouges
Actions :
Allumer le projecteur pour avoir une image de meilleure qualité
Sauvegarder l’image
Envoi via ftp
Mise à jour du fichier mouv.txt
Mise à jour du fichier VORSur.log
Génération d’une alerte et mise à jour du fichier SMS. A noter que l’envoi de SMS sera décidé par le programme principal en fonction de d’autres conditions, principalement, la position actuelle ou le mode de fonctionnement sélectionné par l’administrateur système via l’interface web
Pour des raisons pratiques, pour éviter le réglage du position du caméra lors d'utilisation du bouton de changement de mode de fonctionnement ainsi pour faciliter l'orientation du détecteur de mouvement, une partie de VORSurv a été assemblé dans un deuxième boitier avec une liaison d'extension utilisant un cable DB9 récupéré.
Physiquement, la liaison entre les deux boîtiers a été réalisée en utilisant un câble RS232 pour avoir plus de souplesse lors de la fixation des boîtiers et les tests de mise au point.
Aussi, nous avons préparé une extension qui sera dévoilée dans l'un de nos prochains articles ... A suivre ..!
Qualité d’image
Comme nous utilisons un simple module de camera RPI (voir photo), dans le souci d'avoir des images de meuilleure quality, un projecteur LED 220V d'une puissance de 20W est raccordé au système. Il sera commandé par l'une des sortie GPIO du système via un relais électomécanique qui sera actionnée par le programme principal si les conditions sont vérifiées.
Le montage suivant a été réalisé pour actionner ce projecteur :
Le montage a été réalisé selon le schéma de principe suivant :
Remarque: Nous avons adapté le montage en utilisant un relais qui possède deux sorties au lieu d'une pour éviter tout risque lors de câblage du câble 230VAc Le montage final est le suivant:
Rappel
Attention: Tension 230VAc!!!
Si vous comptez réaliser ce montage, par vous même, il faut faire très attention au risque électrocution lors de vos tests
Vérifiez bien qu'il n'y a pas de court-circuit ou de retour vers les pins GPIO de la carte Raspberry
Interface web de configuration et de paramétrage
Pour la gestion du mode de fonctionnement ainsi que la diffusion des images en temps réel nous avons développé nos propres interfaces, très simples et pratiques, en utilisant le langage PHP avec des scripts shell intégrant des commandes Awk pour effectuer quelques opérations de recherches, comparaison et remplacement dans des fichiers textes.
Remarque: la même tâche peut être accomplie grâce aux boutons des faces avant de l'unité principale ou de l'extension. Un appuie de 3s au moins est nécessaire pour changer de mode. Pendant l'appuie la LED rouge est allumée. Laisser le doigt appuyé jusqu'à ce que la LED verte change. LED verte allumé = mode local, LED verte éteinte mode distant (démarre réellement dès que l'opérateur quitte la zone de détection).
Bonnus !!
Initialement, l'interface d'envoi de SMS (VORSms) ne fait pas partie du cahier des charges de VORSurv. Durant la phase test, nous avons développé cette interface pour l'envoi de SMS qui offre les trois possibilités suivantes pour envoyer un ou des SMS
- Envoi individuel : Un numéro de portable et le message à envoyer seront demandés
- Envoi groupé: Le Message à envoyer ainsi que le chemin du fichier textes contenant la liste des portables de destinataires seront demandés
- Envoi d'un message prédéfinie: Fonctionnalité propre à VoLAB
Le sujet fera l'objet d'un autre article. Si le sujet vous intéresse envoyer moi un petit email
Conception et fabrication des boîtiers:
Au début, l'exercice était très difficile, pour la simple raison, personnellement, je n'avais aucune expérience dans le monde de la CAD et l'impression 3D.
Grace à un super tuto du wiki de l'association, qui se trouver à l'adresse suivante :
Et une excellente vidéo « Made in VoLAB » , qui se trouve sur la chaine du VoLAB que je recommande fortement à tous les débutants dans ce domaine: https://www.youtube.com/watch?v=X2Ydloyc3xM
Et avec l'aide de Pierre et Joël, j'ai réussi à réaliser mes premières impressions des deux boîtiers celui de la caméra et du détecteur IR et le bouton de sélection du mode de fonctionnement en utilisant l'imprimante 3D du VoLAB
J'ai utilisé le logiciel FreeCad téléchargeable depuis le lien suivant: http://www.freecadweb.org/wiki/?title=Download/fr
Performances
Ressources: CPU & RAM
Après plusieurs jours de fonctionnement permanent, VORSur exploite peu de ressources du système du Raspberry ce qui va nous permettre de le faire cohabiter avec d'autres nouveaux projets.
En plein traitement, l'ensemble des programmes de VORSur occupe 15 % des ressources CPU et moins de 110MOctet de RAM de la carte Raspberry
Durée de vie de la carte SD :
La durée de vie d'une carte SD est limitée en fonction des nombres d'écritures. Pour garantir une longue durée de vie, la conception de VORSurv tient compte de ce paramètre :
Le répertoire de travail, utilisé par le logiciel Motion pour effectuer le traitement des images, en temps réel, est monté dans une partie de la mémoire vive. Un gain de temps d'accès considérable constaté lors de nos tests.
Comme indiqué dans cette image, le répertoire /var/www/Images est monté dans « tmpfs » une partie de la mémoire vive du Raspberry. Le programme principal contrôle le volume de cette partie, dès l'atteint d'un volume indiqué dans les paramètres de configuration, le programme principal vide cette partie de la mémoire en transférant les images vers le NAS.
En cas d'intrusion détectée, les images seront envoyée aussi vers un autre serveur sécurisé.
Pour pouvoir effectuer ce genre de manipulation, il faut éditer le fichier « fstab », comme suit, pour indiquer au système d'utiliser une partie de sa RAM pour un répertoire ordinaire.
Attention : Pour effectuer ce genre de manipulations, il faut faire très attention, car une erreur de frappe ou un caractère en plus qui traîne dans ce fichier, risque de bloquer votre complètement votre système sans pouvoir le redémarrer. Pensez à faire une sauvegarde de l'image de votre carte SD.
Conclusion
C'est une petite belle expérience que je recommande fortement à tous les nouveaux et les anciens adhérents . Il reste plusieurs items dans la liste des projets du VoLAB.
Nous allons mettre en ligne les programmes sources, pour téléchargement libre, exceptés quelques fichiers contenant des paramètres sensibles.
Pour toute demande de renseignement sur le fonctionnement du VoLAB, envoyez votre email à contact@vorobotics.com
Pour une question ou un commentaire concernant ce sujet, envoyez votre email à djamel@vorobotics.com
Fichiers sources
Licence
Ce document est mis à disposition selon les termes de la Licence Creative Commons Attribution 4.0 International.
Paternité 'by' :L'œuvre peut être librement utilisée, à la condition de l'attribuer à l'auteur en citant son nom.
Note aux auteurs de documents du VoLAB, Vous avez la possibilité de changer de licence. Mais ce serait bien de rester libre et ouvert. Encore une fois ceci est une recommandation et pas une obligation.
Bibliographie
webographie
http://fr.wikipedia.org/wiki/Licence_Creative_Commons
http://wiringpi.com/download-and-install/
Rédaction en langue française
Partant du constat de terrain qu'une énorme masse d'information concernant les sujets qui nous intéressent comme entre autres l'impression 3D n'étaient disponibles que dans la langue de Shakespeare et que de nombreuses personnes dans notre entourage ne maîtrisaient pas la dite langue et soucieux de diffuser encore plus l'information, nous avons pris le parti, au VoLAB, de rédiger nos documents de préférence en langue française.
VoLAB
Un mot sur le VoLAB. VoLAB est un fablab implanté à environ 30km au nord-ouest de Paris dans la commune de Vauréal dans l'agglomération de Cergy Pontoise. Il est animé par l'association VoRoBoTics.
Site internet www.vorobotics.com