Vous êtes sur la page 1sur 44

Université de Tunis El Manar

Département Physique

Projet de Fin d’Année

Système Embarqué De Contrôle D’Accès Par La


Reconnaissance Faciale Et Streaming Via Web

Réalisé par :
Ouni Houssem Ben Othman Mohamed

Classe : IE4

Encadrants : Mr. Chokri Gammoudi


Mme. Ibtissem Malouche

Année universitaire 2020/2021


Remerciement

Nous tenons tout d’abord à remercier Dieu le tout puissant et


miséricordieux, qui nous a donné la force et la patience d’accomplir ce
modeste travail.
Nos remerciements s’étendent également à nos encadreurs
Mr. Chokri Gammoudi Mme. Ibtissem Malouche
Pour ses bonnes explications qui nous ont éclairé le chemin de la
recherche et ses collaboration avec nous dans l’accomplissement de ce
modeste travail. Ainsi que Nos vifs remerciements vont également aux
membres du jury pour l’intérêt qu’ils ont porté à notre recherche en
acceptant d’examiner notre travail Et de l’enrichir par leurs
propositions. Enfin, on remercie tous ceux qui, de près ou de loin, ont
contribué à la réalisation de ce travail.
Résumé

Notre projet s'articule autour de la reconnaissance faciale utilisant l'intelligence


artificielle et l'Internet des objets.

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 consiste à identifier une personne à partir d’une ou de plusieurs caractéristiques


physiologiques (empreintes digitales, visage, iris, contour de la main, etc.), ou
comportementales (signature, démarche, etc.). Etymologiquement, la biométrie humaine est
synonyme d’anthropologie physique. Une autre définition de la biométrie est donnée par
Roethenbaugh :

« 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 dynamique de frappe au clavier

La reconnaissance vocale

La dynamique des signatures

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.

Actuellement la vérification est réalisée via un numéro d'identification personnel, un nom


d'utilisateur, ou bien une carte à puce.

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.

3. Systèmes biométriques basés sur la reconnaissance de visage :


La reconnaissance automatique de visage s’effectue en trois étapes principales :

(1) détection de visages,

(2) extraction et normalisation des caractéristiques du visage,

(3) identification et/ou vérification.

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.

Figure 2:Les étapes de la reconnaissance de visage

L’efficacité des systèmes biométriques basés sur l’authentification de visage dépend


essentiellement de la méthode utilisée pour localiser le visage dans l’image. Dans la littérature
scientifique, le problème de localisation de visages est aussi désigné par la terminologie
"détection de visages". Plusieurs travaux de recherches ont été effectués dans ce domaine. Ils
ont donné lieu au développement d’une multitude de techniques allant de la simple détection
du visage, à la localisation précise des régions caractéristiques du visage, tels que les yeux, le
nez, les narines, les sourcils, la bouche, les lèvres, les oreilles, etc. Nous détaillerons quelques-
unes de ces méthodes dans la section. Cependant, les solutions proposées jusqu’à maintenant
sont loin d’être satisfaisantes car elles fonctionnent uniquement dans des environnements
contrôlés, et par conséquent elles ne gèrent pas la variabilité des conditions d’acquisition de la
vie quotidienne, notamment :

4
▪ La pose :

Où les images d'un visage changent en fonction de l’orientation de ce dernier.

▪ La présence ou absence des composantes structurales :

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.

▪ Les conditions d’illumination :

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.

3.1. Principales difficultés de la reconnaissance de visage


Pour le cerveau humain, le processus de la reconnaissance de visages est une tâche visuelle de
haut niveau. Bien que les êtres humains puissent détecter et identifier des visages dans une
scène sans beaucoup de peine, construire un système automatique qui accomplit de telles tâches
représente un sérieux défi.

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.

Figure 3:Exemple de variation d’éclairage

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.

Figure 4:Exemples de variation de poses

3.3. Expressions faciales


Un autre facteur qui affecte l’apparence du visage est l’expression faciale. La déformation du
visage qui est due aux expressions faciales est localisée principalement sur la partie inférieure
du visage. L'information faciale se situant dans la partie supérieure du visage reste quasi
invariable. Elle est généralement suffisante pour effectuer une identification.

Figure 5:Exemples de variation

3.4. Présence ou absence des composants structurels


La présence des composants structurels telle que la barbe, la moustache, ou bien les lunettes
peut modifier énormément les caractéristiques faciales telles que la forme, la couleur, ou la
taille du visage. De plus, ces composants peuvent cacher les caractéristiques faciales de base
jcausant ainsi une défaillance du système de reconnaissance.

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.

