Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Département Physique
Réalisé par :
Ouni Houssem Ben Othman Mohamed
Classe : IE4
Abstract
Our project revolves around facial recognition using artificial intelligence and the
Internet of Things.
ملخص
.مشروعنا يتمحور حول التعرف على الوجوه بإستعمال الذكاء اإلصطناعي و انترنات األشياء
Table De Matière
Introduction Générale ............................................................................................................. 1
Chapitre1 : Les Systèmes Biométriques
1. Introduction: .................................................................................................................... 2
2. Les Systèmes Biométriques ............................................................................................. 3
3. Systèmes biométriques basée sur la réconnaissance des visages .................................... 3
3.1 Principales difficultées de la reconnaissance de visage ................................................... 5
3.2. Variation des Poses .......................................................................................................... 6
3.3. Expression Faciales ......................................................................................................... 6
3.4. Présance ou absencs des composants structurels ............................................................. 6
3.5. Occultations partielles ..................................................................................................... 7
4. Haar Cascade – Detection des visages et d’Objet ........................................................... 7
5. Conclusion ....................................................................................................................... 9
Chapitre2 : Discrption et préparation du système embarquée
1. Introduction: ................................................................................................................. 10
2. Présentation du Raspberry PI ........................................................................................ 10
2.1 Les caractéristiques du Raspberry Pi ............................................................................. 11
2.2 Accessoires de Raspberry Pi.......................................................................................... 12
2.3 Vue d’ensemble ............................................................................................................. 12
2.4. Domaine d’utilisation .................................................................................................... 12
2.5. Connecteurs et ports disponibles ................................................................................... 13
3. Unix .............................................................................................................................. 14
3.1. Raspbian ....................................................................................................................... 16
3.2. Raspbian Stretch ........................................................................................................... 16
3.3. Unstallation et démarage de système ............................................................................ 17
3.4. Prendre le controlle de Raspberry PI ............................................................................ 17
3.5 SecureSHell .................................................................................................................. 17
3.6 Virtual Network Computing ......................................................................................... 19
4. Python ........................................................................................................................... 20
4.1 Point fort de Language ................................................................................................. 21
4.2 Programmation des entrées sorties avec Python........................................................... 21
4.3 Bibliothéques utilisées .................................................................................................. 22
5. Ngrok .............................................................................................................................. 25
6. Apache ............................................................................................................................ 27
7. Conclusion ....................................................................................................................... 16
Chapitre3 : Conception et Prototype
1. Introduction ...................................................................................................................... 29
2. Conception ........................................................................................................................ 29
2.1 Composantes ................................................................................................................... 29
2.2 Servomoteur .................................................................................................................... 29
2.3 Buzzer.............................................................................................................................. 32
2.4 Webcam ........................................................................................................................... 32
2.5 Les Leds .......................................................................................................................... 33
3. Branchement ...................................................................................................................... 34
4. Réalisation Réelle .............................................................................................................. 35
Listes de figures
Figure 1: Caractéristiques biométriques ..................................................................................... 2
Figure 2:Les étapes de la reconnaissance de visage ................................................................... 4
Figure 3:Exemple de variation d’éclairage................................................................................. 5
Figure 4:Exemples de variation de poses ................................................................................... 6
Figure 5:Exemples de variation .................................................................................................. 6
Figure 6:Raspberry pi 3 Model B+........................................................................................... 10
Figure 7: Emplacement des différents composants du Raspberry Pi 3 Modèle B+ ................. 12
Figure 8:Ports GPIO ................................................................................................................. 14
Figure 9: Menu NOOBS........................................................................................................... 15
Figure 10:Raspberry Pi + Debian = Raspbian .......................................................................... 16
Figure 11: Fond d’écran Raspbian ........................................................................................... 16
Figure 12: Activer SSH ............................................................................................................ 18
Figure 13: Interface PuTTY ..................................................................................................... 19
Figure 14: Interface VNC ......................................................................................................... 20
Figure 15: Logo officiel de Python .......................................................................................... 21
Figure 16: Flask Framework Icone .......................................................................................... 22
Figure 17: Open CV icone........................................................................................................ 24
Figure 18: Logo apach .............................................................................................................. 28
Figure 19.1: Un Servomoteur ................................................................................................... 30
Figure 19.2: Un train d’impulsions de période 20ms ............................................................... 30
Figure 20: Rotation du servomoteur ......................................................................................... 31
Figure 21: Dimensions géométrique du servomoteur .............................................................. 31
Figure 22:Les Portes servomoteur ............................................................................................ 32
Figure 23: Un buzzer piézoélectrique ...................................................................................... 32
Figure 24: Webcam Raspberry Pi ............................................................................................ 33
Figure 25: LED ......................................................................................................................... 33
Figure 26: Schéma électrique d’une LED ................................................................................ 34
Figure 27: Schéma électrique du prototype .............................................................................. 34
Introduction Générale
Tout comme notre vie en général, nos maisons se trouvent de plus en plus technologistes. Les
habitats du futur répondent à une probable insatisfaction innée de l’homme qui croit augmenter
son pouvoir sur les choses par la technique. On voit donc que sa maison « s’adapte » à lui et à
ses besoins. Au même titre que nous gérons notre budget, organisons notre temps et nos
activités, que nous profitons des équipements perfectionnés de notre voiture (fermeture
centralisée, climatisation...), la domotique nous offre la possibilité d'opter pour une maison qui
s'adaptera à notre rythme de vie et à nos habitudes, eux-mêmes évolutifs au fil des années.
Avec les nouvelles technologies domotiques, l’homme peut quitter son domicile pour le week-
end et, avant de fermer la porte, appuyer sur un seul bouton pour éteindre les éclairages oubliés,
mettre le chauffage en mode "économie", fermer les volets roulants, mettre en service
l'alarme...
Problématique
Avec l’augmentation du nombre d’habitants et la propagation du phénomène du vol, notamment
le vol de maisons, la maison intelligente ne remplit pas sa fonction si elle n’est pas protégée.
Solution
La solution apparait avec des algorithmes implémentés sur un système embarqué qui permet
d’identifier les visages au moyen de l’intelligence artificielle.
1
Chapitre 1 : Les systèmes biométriques
1. Introduction
« La biométrie s'applique à des particularités ou des caractères humains uniques en leur genre
et mesurables, permettant de reconnaître ou de vérifier automatiquement l'identité ».
Les systèmes biométriques sont de plus en plus utilisés depuis quelques années. L’apparition
de l’ordinateur et sa capacité à traiter et à stocker les données ont permis la création des
systèmes biométriques informatisés. Il existe plusieurs caractéristiques physiques uniques pour
un individu, ce qui explique la diversité des systèmes appliquant la biométrie, selon que l’on
prend en compte :
L’empreinte digitale
La géométrie de la main
La rétine
Le visage
La reconnaissance vocale
L’ADN
Figure 1: Caractéristiques biométriques
2
2. Les systèmes biométriques
Un système biométrique est essentiellement un système de reconnaissance de formes qui utilise
les données biométriques d'un individu. Selon le contexte de l’application, un système
biométrique peut fonctionner en mode d’enrôlement ou en mode de vérification ou bien en
mode d'identification :
Le mode d’enrôlement : est une phase d’apprentissage qui a pour but de recueillir des
informations biométriques sur les personnes à identifier.
Plusieurs campagnes d’acquisitions de données peuvent être réalisées afin d’assurer une
certaine robustesse au système de reconnaissance aux variations temporelles des données.
Pendant cette phase, les caractéristiques biométriques des individus sont saisies par un capteur
biométrique, puis représentées sous forme numérique (signatures), et enfin stockées dans la
base de données. Le traitement lié à l’enrôlement n’a pas de contrainte de temps, puisqu’il
s’effectue « hors-ligne ».
Le mode de vérification ou authentification : est une comparaison "un à un", dans lequel le
système valide l'identité d'une personne en comparant les données biométriques saisie avec le
modèle biométrique de cette personne stockée dans la base de données du système.
Le mode d'identification : est une comparaison "un à N", dans lequel le système reconnaît un
individu en l’appariant avec un des modèles de la base de données. La personne peut ne pas
être dans la base de données.
Certaines techniques de traitements d’images peuvent être communes à plusieurs étapes. Par
exemple, l’extraction des caractéristiques faciales (yeux, nez, bouche) est utilisée aussi bien
pour la détection que pour l’identification de visages. Par ailleurs, les étapes de détection de
visage et d'extraction de caractéristiques peuvent être exécutées simultanément. Cela dépend
notamment de la nature de l'application, de la taille de la base d‘apprentissage, et des conditions
3
de prise de vue (bruit, occultation, etc.). Enfin, les techniques de traitement utilisées dans
chaque étape sont très critiques pour les applications biométriques, et doivent, par conséquence,
être optimisées pour améliorer les performances du système global.
4
▪ La pose :
Les caractéristiques faciales tels que la barbe, la moustache, et les lunettes causent une
grande variabilité des composantes structurales du visage, notamment au niveau de la
forme, de la couleur, et de la taille.
▪ Les occultations :
Les visages peuvent être partiellement occultés par d'autres objets. En effet, dans une image
contenant un groupe de personnes par exemple, des visages peuvent partiellement masquer
d'autres visages.
Des facteurs tels que l'éclairage (distribution de la source de lumière, son intensité, son spectre) ,
et les caractéristiques de l’appareil photographique affectent l'aspect d'un visage dans l’image
acquise.
o Changement d’illumination
L’apparence d’un visage dans une image varie énormément en fonction de l’illumination de la
scène lors de la prise de vue. Les variations d’éclairage rendent la tâche de reconnaissance de
visage très difficile. En effet, le changement d’apparence d’un visage du à l'illumination, se
révèle parfois plus critique que la différence physique entre les individus, et peut entraîner une
mauvaise classification des images d'entrée.
5
3.2. Variation de pose
La variation de pose est considérée comme un problème majeur pour les systèmes de
reconnaissance faciale. Quand le visage est de profil dans le plan image (orientation < 30°), il
peut être normalisé en détectant au moins deux traits faciaux (passant par les yeux). Cependant,
lorsque la rotation est supérieure à 30°, la normalisation géométrique n'est plus possible.
6
3.5. Occultations partielles
Le visage peut être partiellement masqué par des objets dans la scène, ou par le port d’accessoire
tels que lunettes, écharpe... Dans le contexte de la biométrie, les systèmes proposés doivent être
non intrusifs c’est-à-dire qu’on ne doit pas compter sur une coopération active du sujet.
À la fin de cet article, vous saurez comment la méthode des cascades de Haar fonctionne, mais
aussi comment l'implémenter à l'aide de la librairie Opencv en python. La méthode des cascades
de Haar a été proposée en 2001 dans un article de recherche intitulé "Rapid Object Detection
using a boosted cascade of simple feature" par Paul Viola et Michael Jones. Elle est rapidement
devenue célèbre, car en plus d'obtenir un taux de succès relativement élevé sur un Jeu de
données difficiles "MIT+CMU Dataset", elle était 15 fois plus rapide que les autres méthodes
de détection de visage à l'époque. Bien que la méthode avait été spécialement conçue pour
détecter des visages, la communauté s'est rapidement rendu compte que la méthode s'appliquait
aux autres membres du corps, aux objets, et de manière générale à tout type d'image.
Pour pouvoir utiliser les cascades de Haar, il faut dans un premier temps constituer un jeu de
données composé d'images contenant uniquement et ne contenant pas l'image de l'objet que
vous souhaitez détecter. Les recommandations vous construisez ce jeu reste bien entendu les
mêmes que pour toute application de reconnaissance d'image :
Les images doivent être proches visuellement de ce que vous souhaitez détecter
7
Il faut une certaine quantité d'exemples non négligeable
Une fois la base d'images constituée la seconde étape consiste à extraire les caractéristiques
définies pas Viola et Jones dans leurs articles. Les cascades de Haar créent les caractéristiques
qu'il utilise en appliquant sur l'image un filtre carré de 24x24. Il s'agit des filtres présentés sur
l'image ci-dessous. Les caractéristiques sont obtenues en soustrayant la somme des pixels de
l'image couverts par la zone blanche du filtre à la somme des pixels couverts par la zone
bleue. Ce processus génère énormément de caractéristiques étant donné que le filtre est
appliqué sur toute l'image. Viola et Jones évoquent un nombre de caractéristiques supérieur à
180 000 dans leur article pour une image de 384 par 288.
Entraînement du classifieur
Pour des raisons de performance, Viola et Jones ont choisi d'utiliser le classifieur
AdaBoost (Adaptive Boosting) pour le détecteur de Haar. Comparativement aux autres
classifieur, ce classifieur présente l'avantage d'avoir une bonne vitesse d'exécution pour
l'application qui en est faite tout en conservant un taux de reconnaissance haut.
Le principe d'Adaboost est d'entraîner un grand nombre d'arbres de décision à un niveau. Ces
arbres sont connus sous le nom de "decision stump" qui signifie moignon de décision en
français. Chose plutôt drôle, car dans le dictionnaire moignon à deux significations :
"Extrémité d'un membre amputé." ou Ce qui reste d'une grosse branche cassée ou coupée.".
Quoi qu'il en soit, vous l'aurez compris l'idée consiste à ne garder que le haut de l'arbre, la
racine et deux branches.
L'idée derrière adaboost est de combiné de faible classifieur afin d'en obtenir un fort. Les
classifieurs votent à la fin, le poids de chaque classifieur dépend de sa performance lors de
l'apprentissage. Chaque classifieur est entraîné en utilisant un sous-ensemble du jeu de
8
données totales Adaboost assigne un poids à chaque exemple mal classé après chaque
entraînement. Les exemples mal classifiés ont un plus gros poids. Donc ils apparaissent plus
souvent dans le sous-ensemble de données du classifieur suivant.
1. L'utilisation d'un comité d'experts spécialistes que l'on fait voter pour atteindre une
décision.
Après entraînement du classifieur sur les 180 000 caractéristiques extraites seulement 6000
ont été retenues, et le classifieur a 38 niveaux.
• La phase de détection
Une fois entraînés, nous pouvons passer à la phase de détection. Seulement comme ce
processus de calcule prends énormément de temps des images intégrales sont calculée afin
d'accélérer le temps de calcul.
5. Conclusion
Dans ce chapitre, nous avons présenté les technologies utilisées dans les systèmes biométriques
pour l’identification de personnes. Nous avons aussi donné un aperçu sur les techniques de
mesure de leurs performances. Cette étude nous a permis de constater que la reconnaissance de
visage suscite de plus en plus l’intérêt de la communauté scientifique, car elle présente plusieurs
challenges et verrous technologiques.
9
CHAPITRE2 : Description et
préparation du système embarqué
1. Introduction
Un système embarqué est un système électronique et informatique qui se trouve au sein d'un
produit plus large. Son but premier consiste à traiter de l'information reçue depuis son
environnement pour en faire profiter le produit hôte qui l'héberge.
2. Présentation du Raspberry Pi
La Raspberry est une carte mère d’un mini-ordinateur qui peut être branchée à n’importe
quel périphérique (souris, clavier...). Cette carte est fabriquée pour aider à étudier les
ordinateurs et pour représenter un moyen d’apprentissage de la programmation informatique
en plusieurs langages (python, scratch...). Elle est aussi capable de lire les vidéos à haute
définition et même à installer des jeux vidéo. L’intérêt d’utiliser le Raspberry Pi est sa
capacité d’interaction avec le monde extérieur et d’exécuter plusieurs variantes du système
d’exploitation libre (GNU/Linux, Raspbian Debian ...) et des autres logiciels compatibles.
10
1.1. Les Caractéristiques Du Raspberry Pi
Le Raspberry Pi est un nano-ordinateur de la taille, grosso modo, d’une carte de crédit. Ce qui
est impressionnant, ce sont ses caractéristiques. Sur un petit bout de carte électronique, il y a un
:
— Processeur ARM Cortex A-53 quatre cœurs de 64-bit cadencé à 1,2 Ghz
— 1 Go de RAM (SDRAM)
— Un contrôleur vidéo Broadcom VideoCore IV
— 4 ports USB 2.0
— Un port HDMI
— Un connecteur Jack 3,5 mm / sortie composite
— Une prise Ethernet 10 / 100 Mbps
— WIFI 802.11n
— Bluetooth 4.1
— Bluetooth Low Energy (BLE)
— 40 pins GPIO
— Une interface de caméra (CSI)
— Une interface d’affichage (DSI)
— Un emplacement de carte micro SD
— Alimentation 5V par micro USB
La figure qui suit inventorie les différentes parties d’un Raspberry Pi 3 modèle B,
11
Figure 7: Emplacement des différents composants du Raspberry Pi 3 Modèle B+
Alimentation
La Raspberry Pi s’alimente sous tension unique de 5 volts, tension sur laquelle il peut
consommer jusqu’à 1.8A selon les taches qu’il exécute. Cette alimentation doit être
normalement fournie via le connecteur micro USB place dans un angle de la carte.
En effet, l’utilisation d’un chargeur pour Smartphone équipé d’un micro USB qui délivre une
tension de 5 volts avec au minimum 1.8A est suffisante pour alimenter notre Raspberry Pi.
Carte microSD
Au niveau de la taille, Raspbian étant très léger, il n’y a pas besoin d’une très grosse carte
SD. 4Go suffisent, mais 16 Go sont préférables, afin d’avoir un peu de marge. Pour notre part
on a choisi une capacité de 8Go pour notre projet.
12
1.3. Vus d’ensemble :
En réalité, et même si par abus de langage on parle du processeur qui équipe le Raspberry
pi, il s’agit en fait de ce que l’on nomme aujourd’hui un SoC qui est l’acronyme de system on
chip soit, mot à mot système sur une puce. Si vous savez ce qu’est un microcontrôleur, vous
pouvez très bien considérer qu’un SoC n’est rien d’autre qu’un « gros » microcontrôleur .
2. GPIO : est l’acronyme anglais de "General Purpose Input Output" ce que l’on traduirait
pas Entrée/sortie pour usage général. Le connecteur GPIO dispose actuellement de
différents type de connexions. Elles sont :
— De vraies broches GPIO (General Purpose Input Output) avec lesquels vous pouvez
allumer/éteindre des LED, etc.
— Des broches pour une interface I2C qui permet de se connecter sur du matériel
en utilisant uniquement 2 broches/pins de contrôle.
— Une interface SP pour les périphériques SPI, a concept similaire à I2 avec un
standard différent.
— Les broches Rx et Tx pour la communication avec les périphériques séries.
De plus, certaines broches peuvent être utilisé en :
— PWM (acronyme de "Pulse Width Modulation" pour modulation de largeur
d’impulsion) permettant le contrôle de puissance
— PPM (acronyme de "Pulse Position Modulation" pour modulation positionnelle
d’impulsion) permettant de contrôler des servos moteurs.
13
Figure 8:Ports GPIO
Port USB 2.0 : Le port « Universal Serial Bus » est un port série qui sert à connecter le
Raspberry aux autres périphériques, et il y a 4 ports USB. Le Raspberry Pi fonctionne avec
pratiquement n’importe quels claviers et souris USB. Vous pouvez aussi utiliser la plupart
des claviers et des souris sans fil (ceux qui marchent avec un ongle que l’on branche sur un
port USB).
3. LINUX
Un ordinateur standard fonctionne avec un système d’exploitation comme Windows,
OS X ou Linux. C’est ce système qui démarre quand vous allumez votre machine et qui fournit
à vos logiciels un accès aux fonctionnalités matérielles de votre ordinateur. Par exemple, si vous
codez une application qui utilise Internet, vous pouvez, pour ce faire, utiliser les fonctions
fournies par le système d’exploitation. Vous n’avez pas besoin de comprendre et d’écrire du
code pour chaque modèle d’interface Ethernet ou Wi-Fi disponible.
14
Comme tous les autres ordinateurs, le Raspberry Pi utilise un système d’exploitation. Celui
fourni par défaut est une version de GNU/Linux appelée Raspbian qui est idéal pour l’esprit de
partage qui règne au sein de la la communauté Raspberry Pi car il est libre et open source. Ce
logiciel à été écrit dans le cadre d’un projet communautaire pour ceux qui recherchent une
alternative au monopole de Micrrosoft Windows et d’Apple OS X.
Linux est un système d’exploitation Open Source. C’est un système d’exploitation complet,
basé sur les mêmes concepts robuste d’UNIX qui est apparu au début de l’informatique. il a de
nombreux partisans fidèles et serviable et s’est transformer en un système d’exploitation
puissant et facile à utiliser.
Bien que le système d’exploitation s’appelle Linux, plusieurs distribution (appelées aussi
distros) Linux différentes on été produites. celles-ci comprennent le même système
d’exploitation de base,mais sont livrées avec des applications ou de systèmes de fenêtrage
différents. Bien qu’il existe de nombreuses distributions, C’est la Rasbian qui est recommandée
par la Fondation Rasberry Pi.
• Comment ça marche ?
Il nous suffit alors de cocher les systèmes que nous souhaitons installer puis de cliquer sur
« Install ». Au bout de quelques minutes, tout est installé et dès lors nous pouvons profiter de
notre machine!
15
3.1 Raspbian
Raspbian est un système d’exploitation GNU/Linux spécialement conçu et optimisé pour le
Raspberry Pi.
Caractéristiques
Raspbian est un mot-valise formé par la fusion des mots "Raspberry Pi" et "Debian".
Il s’agit d’une modification de Debian spécifiquement adaptée pour les systèmes sur une
puce de type ARMv6.
16
3.3. Installation et démarrage du système
Dans un premier temps nous aurons besoin de plusieurs choses. Tout d’abord, d’une carte
microSD avec raspbian gravé dessus (Les étapes sont décrites dans la sous-section , page , qui
fait référence à NOOBS). Par ailleurs il nous faudra également un clavier pour votre Raspberry
Pi, et enfin un écran.
Suivez ces étapes pour démarrer votre Raspberry Pi pour la première fois.
— Insérez la carte SD dans son support.
— Branchez un clavier USB et une souris au Raspberry Pi.
— Connectez la sortie HDMI à votre téléviseur ou moniteur.
— Branchez l’alimentation du Pi.
SSH permet de se connecter à distance sur une machine en utilisant un compte utilisateur
de la dite machine. Pour se faire nous allons dans ce qui suit activer SSH dans notre Raspberry
Pi et installer un client SSH dans notre ordinateur.
Activer SSH
Par défaut, SSH est installé sur la Raspberry Pi, mais est désactivé pour des raisons de
sécurité. La première chose à faire sera donc d’activer SSH sur votre Raspberry Pi.
Procédure :
17
3. Saisir la commande "sudo raspi-config" puis valider.
Installer le client SSH sur Linux Si vous êtes sous Linux, Pour installer un client SSH, rien
de plus simple, il vous suffit de lancer la commande suivante :
Installer le client SSH pour Windows Étant donné que notre ordinateur fonctionne avec
Windows, La solution qui nous est proposée c’est d’installer le logiciel nommé Putty.
Développé à l’origine par Simon Tatham pour la plate-forme Windows. PuTTY est un
logiciel open source disponible avec le code source et développé et pris en charge par un groupe
de volontaires.
18
Ce programme permet de se connecter à distance à des serveurs en utilisant les protocoles SSH,
Telnet.
Le gros intérêt de VNC, c’est qu’il permet de prendre le contrôle d’une machine distante,
tout en affichant le bureau de celle-ci. Nous pouvons donc voir en temps réel ce qui se passe
sur votre Raspberry Pi, sans pour autant avoir besoin de la brancher sur un écran.
19
Figure 14: Interface VNC
4. Python :
Nous verrons dans les chapitres qui suivent qu’il est possible de relier ces lignes à une
multitude de composants externes, capteurs, actionneurs ...etc, mais pour faire fonctionner tous
ces éléments, il faudra écrire des programmes spécifiques qui seront écrit en Python. Pourquoi
Python et pas un autre langage comme Java, C, C++, Basic, tous plus connus au moins du
grand public ?
Pour au moins quatre raisons :
— Python est un langage facile à apprendre par qui n’a jamais programmé. La syntaxe de
Python est très simple et, combinée à des types de données évolués (listes,
dictionnaires,), conduit à des programmes à la fois très compacts et très lisibles. A
fonctionnalités égales, un programme Python (abondamment commenté et présenté
selon les canons standards) est souvent de 3 à 5 fois plus court qu’un programme C ou
C++ (ou même Java) équivalent, ce qui représente en général un temps de
développement de 5 à 10 fois plus court et une facilité de maintenance largement accrue.
— De nombreuses bibliothèques sont disponibles sur internet pour piloter les lignes
d’entrées/sorties du Raspberry Pi en Python.
20
Figure 15: Logo officiel de Python
Les broches marquées GPIO peuvent être utilisées comme broches d’entrée / sortie. En
d’autres termes, n’importe quelle broche peut être programmée comme une entrée ou une sortie.
Dans ce sens on va utiliser plusieurs langages de programmation capable de contrôler ces
broches comme le C, Java, Bash... mais dans notre projet on a opté pour le python pour contrôler
ces broches.
Le module GPIO est installé par défaut sur les versions les plus récentes de la distribution
Raspbian Linux. Mais pour les versions plus anciennes, on doit probablement l’installer et
effectuer une mise à jour. Pour cela on exécute la commande suivante :
21
"sudo apt-get update"
❖ Flask Frameware :
Flask est un micro Framework open-source de développement web en python. Il a pour objectif
de garder un noyau simple mais extensible. Il n’intègre pas de système d’authentification, pas
de couche d’abstraction de base de données, ni d’outil de validation de formulaires. Cependant,
de nombreuses extensions permettent d’ajouter facilement des fonctionnalités. Il est distribué
sous licence BSD.
• Domaines d’utilisations
Dans un flask, les itinéraires d’application sont créés pour lier différentes sections d’une
application web. Ces itinéraires peuvent accepter les données envoyées à l’aide des méthodes
d’objet de demande appropriées. Par défaut, la méthode GET est utilisée, mais vous pouvez
utiliser la méthode POST en la mentionnant dans le décorateur d’itinéraire dans l’argument
methods. Nous discuterons comment et où utiliser les méthodes get et post de demande Flask.
La méthode HTTP get envoie des données non chiffrées au script cible via l’URL pour
traitement. La syntaxe du décorateur d’itinéraire pour utiliser la méthode get est :
22
@(instance d’objet de l’application Flask).route('url à définir de la page à lier',
methods=['GET'])
Lorsque flask request get est utilisé, les données de formulaire sont transmises au script
demandé dans l’action de formulaire via l’URL en tant qu’arguments. Les données sont
collectées à partir du formulaire et envoyées avec l’URL sous forme de paires paramètre/valeur.
Ces valeurs sont accessibles dans le script demandé en utilisant request.args et en passant les
noms du paramètre. La syntaxe est :
Variable-name= request.args.get(‘form-parameter-name’)
Application.py
Index .html
Open CV (pour Open Computer Vision) est une bibliothèque graphique libre, initialement
développée par Intel, spécialisée dans le traitement d'images en temps réel. La société
de robotique Willow Garage et la société ItSeez se sont succédé au support de cette
23
bibliothèque. Depuis 2016 et le rachat de ItSeez par Intel, le support est de nouveau assuré
par Intel.
• Domaines d’utilisations
• Traitement d'images
• Traitement vidéos
• Algorithmes d'apprentissages
• Calculs Matriciels
•
❖ Numpy :
Numpy est une bibliothèque pour langage de programmation Python, destinée à manipuler
des matrices ou tableaux multidimensionnels ainsi que des fonctions mathématiques opérant
sur ces tableaux.
Plus précisément, cette bibliothèque logicielle libre et open source fournit de multiples
fonctions permettant notamment de créer directement un tableau depuis un fichier ou au
contraire de sauvegarder un tableau dans un fichier, et manipuler des vecteurs, matrices
et polynômes.
❖ Pillow ‘PIL’ :
Pillow est une bibliothèque de traitement d’image, qui est un fork et successeur du
projet PIL (Python Imaging Library). Elle est conçue de manière à offrir un accès rapide aux
données contenues dans une image, et offre un support pour différents formats de fichiers tels
que PPM, PNG, JPEG, GIF, TIFF et BMP.
24
Domaines d’utilisations
• Traitement d'images
• Archivage d’images
• Traitement vidéos
5. Ngrok Cloud :
Ngrok est un outil qui permet de rendre votre poste de développement web local accessible
depuis l’extérieur, via un tunnel sécurisé, depuis une url du type https://azerty.ngrok.io.
Cette url est accessible par n’importe qui (vos clients, vos collègues...) et depuis n’importe où.
De plus, Ngrok prend en charge pour vous les configurations délicates de pare-feu, en
s’occupant d’ouvrir les ports nécessaires, en toute sécurité.
Un des grands avantages est de pouvoir tester les méthodes de paiements. En effet, Ngrok vous
fournit une url accessible de l’extérieur, elle peut donc également être contactée par les PSP.
Conséquence : on peut recevoir les informations sur l’état des paiements sur son projet local et
tester la cinématique complète de paiement et de traitement des commandes.
Autre avantage, l’outil met à disposition une interface qui permet de suivre en direct les requêtes
HTTP faites sur votre url. On peut ainsi vérifier les requêtes et les relancer manuellement autant
de fois qu’on le désire.
• Il faut d’abord télécharger et installer le client sur votre ordinateur (compatible Linux,
Windows et Mac). On trouve le lien sur la page d’accueil après l’inscription.
• Pour la première utilisation, on exécute cette commande avec le token disponible sur
votre compte ngrok. Elle permet de créer la liaison sécurisé avec ngrok.
On peut ensuite démarrer le service ngrok sur le port souhaité à l’aide de la commande suivante
:
On retrouve alors dans le détail de ngrok l’url ouverte pour votre machine locale.
Dans mon exemple l’url est la suivante : http://62e73311.ngrok.io
25
• Il faut attribuer le nom d’hôte à votre adresse IP locale dans votre fichier /etc/hosts :
On configure notre virtual host apache sur le directory du projet visé. On l’ajoute également un
alias pour être tranquille et ne pas avoir à changer le ServerName à chaque redémarrage du
service ngrok.
26
5. Apache :
Spark (ou Apache Spark2) est un Framework open source de calcule distribué . Il s'agit d'un
ensemble d'outils et de composants logiciels structurés selon une architecture définie.
Développé à l’université de Californie à Berkeley par AMPLab, Spark est aujourd'hui un projet
de la fondation Apach. Ce produit est un cadre applicatif de traitements Big data pour effectuer
des analyses complexes à grande échelle.
Spark réalise une lecture des données au niveau du Cluster (grappe de serveurs sur un réseau),
effectue toutes les opérations d'analyse nécessaires, puis écrit les résultats à ce même niveau.
Malgré le fait que les tâches s'écrivent avec les langages Scala, Java et Python, il utilise au
mieux ses capacités avec son langage natif, Scala
Spark exécute la totalité des opérations d'analyse de données en mémoire et en temps réel. Il
s'appuie sur des disques seulement lorsque sa mémoire n'est plus suffisante. À l'inverse, avec
Hadoop les données sont écrites sur le disque après chacune des opérations. Ce travail en
mémoire permet de réduire les temps de latence entre les traitements, ce qui explique une telle
rapidité
Cependant, Spark ne dispose pas de système de gestion de fichier qui lui est propre. Il est
nécessaire de lui en fournir un, par exemple Hadoop Distributed File
System, Informix, Cassandra, OpenStack Swift ou Amazon. Il est conseillé de l'utiliser avec
Hadoop qui reste actuellement la meilleure solution globale de stockage grâce à ses outils
d'administration, de sécurité et de monitoring plus avancés.
27
Figure 18: Logo apach
6.Conclusion
Dans ce chapitre dédié à la présentation du Raspberry Pi, nous avons présenté les divers
composants de cette carte, son utilité spécialement pour notre projet sur la domotique, ensuite
on a vu comment utiliser les broches GPIO pour contrôler les composants électroniques à l’aide
de langage de programmation python.
Dans le chapitre suivant, nous allons expliquer notre projet pratique qui est la réalisation
d’un prototype d’une maison intelligente via une page web.
28
Chapitre 3 : Conception du Prototype
1. Introduction
Des que l’on souhaite automatiser une application avec un micro-ordinateur ou un micro
contrôleur on s’aperçoit bien vite qu’il passe le plus claire de son temps à communiquer avec
le monde extérieur par le biais de ce que l’on désigne sous le nom générique d’Entrées/Sorties.
bien sûr, ces dernières varient fortement d’une application à une autres. Tout ces E/S pourraient
constituer les sens du système, puisque elles permettent de capter tout les paramètres d’un lieu
donné dont on voudrait mesurer ces constantes. Cette diversité des E/S la majorité d’entre elles
fait appel à des schémas de bases classique et à leurs programmes associes que nous avons
regrouper dans la suite de ces chapitres.
2. Conception :
2.1 Composants :
— Plaque d’essai
— Un Led qui indique la possibilité d’Access il peut être remplacer par un Relay et un
solénoïde.
— Un Buzzer
2.2 Servomoteur :
Un servomoteur est un moteur capable de maintenir une opposition à un effort statique et dont
la position est vérifiée en continu et corrigée en fonction de la mesure. C’est donc un système
asservi. Le servomoteur intègre dans un même boitier, la mécanique (moteur et engrenage), et
29
l’électronique, pour la commande et l’asservissement du moteur. La position est définie avec
une limite de débattement d’angle de 180 degrés, mais également disponible en rotation
continue. Des servomoteurs, il en existe de plusieurs tailles : des plus petits de quelques
grammes, tout en plastique, au plus gros de plusieurs kilogrammes, en métal. L’énergie qui les
pilote et les fait n’est pas toujours électrique.
Pour commander un servomoteur, il faut lui envoyer ce qu’on appelle un train d’impulsions
électriques, on peut traduire par : des envois de courant électrique qui se suivent à intervalle et
durée précis. L’intervalle de temps entre chaque impulsion envoyée est aussi appelé période.
30
La position du servomoteur est définie par la longueur d’une impulsion. Le servomoteur
s’attend à recevoir une impulsion toutes les 20 millisecondes environ. Si cette impulsion est
élevée pendant 1 milliseconde, alors l’angle d’asservissement sera nul, si elle est de 1,5
milliseconde, alors elle sera au centre et si elle est de 2 millisecondes, elle sera à 180 degrés.
31
• Le cablage et la fréquance de PWM
2.3 Buzzer :
2.4. Webcam :
Une webcam ou cybercaméra ou webcaméra, est une caméra conçue pour être utilisée comme
un périphérique d’un Hardware, et qui produit une vidéo dont la finalité n'est pas d'atteindre
une haute qualité, mais de pouvoir être transmise en direct au travers d'un réseau, typiquement
Internet
32
Figure 25: Webcam Raspberry Pi
33
Figure 27: Schéma électrique d’une LED
3. Le Branchement
34
4. Réalisation Réelle
35
36
Conclusion Générale
La Maison Intelligente est une résidence équipée de technologie informatique qui as-
siste ses habitants dans les situations diverses de la vie domestique en essayant de gérer de
manière optimale leur confort et leur sécurité par action sur la maison. La détection des
situations anormales est un des points essentiels d’un système de surveillance à domicile.
Ces situations peuvent être détectées en analysant les primitives générées par les étages de
traitement des images et par les capteurs de l’appartement.
37
Rréférences Bibliographiquee
[1] Y. Adini, Y. Moses, S. Ullman, Face recognition: The problem of compensating for
changes in illumination direction. IEEE Trans. Patt. Anal. Mach. Intell. 19, 721–732, 1997.
[3] Algorithme Haar Cascade Haar cascade - Détection de visages et d'objets - Kongakura
[3] SIMON MONK (2014) Programmer un Raspberry Pi : initiation avec python, page1.
DUNOD, Paris
[4] SIMON MONK (2014) Programmer un Raspberry Pi : initiation avec python, page 18.
DUNOD Paris
38