4. Haar cascade - Détection de visages et d'objets :


La détection d'objets dans une image ou une vidéo est une tâche non triviale en vision par
ordinateur, car deux critères sont à prendre en compte lors de la construction d'une méthode de
détections d'objet. Le premier est la capacité que cette méthode à détecter correctement un objet
et à ne pas se tromper la seconde est le temps d'exécution que cette méthode nécessite. En ce
sens, la méthode des cascades de Haar respecte ces deux critères et nous allons voir comment
dans cet article.

À 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.

L'algorithme proposé se décompose en 4 parties :


-Constitution d'une base de données contenant des images avec l'objet et des images sans
l'objet.
-Extraction de caractéristiques de l'ensemble des images contenu dans la base
-Entraînement d'un classifieur en cascade
-Phase de détection

Constitution du Jeu de données

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

Je vous recommande de construire ce jeu de manière automatique si vous en avez la


possibilité. Cela peut se faire en utilisant un algorithme de segmentation basique.

Extraction des caractéristiques de l'objet

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.

Ce choix semble cohérent au vu du grand nombre de feature, duquel on est en présence.

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.

L'algorithme AdaBoost est relativement simple, il consiste à entraîner un grand nombre


d'arbres de décision à un niveau (decision stump).

Pour sélectionner les caractéristiques, l'algorithme adaboost va entraîner un ensemble d'arbre


de décision à 1 niveau nommé décision stump.

Trois idées fondamentales sont à la base des méthodes de boosting probabilistes:

1. L'utilisation d'un comité d'experts spécialistes que l'on fait voter pour atteindre une
décision.

2. La pondération adaptative des votes par une technique de mise à jour.

3. La modification de la distribution des exemples disponibles pour entraîner chaque expert,


en surpondérant au fur et à mesure les exemples mal classés aux étapes précédentes. L'idée est
de refuser au plus tôt une image dès les premiers niveaux plutôt que de la faire descendre dans
le classifieur.

Le classifieur en cascade est généralement stocké dans un fichier xml.

Après entraînement du classifieur sur les 180 000 caractéristiques extraites seulement 6000
ont été retenues, et le classifieur a 38 niveaux.

• Entraînement avec Adaboost

• 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.

Figure 6:Raspberry pi 3 Model B+

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+

1.2. Accessoires du Raspberry Pi

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

Pour héberger notre système d’exploitation (Raspbian) nécessaires au bon fonctionnement


notre Raspberry Pi, et tous les fichiers nous auront besoin d’espace de stockage c’est pour cela
qu’une microSD est requise.

La qualité de cette carte, et tout particulièrement sa vitesse, va influencer la vitesse d’écriture


des fichiers. Il convient donc de bien la choisir. Pour nous aider des « classes » sont définies
pour nous indiquer la vitesse minimale des cartes en écriture, exprimée en Mo/s. Les cartes
vendues en 2010 sont de classe 2, 4, 6 ou 10.

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 .

1.4. Domaine d’utilisation


On peut pratiquement faire avec un Raspberry Pi tout ce que l’on peut faire avec un
ordinateur de bureau sous Linux, à quelques exceptions prés. Le Raspberry Pi utilise une carte
SD à la place d’un disque dur, bien que l’on puisse le brancher à un disque dur USB. On peut
modifier des documents bureautiques, surfer sur internet, jouer à des jeux, etc. Le Rasberry Pi
est un appareil extrêmement souple qu’on peut utiliser dans toutes sortes de situations, que ce
soit pour remplacer un ordinateur de bureau, profiter d’un media center ou contrôler un système
a l’aide d’un ordinateur embarque.

1.5. Connecteurs et ports disponible :

1. HDMI : « High Définition MultiMedia Interface » permet de relier le Raspberry Pi à


un dispositif compatible : écran LCD ou un vidéoprojecteur...

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. Port Ethernet : C’est un port qui correspond au protocole international Ethernet de


réseau local à commutation de paquets.
4. Prise RCA : « Radio Corporation of America » est un connecteur électrique utilisé dans
le domaine audio/vidéo via jack.
5. Un slot pour cartes microSD : Le Raspberry a besoin d’une mémoire externe
supplémentaire pour fonctionner. Ce slot permet de connecter la mémoire externe. Vous
pouvez utiliser votre propre carte SD dans le Raspberry Pi, mais elle devra être préparée
avec une image disque d’un système d’exploitation.
6. Une prise jack : C’est une connectique audio-vidéo sa dimension est égale à 3.5 mm.

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 ?

Après le téléchargement et décompression de l’archive NOOBS dans un dossier de notre


choix, vient après l’étape de transfert de tout ces fichiers dans une carte microSD au préalable
bien formatée avant utilisation, on devrait arriver sur cet écran qui permet de choisir parmi les
distributions disponibles :

Figure 9: Menu NOOBS

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".

Figure 10:Raspberry Pi + Debian = Raspbian

3.2 Raspbian Stretch


La dernière version de l’OS Raspbian complet, plutôt adapté à la Raspberry Pi 2 et à la
Raspberry Pi 3.

Il s’agit d’une modification de Debian spécifiquement adaptée pour les systèmes sur une
puce de type ARMv6.

Figure 11: Fond d’écran Raspbian

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.

3.4. Prendre le contrôle du Raspberry Pi


Brancher la Raspberry Pi à un écran et l’utiliser comme bureau c’est bien, mais pour divers
projets ou celle-ci intervient par exemple dans les systèmes embarqués, un écran et tout les
autres périphériques (clavier, souris) deviennent vite encombrant, des solutions existent c’est
de communiquer avec des commandes et cela à distance avec des différents protocoles et
serveurs.

3.5 Secure SHell


SSH (pour Secure SHell) désigne à la fois un logiciel et un protocole de communication
informatiques. Ce protocole possède par ailleurs la particularité d’être entièrement chiffré. Cela
signifie donc que toutes les commandes que vous exécuterez via SSH seront totalement secrètes.

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 :

1. Démarrer le "RaspberryPI" sur la distribution "Raspbian".

2. Se connecter au terminal avec CTRL+ALT+T

17
3. Saisir la commande "sudo raspi-config" puis valider.

4. Sélectionner "Interfacing Options"

5. Sélectionner l’option "ssh".

6. Sélectionner le choix "Enable".

7. Confirmer le message par "Ok".

8. Terminer la configuration avec le bouton "Finish".

Figure 12: Activer SSH

Installer le client SSH sur votre ordinateur


Pour concrétiser la communication SSH entres nos différentes machines, et après l’avoir
activer dans notre Raspberry Pi, reste à l’installer dans notre ordinateur.

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 :

sudo apt-get update && sudo apt-get install openssh-client

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.

Vous pouvez télécharger PuTTY.

18
Ce programme permet de se connecter à distance à des serveurs en utilisant les protocoles SSH,
Telnet.

Figure 13: Interface PuTTY

3.3 Virtual Network Computing

VNC, ou Virtual Network Computing, est un système permettant la prise de contrôle à


distance d’un ordinateur par un autre. Lors de l’utilisation de VNC, deux parties différentes du
logiciel sont utilisées. La première partie est le serveur VNC. Celui-ci est installé sur la machine
dont l’on souhaite prendre le contrôle (ici le raspberry pi), et il va permettre la connexion et le
contrôle par la partie client. La seconde partie est donc le client VNC. Celui-ci est installé sur
la machine depuis laquelle on souhaite contrôler le serveur, et il va permettre de traduire nos
actions en opérations compréhensibles par le serveur qui va alors contrôler la machine distante
depuis notre ordinateur.

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.

— Le langage de programmation officielle qui a été pris en charge comme langue


d’apprentissage éducatif sur le Raspberry Pi (le langage de prédilection á l’origine du Pi
de Raspberry Pi) est Python, Python est d’ailleurs installé par défaut dans Raspbian.
— Python est un langage de programmation interprété et qu’il est donc très facile d’essayer
immédiatement une ou plusieurs instructions dont on est pas sur du comportement.

— 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

4.1. Point fort du langage


Le grand point fort de Python sur PHP, Perl ou un autre c’est sa lisibilité. Le slogan des
fans de Python est : "Life’s better without braces", ce qui signifie "La vie est meilleur sans
accolades". En Python il n’existe pas d’accolades pour délimiter un bloc de code. En fait, le
programmeur Python n’a pas le choix dans la façon de formater son code s’il veut pouvoir
l’exécuter sans erreurs. Comme pour un Makefile, une mauvaise indentation produit une erreur
de syntaxe. La syntaxe de Python est plus donc constante et uniforme, voir restrictive. Sa rigidité
lui permet d’être plus compréhensible par tous, notamment pour des projets avec plusieurs
auteurs et des centaines de lignes de codes sources. Les scripts Python ont tous la même "tête",
ils peuvent donc être relus par d’autres plus facilement. Cette remarque n’est pas négligeable
surtout lorsque l’on sait qu’un développeur passe au moins autant de temps à lire et comprendre
un code qu’à l’écrire.

4.2. Programmation des entrées / sorties avec 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 :

"sudo apt-get install python-rpi.gpio"


Ensuite on exécute la commande suivante pour la mise à jour :

21
"sudo apt-get update"

4.3. Bibliothèques utilisées

❖ 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.

Figure 16: Flask Framework Icone

• Domaines d’utilisations

• Serveur de développement et debugger


• Simplifie l'écriture de tests unitaires
• Moteur de template pour le rendu HTML
• Supporte les cookies sécurisés (session)
• Entièrement compatible avec WSGI 1.0
• Se base sur l'Unicode
• Documentation complète
• Déploiement aisé sur plusieurs hébergeurs
• Ajout de fonctionnalités via les extensions

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 source computeur vision ‘OpenCV’:

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.

Figure 17: Open CV icone

• 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.

Pillow dispose de capacités de traitement d’images relativement puissantes, et a pour but


d’offrir une solide base à toute application générale de traitement d’images.

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.

Comment le mettre en place ?


Pour pouvoir l’utiliser il faut tout d’abord créer un compte sur https://ngrok.com. Il existe
différentes offres dont une gratuite qui est déjà très complète. La formule payante permet
notamment d’avoir la même url à chaque redémarrage du service.

• 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.

• Enfin, on redémarre apache :

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 :

Les composants nécessaires de réalisation

— Carte Raspberry Pi 3 Model B.

— Plaque d’essai

— Câbles jumpers M/M et M/F

— Câble Ethernet (RJ45)

— Un Led qui indique la possibilité d’Access il peut être remplacer par un Relay et un
solénoïde.

— Webcam « utilisée comme caméra de surveillance »

— Servomoteur « utilisé comme un support pour la rotation du Webcam »

— 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.

Un servomoteur est composé :

— d’un moteur à courant continu

— d’un axe de rotation

— un capteur de position de l’angle d’orientation de l’axe (très souvent un potentiomètre)

— une carte électronique pour le contrôle de la position de l’axe et le pilotage du moteur à


courant continu

Figure 19.1: Un servomoteur

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.

Voici à quoi ressemble un train d’impulsions :

Figure 20.2: Un train d’impulsions de période 20ms

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.

Figure 21: Rotation du servomoteur

• Les Dimensions d’un servomoteur selon ‘Datasheet’

Figure 22: Dimensions géométrique du servomoteur

31
• Le cablage et la fréquance de PWM

Figure 23:Les Portes servomoteur

2.3 Buzzer :

Un buzzer ou bipeur est un élément électromécanique ou piézoélectrique qui produit un sa


caractéristique quand on lui applique une tension.

Un buzzer (transducteur) piézoélectrique est typiquement composé d'un diaphragme


piézoélectrique, d'une cavité avec un orifice et de connexions pour les bornes électriques1. Il
nécessite une tension alternative pour fonctionner, de quelques volts à quelques dizaines de
volts (3 V à 30 V par exemple). C'est ce type de transducteur que l'on retrouve au dos des
montres ayant une fonction alarme.

Figure 24: Un buzzer piézoélectrique

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

2.5 Les LEDS

Une diode électroluminescente (abrégé en LED, de l’anglais : light-emitting diode), est un


dispositif opto-électronique capable d’émettre de la lumière lorsqu’il est parcouru par un
courant électrique. Ces LED feront office d’éclairage dans notre maquette et servirons
d’indicateur lumineux pour nos circuits. Figure 2.1.4.1 – Une LED

Figure 26: LED

33
Figure 27: Schéma électrique d’une LED

3. Le Branchement

Ceci le branchement des composantes utilisées dans ce projet:

Figure 28: Schéma électrique du prototype

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.

[2] Tiphaine Bodin.(2018). « La domotique, principe et fonctionnement ». In :


Linternaute.com [En ligne]. Disponible sur :

[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

[5] C. Tavernier, « Arduino applications avancées ». Version Dunod.

[6] « electriciteguide », https://www.electriciteguide.com/actualites/ le-delesteur.htm] [7]


https ://raspbian-france.fr/telechargements/

[7] C’est Quoi Ngrok : https://black.bird.eu/fr/blog/ca-roule-entre-magento-et-ngrok-.html

[8] Apach : Apache Spark — Wikipédia (wikipedia.org)

38

Vous aimerez peut-être aussi