Vous êtes sur la page 1sur 38

République Tunisienne ‫الجمهورية التونسية‬

Ministère de l’Enseignement Supérieur et de la ‫وزارة التعليم العالي والبحث العلمي‬


Recherche Scientifique ‫اإلدارة العامة للدراسات التكنولوجية‬
Direction Générale des Etudes Technologiques
ISET de Rades
‫المعهد العالي للدراسات التكنولوجية برادس‬
Département Technologies de l’Informatique ‫قســم تكنولوجيات اإلعالمية‬

Rapport de Projet de Fin d'Etudes

LICENCE APPLIQUEE EN TECHNOLOGIES DE L'INFORMATIQUE

PARCOURS: SYSTEMES EMBARQUES ET MOBILES (SEM)

Supervision des espaces clos

Entreprise : ISET de Rades

Réalisé par : Encadré par :


Eya Latrech Encadrant ISET : M.Sami Melki

Code PFE : SEM-22-….… Année universitaire : 2021/2022

* Adresse : Rue El Quods, BP 172 - 2098 - Radès


Téléphone : 71 460 100 Fax : 71 442 322 ‫رادس‬- 2098-172-‫ب‬.‫ ص‬،‫ نهج القدس‬:‫العنوان‬
Site Web : www.isetr.rnu.tn 322 442 71 :‫ الفاكس‬460 100 71 :‫الهاتف‬
www.isetr.rnu.tn ‫موقع الواب‬:
ISET de Radès Juin 2022

Dédicace

A mes chers parents Jalel et Raja.

Jamais les mots ne sauraient exprimer ma gratitude envers vous pour votre
dévouement, votre tendresse et votre attention pour m’avoir facilité le chemin, souvent à vos
dépens, par votre sens du devoir et du sacrifice. Je vous dois ce que je suis et ce que je serai.
J’implore Dieu, le tout puissant, de m’aider à vous prouver ma sincère reconnaissance pour
ces nombreuses années de sacrifices qui resteront gravées dans ma mémoire.

A toute ma famille.

A tous mes deux amies Sihem et Chayma qui m’ont soutenu dans les moments les plus
difficiles.

Avec tout l’amour et le respect du monde, je vous dédie ce mémoire.

Je vous aime beaucoup.

Eya Latrech Page 2


ISET de Radès Juin 2022

Remerciement
Au terme de ce travail résultat de tant d’années de sacrifices et d’efforts, je tenais à
remercier avec beaucoup de respect et de reconnaissances Mr. Sami Melki en tant
qu’encadrant, pour son disponibilité, son valeurs, son bon directive, et son patience qu’il a
montré pour contribuer à la réalisation de ce projet de fin d’études et enfin de vouloir accepter
de juger le contenu de ce rapport.
Je serais très reconnaissante envers les enseignants du département Technologie de
l’informatique qui ont procédés à mon enseignement durant les années universitaires (2019 à
2022).

Introduction générale
1-thème général du projet

Eya Latrech Page 3


ISET de Radès Juin 2022

Au cours des deux dernières décennies, le monde a connu un certain nombre de foyers de
maladies infectieuses qui ont montré un taux élevé de propagation.
À l’heure actuelle, l’inquiétude grandit face à la propagation continue de la COVID-19 dans
certaines régions du monde et le maintien d’un taux réduit de propagation de l’épidémie dans
d’autres est un véritable défi. Les gouvernements, les employeurs, les travailleurs et leurs
organisations sont confrontés à d’énormes défis lorsqu’ils tentent de lutter contre la pandémie
de COVID-19 et de protéger la sécurité et la santé sur les lieux de travail.

En Tunisie (2022), plus de 7 mille cas de contamination au coronavirus ont été détectés
chez les élèves, les étudiants et le personnel éducatif, alors que 122 des 6.100 écoles et 373
des 78.000 classes ont été fermées.

2-Cadre du sujet
Partager un espace confiné, mal ventilé pendant une ou plusieurs heures constituerait le
dénominateur commun à la grande majorité des situations propices à la contagion du
Coronavirus SARS CoV-2. Si la transmission du virus par les microgouttelettes
A l’occasion d’une toux ou d’un éternuement est établie depuis le début de l’épidémie,
un faisceau d’indices concordant laisse à penser que son transport aéroporté sous forme
d’aérosols serait à l’origine d’un nombre tout aussi important de contaminations.
Notre cas l’ISET, où les salles de cours ou les amphis qui accueillent et qui sont plus au
moins fermés. Ce manque d’aération et de ventilation risque de causer des problèmes de
respiration avec le manque d’oxygène ainsi la propagation des épidémies respiratoires.

Le premier chapitre sera consacré pour définir l'organisme d'accueil, présenter brièvement
les résultats des différentes études précédentes, poser notre problématique et finalement
décrire le fonctionnement du système.

Eya Latrech Page 4


ISET de Radès Juin 2022

Chapitre 1 :
1-Organisme de l’entreprise (ISET Radés) :
L’Institut supérieur des études technologiques de (ISET-Radés) est une institution
d'enseignement supérieur tunisienne formant des techniciens supérieurs et délivrant le
diplôme de licence appliquée dans plusieurs domaines.
Fondation : 1995
Régime linguistique : Français
Directeur : Rachid Amri
Assure la formation selon la réforme LMD du système de l'enseignement supérieur
tunisien[1] au sein des départements suivants : génie mécanique, génie civil, génie électrique,
technologies d'informatique et gestion des entreprises et des administrations. L'Iset de Radès
est situé dans la banlieue de Radès (gouvernorat de Ben Arous) et abrite aussi la direction
générale des études technologiques.

Eya Latrech Page 5


ISET de Radès Juin 2022

2-Etat de l’existant :
Dans les études antécédentes certaines chercheurs ont présenté les solutions suivantes :
Un protocole d’autorisation d’accès est un outil administratif utilisé afin de documenter
l’aération des risques effectué pour chaque entrée en espace clos. Une personne ayant toute la
formation requise et de l’expérience en travail dans un espace clos doit remplir l’autorisation
d’accès.
Certaines administrations demandent un permis d’entrée est requis pour les espaces clos
lorsque l’évaluation des dangers et des risques indique la nécessite des mesures de contrôle de
risque qui suivent :
 Surveillance des conditions atmosphériques
 Isolation
 Ventilation
 Dispositifs protecteurs
 Dispositifs protecteurs
 Protection respiratoire
 Aération ou une ventilation renforcée soit mise en place.

2-Problématique :

a- Définition d’un espace clos :

Un espace clos est un lieu totalement ou partiellement fermé non conçu pour être occupé
par des personnes mais où , à l’occasion , des travaux sont exécutés. On y accède par une
voie restreinte.
L’atmosphère dangereuse que contient l’espace clos sa configuration , sa conception , son
contenu et les travaux qui y sont effectués comportent des risques .

b- Les principaux dangers dans les espaces clos :

L’espace clos peut contenir de gaz toxiques ou inflammables, l’oxygène peut y être rare et
les risques d’incendies plus grands à cause de la présence de gaz et d’une ventilation
déficiente.

3- Description du fonctionnement du système :


Eya Latrech Page 6
ISET de Radès Juin 2022

a- Solution :

Vu le risque présenté par les espaces fermés, nous proposons ce projet qui consiste à
installer des capteurs afin de saisir la qualité d'air dans la salle et les mesures d'oxygène, de
CO2, de fumée, la température et le gaz. Ces indicateurs seront affichés su un Dashboard à
travers une application dans le but d’intervenir et agir rapidement en cas de risque, si l’un de
ces indicateurs dépasser le seuil maximale. Ainsi cette application nous permettra de mettre
en marche les ventilateurs installés dans la salle des cours en cas de besoin.

b- Ecosystème :

Eya Latrech Page 7


ISET de Radès Juin 2022

Chapitre 2 :
1- Partie Electronique (Hardware) :
a- Carte Raspberry pi zero :
Raspberry Pi est un nano-ordinateur monocarte à processeur ARM de la taille d’une carte de
crédit conçu par des professeurs du département informatique de l’université de Cambridge
dans le cadre de la fondation Raspberry Pi.

Porte de sortie Alimentation Stockage Connectivité


29 février 2019 Micro-USB 5v Carte SD (A, B) USB, Ethernet, HDMI,
USB-C 5v Carte micro SD (A+B,B , Micro USB, Bluetooth,
2B , 3B et B+). WI-FI.

Figure n°1 : Carte Raspberry Pi zéro

b- Capteur de gaz O2 :
Basé sur un capteur de gaz ME2-O2, ce module de chez Seeed Studio, est capable de
mesurer la concentration d'Oxygène dans l'air ambiant avec précision. Ce capteur à réaction
organique génère un courant très faible quand il est traversé par un courant d'air. Le module
intègre un étage de conversion/amplification pour en récupérer les données au travers une
entrée analogique d'un module Arduino (par exemple) ou tout microcontrôleur disposant de ce
type d'entrée.
Si votre microcontrôleur ne dispose pas d'une entrée analogique, mais d'une entrée I2C
(Raspberry Pi par exemple) nous vous conseillons d'utiliser en plus le module
Grove I2C- ADC (proposé en option).

Alimentation Capteur Plage de mesure Durée de vie Sortie

Eya Latrech Page 8


ISET de Radès Juin 2022

3.3Vcc – 5Vcc O2 Oxygéne 0 a 25 % 2 ans analogique

Sensibilité Compatible Temps de Dimensions Poids


Grove "préchauffage"

0.05, 0.15 mA Cordon inclus 20min 20 x 40 x 20 mm 33g

Figure n°2 : Capteur de gaz O2

Remarque : On n’a pas adapté ce capteur dans notre projet a cause de sa rupture de
stock en Tunisie.
c- Capteur de présence :
Les capteurs de présence, encore appelés « capteur de position » ou « détecteur de présence »,
sont principalement utilisés dans les systèmes automatisés pour détecter les positions d’objets
ou de personnes. Ils sont fabriqués à base de microcontacts, placés dans un corps de
protection et muni d’un système de commande.
Caractéristiques : La lentille spéciale permet une détection sur une large zone d’objets en
mouvement qui présentent un écart de température avec l’environnement.

Eya Latrech Page 9


ISET de Radès Juin 2022

Figure n°3 : Capteur de mouvement / présence HCSR05

d- Capteur de fumée :
Le capteur MQ-2 est un capteur qui permet de détecteur du gaz ou de fumée à des
concentrations de 300 ppm à 10000 ppm. Après calibration, le MQ-2 peut détecter différents
gaz comme le GPL (LPG), l’i-butane, le propane, le méthane, l’alcool, l’hydrogène ainsi que
les fumées. Il est conçu pour un usage intérieur à température ambiante.
Alimenté en 5V, il dispose d’une sortie analogique et d’un réglage de la sensibilité par
potentiomètre.

Figure n°4 : Capteur de fumée MQ-2

e- Capteur de la qualité d’air CO2 :


Module comportant un capteur MQ135 permettant de détecter plusieurs types de gaz: le
benzène (C6H6), l'ammoniaque (NH3), le sulfure, la fumée et la pollution atmosphérique.

Caractéristiques :

Tension de Puissance (courant) Sorite D0 Sortie A0 Sortie de signal

fonctionnement

DC 5V 150mA 0.1V/5V 0.1-0.3V analogique

Eya Latrech Page 10


ISET de Radès Juin 2022

Figure n°5 : Capteur de fumée MQ-2

f- Capteur de Température et humidité :


Le capteur DHT11 est lui capable de mesurer des températures de 0 à +50°C avec une
précision de +/- 2°C et des taux d'humidité relative de 20 à 80% avec une précision de +/- 5%.
Une mesure peut être réalisée toutes les secondes.

Figure n°6 : Capteur de température et humidité DHT11

e- Ventilateur :

:
Figure n°7 : Ventilateur 2 broches

Eya Latrech Page 11


ISET de Radès Juin 2022

Alimentation Courant
5V 0.2A

Remarque : De nombreux capteurs développés à l’origine pour l’Arduino n’offrent pas


d’interface numérique et ne peuvent être lus qu’en analogique. Le problème est que le
Raspberry Pi avec ses GPIO ne peut pas lire les signaux analogiques, c’est pourquoi vous
avez besoin d’un convertisseur analogique-numérique (ADC) comme le MCP3008. Cela
signifie que jusqu’à 8 entrées analogiques peuvent être lues via le bus SPI du Raspberry Pi.

e- Convertisseur analogique MCP3008 :


Le MCP3008 est un convertisseur analogique-numérique (CAN) à 8 canaux 10 bits. Il est
bon marché, facile à connecter et ne nécessite aucun composant supplémentaire. Il utilise le
protocole de bus SPI qui est pris en charge par l’en-tête GPIO du Pi.

Figure n°8 : Convertisseur MCP3008

l’ADC tolère une tension d’entrée comprise entre 2,7 V et 5 V. Étant donné que les
GPIO fonctionnent avec 3,3 V et peuvent se casser à des tensions plus élevées, le MCP3008
ne doit fonctionner qu’avec 3,3 V. Si vous utilisez un module analogique dont la tension
d’entrée est supérieure à 3,3 V (et qui peut également la transmettre), vous devez vous assurer
qu’il n’atteint pas le CAN. Pour cela, par ex. Des résistances série sont utilisées et cela peut
être pris en compte dans la suite (calculs, etc.).

Eya Latrech Page 12


ISET de Radès Juin 2022

Figure n°8 : Broches du MCP3008

2- Partie Electronique programmée :


A- Carte programmable : Raspberry Pi Zéro
Elle est équipée d'un processeur Single Core ARM11 à 1 GHz (Broadcom BCM2835),
de 512 Mo de RAM et d'une connectivité sans fil complète Wi-Fi et Bluetooth. La carte
mère Raspberry Pi Zero W est une solution très abordable pour tous types de systèmes
compacts ou embarqués (MediaCenter, domotique, affichage dynamique, robotique...etc.). Il
ne vous reste plus qu'à ajouter les composants indispensables pour profiter pleinement de
votre nouvelle configuration : Boîtier, alimentation externe, carte contrôleur... Ce
modèle disposant d'un port CSI, vous pourrez facilement ajouter une caméra pour une
solution de surveillance complète et compacte.

a- Caractéristiques :
 Raspberry Pi Zero W
 Processeur intégré monocore ARM 11 Broadcom BCM2835 @ 1 GHz
 RAM : 512 Mo
 Lecteur de cartes Micro SD
 Sortie mini HDMI
 Deux ports micro USB dont un utilisé pour l'alimentation (non fournie)
 1 port CSI pour connecter une caméra de surveillance
 Connecteur 40 broches compatible HAT
 Wi-Fi 802.11 b / g / n et Bluetooth 4.1 BLE (faible consommation d'énergie)

Eya Latrech Page 13


ISET de Radès Juin 2022

b- Alimentation électrique :
Le microcontrôleur Raspberry Pi Zero fonctionne sur une plage de tension de 4.9-5.2V
grâce à son régulateur de tension embarqué. Le microprocesseur, quant à lui, fonctionne avec
une tension de 3.3V. Le microcontrôleur consomme, en fonctionnement normal, jusqu’à
45mA (s’il n’alimente rien) et peut accepter sur chacune des broches IO un courant maximum
de 20mA.
c- Introduction aux entrées / sorties :
La partie la plus importante pour ce qui nous concerne est le port GPIO (en anglais
"general purpose input & output"). Ce connecteur à 40 points est le moyen fourni par
les créateurs du Raspberry Pi pour nous permettre d’accéder aux ports d’entrée/sortie du
processeur BCM2837.

 Digital I/O : 29 (GPIO0, GPIO1, GPIO2, GPIO3, GPIO4, GPIO5, GPIO6, GPIO7,

GPIO8, GPIO9, GPIO10, GPIO11, GPIO12, GPIO13, GPIO14, GPIO15, GPIO16,

GPIO17, GPIO18, GPIO19, GPIO20, GPIO21, GPIO22, GPIO23, GPIO24, GPIO25,

GPIO26, GPIO27, GPIO28)

 Broches PWM : 29 (GPIO0, GPIO1, GPIO2, GPIO3, GPIO4, GPIO5, GPIO6,

GPIO7, GPIO8, GPIO9, GPIO10, GPIO11, GPIO12, GPIO13, GPIO14, GPIO15,

GPIO16, GPIO17, GPIO18, GPIO19, GPIO20, GPIO21, GPIO22, GPIO23, GPIO24,

GPIO25, GPIO26, GPIO27, GPIO28)

 Communication Serial: 1 ((‘GPIO14’, ‘GPIO15’))

 Communication I2C : 1 ((‘GPIO2’, ‘GPIO3’))

 Communication SPI : 1 ((‘GPIO8’, ‘GPIO11’, ‘GPIO9’, ‘GPIO10’))

 Communication I2S: 1 ((‘GPIO18’, ‘GPIO19’, ‘GPIO21’))

Eya Latrech Page 14


ISET de Radès Juin 2022

Figure n°8 : Intitulé des broches

Les ports du connecteur GPIO ont tous un rôle bien déterminé. On trouve des
alimentations 5V et 3,3V ainsi que des masses.
Les ports GPIO sont identifiés par un chiffre ; GPIO1, GPIO2, … Certains ont une fonction
supplémentaire précisée entre parenthèses. Cette fonction n’empêche pas d’utiliser les GPIO
de façon classique, comme entrée/sortie numérique (0 ou 1).
Les GPIO utilisables comme entrée/sortie numérique sont au nombre de 26. Ils ne
fonctionnent qu’en tout ou rien, 0 ou 1, 0V ou 3,3V. Il n’y a pas de port analogique (tension
continument variable). Si vous avez besoin de plus de ports ou de ports analogiques, il faudra
ajouter des cartes d’extension.

d- Communication SPI (Serial Peripheral Interface) :


Eya Latrech Page 15
ISET de Radès Juin 2022

 SPI0 pins in BCM mode are: 9, 10, 11 + 7/8


 SPI0 pins in WiringPi are: 12, 13, 14 + 10/11

Figure n°9 : Les broches SPI

La communication suivant le protocole SPI est très rapide, car les fréquences sont élevées
et le dialogue totalement bidirectionnel « full-duplex ». Ce type de communication sert
typiquement pour établir un lien entre un processeur et des périphériques (capteurs, etc.), mais
on peut aussi l'utiliser pour dialoguer avec un microcontrôleur.
Le protocole SPI (Serial Peripheral Interface) implémente une liaison série synchrone
entre un maître et un esclave. Lorsqu'un seul esclave est employé, trois signaux seulement
(outre la masse) sont nécessaires.
Le maître produit une horloge (signal SCLK) envoyé à l'esclave. Sur certaines transitions de
cette horloge, l'esclave lira (sur le signal nommé MOSI – Master Out Slave In), ou écrira (sur
le signal nommé MISO – Master In Slave Out) des données.

Eya Latrech Page 16


ISET de Radès Juin 2022

Figure n°10 : Connexion entre maitre et esclave

e- Etude comparatif entre les deux cartes proposées pour ce projet :


On a deux solutions Pour la carte programmable dans ce projet. J'ai choisi la carte
Raspberry Pi Zero car elle est multitâche et elle nous permettra de programmer plusieurs
capteurs qui fonctionnent en même temps.

ESP32 Raspberry pi zero


Mémoire
512KB 512 Mo
Mémoire Flash
4 Mb 512000 kB
Interfaces I2C, SPI, UART
I2C, SPI, UART,
DAC, ADC
Communication
par câble USB, WIFI , Bluetooth par câble USB , WIFI , Bluetooth
Fréquence 1000Mhz
240MHz
E/S 40 broches
10 E/S digitales

f- Câblage de matériels :
 Connexion du Raspberry pi Zero avec le convertisseur MCP3008 :

Eya Latrech Page 17


ISET de Radès Juin 2022

La première étape sera simplement d’alimenter le circuit. pour cela, on connectera


le Vdd, qui est la broche 16 (première broche en haut à droite au 3.3V du Raspberry (broche
P1-01, en haut à gauche, lorsque la carte SD est vers le haut). Les broches 14 (Agnd, 3eme en
haut à droite) et 9 (Dgnd, 8eme broche en partant du haut, colonne de droite) du MCP3008
sont la masse des signaux analogiques et numériques, et seront connectées à la masse du
Raspberry pi : la broche P1-06 (3eme en partant du haut, à droite). Il s’agira des fils noirs
sur notre schéma. Il faudra ensuite connecter le Vref de notre CI, qui donnera la tension de
référence des signaux logiques, au 3.3V du Raspberry. Il s’agit de la broche 15 du
MCP3008 (2eme en haut à droite), que vous connecterez au même 3.3V que plus haut (fil
rouge sur le schéma). Nous connecterons maintenant 4 broches GPIO de notre Raspberry aux
broches CLK, Dout, Din et CS du MCP3008.

 La broche CLK nous la connecterons au GPIO11 du Raspberry Pi.


 La broche 11 Dout connectons la au GPIO10 (SPIO MOSI).
 La broche 12 Din elle pourra aller en GPIO 9 (SPIO MISO).
 La broche CS connecterons au GPIO 8 (CE0).

 A cette étape, notre MCP3008 est connecté au Raspberry. Toutes les broches de
gauche du circuit sont des entrées analogiques que nous pourrons utiliser.

Eya Latrech Page 18


ISET de Radès Juin 2022

Figure n°11 : Connexion entre Raspberry pi et MCP3008

 Connexion du Raspberry pi Zero avec le capteur MQ-2 :

D0 : fournit une présentation numérique de la présence des gaz compatibles , on la connecte


au GPIO 26.

A0 : fournit une tension de sortie analogique proportionnelle à la concentration de gaz de


fumée, on la connecte au CH0 du MCP3008.

Eya Latrech Page 19


ISET de Radès Juin 2022

 Connexion du Raspberry pi Zero avec le capteur MQ-135 :

D0 (mq135) on la connecte au pin 11 (RPi GPIO 17)


A0 (mq135) est Non utilisé

 Connexion du Raspberry pi Zero avec le capteur DHT11 :


On connecte la sortie du DHT11 au GPIO 4 .

 Connexion du Raspberry pi Zero avec le capteur HCS05 :


On connecte la sortie du HCS05 au GPIO 4 .

Eya Latrech Page 20


ISET de Radès Juin 2022

 Connexion du Raspberry pi Zero avec la ventilateur :

B- Programme principale :
a- Langage utilisé :
Python :
Python est le langage de programmation open source le plus employé par les
informaticiens. Ce langage s’est propulsé en tête de la gestion d’infrastructure, d’analyse de
données ou dans le domaine du développement de logiciels. En effet, parmi ses qualités,
Python permet notamment aux développeurs de se concentrer sur ce qu’ils font plutôt que sur
la manière dont ils le font. Il a libéré les développeurs des contraintes de formes qui

Eya Latrech Page 21


ISET de Radès Juin 2022

occupaient leur temps avec les langages plus anciens. Ainsi, développer du code avec Python
est plus rapide qu’avec d’autres langages.

A quoi sert le langage Python ?

Les principales utilisations de Python par les développeurs sont :

 la programmation d’applications
 la création de services web
 la génération de code
 la méta programmation.

Techniquement, ce langage servira surtout pour le scripting et l’automatisation (interaction avec les
navigateurs web).

Quelle est la version actuelle de Python ?

On différencie deux versions : Python 2 et Python 3. Python 2, l’ancienne version propose des
mises à jour jusqu’en 2020. Python 3 est la version actuelle. Son interpréteur est plus efficace, ainsi
que son contrôle de concurrence.

Conçu Par Écrit en Date de Dernière Extension de


première version fichier
version

Guido van C pour CPython, Java pour 20 février 1991 3.10.5 (6 juin py, pyc, pyd,
Rossum Jython, C# pour IronPython e 2022) pyo, pyw, pyz et
t en Python pyi

b- Code :
 Code du capteur de fumée MQ-2 :
#Bibliothèque
import RPi.GPIO as GPIO
import time
#Ces numéros de pins GPIO doivent etre modifies pour correspondre aux broches
utilisées
SPICLK = 11

Eya Latrech Page 22


ISET de Radès Juin 2022

SPIMISO = 9
SPIMOSI = 10
SPICS = 8
# Les ports du capteur
mq2_dpin = 26
mq2_apin = 0
# Utiliser la numérotation des broches Broadcom GPIO
def init():
GPIO.setwarnings(False) #désactive le mode avertissement
GPIO.cleanup()
GPIO.setmode(GPIO.BCM) # Utiliser la numérotation des broches Broadcom GPIO
# définition de l'interface SPI
GPIO.setup(SPIMOSI, GPIO.OUT)
GPIO.setup(SPIMISO, GPIO.IN)
GPIO.setup(SPICLK, GPIO.OUT)
GPIO.setup(SPICS, GPIO.OUT)
GPIO.setup(mq2_dpin,GPIO.IN,pull_up_down=GPIO.PUD_DOWN) #utliser les
résistances
def readadc (adcnum, clockpin, mosipin, misopin, cspin): #fonction lisant les donnees SPI
de la puce MCP3008, parmi 8 entrees, de 0 a 7
print("ADC NUM!", adcnum)
if ((adcnum > 7) or (adcnum <0)):
return -1
GPIO.output(cspin, True)
GPIO.output(clockpin, False)
GPIO.output(cspin, False)

commandout = adcnum #commencer par 0


commandout |= 0x18 # start bit + single-ended bit

commandout <<= 3 #affectation de décalage à gauche au niveau du bit par 3


for i in range(5): #nous n'avons besoin d'envoyer que cinq bits ici
if (commandout & 0x80):

Eya Latrech Page 23


ISET de Radès Juin 2022

GPIO.output(mosipin, True)
else:
GPIO.output(mosipin, False)
commandout <<= 1

GPIO.output(clockpin, True)
GPIO.output(clockpin, False)
adcout = 0 #définition du ADC utilise (broche du MCP3008). Cette valeur peut aller
de 0 à 7.
#lire dans un bit vide, un bit nul et 10 ADC
for i in range(12):
GPIO.output(clockpin, True)
GPIO.output(clockpin, False)
adcout <<= 1
if (GPIO.input(misopin)):
adcout |= 0x1
GPIO.output(cspin, True)
adcout <<= 1 #le premier bit est 'null' alors supprimez-le
return adcout
def main():
init()
print("please wait...")
time.sleep(10) #attendre 10s
while True:
COlevel = readadc(mq2_apin, SPICLK, SPIMOSI, SPIMISO, SPICS) # Lecture de
la valeur brute du capteur
print("Current Gas AD vaule = "+str("%.2f"%((COlevel/1024.)*3.3))+" V") # conversion
de la valeur brute lue en volts
time.sleep(20)
smokeLevel = (COlevel/1024.)*3.3
if smokeLevel >= 0.20: #Si le niveau de fumée a depassé 0.2
print("smoke in the area »)
if _name_ == '_main_':
Eya Latrech Page 24
ISET de Radès Juin 2022

try:
main()
pass
except KeyboardInterrupt:
pass
GPIO.cleanup()

 Code du capteur de fumée MQ-135 :

import RPi.GPIO as GPIO


import time

GPIO.setmode(GPIO.BCM)
PIR_SENSOR_PIN = 16 #sortie du capteur au pin 16 du raspberry
GPIO.setup(PIR_SENSOR_PIN, GPIO.IN)
print ("lancement")
time.sleep(1)

try:
while True:
if GPIO.input(PIR_SENSOR_PIN):
print("Mouvement detecté")
time.sleep(1)
except KeyboardInterrupt:
print("cleaning up")
GPIO.cleanup()

 Code du capteur de température et humidité DHT11 :


 Avant d’écrire le code on doit installer la bibliothèque de DHT.

Eya Latrech Page 25


ISET de Radès Juin 2022

Figure n°9 : commande d’installation bibliothèque de DHT

import Adafruit_DHT # Importer bibliothèque du DHT11 a partir d’Adafruit


import time # Importer bibliothéque du system time

DHT_SENSOR = Adafruit_DHT.DHT11 #définir l'objet capteur que nous utiliserons


DHT_PIN = 7 #Sortie du DHT11 lié au pin 7

while True: #créer une boucle infinie pour le prochain bit de code
humidity, temperature = Adafruit_DHT.read(DHT_SENSOR, DHT_PIN)
if humidity is not None and temperature is not None: #si connecté
print("Temp={0:0.1f}C Humidity={1:0.1f}%".format(temperature, humidity))
#Lire les données du DHT11 et afficher
time.sleep(7)

 Code du capteur de présence HCS05 :

import RPi.GPIO as GPIO


import time

GPIO.setmode(GPIO.BCM)
PIR_SENSOR_PIN = 16 #Sortie du HCS05 lié au GPIO pin 16
GPIO.setup(PIR_SENSOR_PIN, GPIO.IN) #Sortie du capteur configuré comme entrée a
la carte
print ("lancement")
time.sleep(1)

Eya Latrech Page 26


ISET de Radès Juin 2022

try:
while True:
if GPIO.input(PIR_SENSOR_PIN): #si le capteur détecte un mouvement
print("Mouvement detecté")
time.sleep(1)
except KeyboardInterrupt: # empêcher l'interpréteur de quitter brusquement le
programme
print("cleaning up")
GPIO.cleanup()

3- Partie communication IOT :


a- MQTT Broker Mosquitto :

Un MQTT pour "Message Queuing Telemetry Transport", est un protocole open


source de messagerie qui assure des communications non permanentes entre des appareils par
le transport de leurs messages.
Mosquitto est le broker le plus souvent utilisé pour les projets ESP8266 (Arduino et
Raspberry). Lancé en 2008, il est disponible sur toutes les plateformes (MacOS, Windows
XP-10, Linux). Deux méthodes sont possibles pour l'installer : depuis le terminal d'un
ordinateur (en connectant au préalable le clavier, la souris et le moniteur à un Pi), avant de le
lancer depuis le terminal, ou (toujours par le biais d'un ordinateur) de l'installer en utilisant
putty (SSH) et en accédant au Root.

b- NODE-RED :

Node-RED est un logiciel permettant de gérer des flows d’événements, des


suites de traitements à effectuer suite à la réception de messages ou évenements. Il contient un
certain nombre de fonctionnalités de base, mais la plupart des fonctionnalités utiles dans notre
cas devront être installées par la suite. Dans Node-RED , une « fonctionnalité » est
représentée sous la forme d’une node , un élement pouvant être placé dans votre flow, reliée à
d’autres nodes en entrée ou en sortie. Le flow représente l’ensemble des nodes. Il n’est pas

Eya Latrech Page 27


ISET de Radès Juin 2022

linéaire et une node reliée à aucune autre peut quand même s’activer si les conditions sont
réunies.
Node-RED contient plusieurs nodes de base qui sont très utiles ou pratiques.
Ces nodes se retrouvent dans tout flow quelque soit le domaine. Ces nodes sont classés par
fonctionnalité.
L’interface de Node-RED se compose de 4 parties, qui sont : A gauche : la liste des
nodes disponibles. Pour les placer sur le flow, selectionnez celle que vous voulez et glissez la
jusqu’à l’endroit voulu. Au centre : les flows. Vous pouvez en ouvrir autant que vous voulez,
chaque flow est indépendant et en peut pas agir sur d’autres. A droite : des onglets utiles. 
L’onglet i permet d’avoir des informations détaillées sur toute node sélectionnée.  L’onglet
debug ( icône d’insecte ) apparaît dès qu’une node debug est placée est permet de voir les
messages de debug.
L’onglet dashboard ( icône de graphe ) apparaît dès qu’une node de dashboard apparaît et
permet d’ y avoir accès.  D’autres onglets peuvent apparaître selon les nodes installées et
placées En haut : Le bouton Deploy permet de « déployer » son flow et de le rentre actif. Le
bouton menu ( Icone de lignes parallèles ) ouvre un menu, qui contient notamment les options
:  View : gérer la vue (afficher ou non les menus des cotés). Permet aussi d’accéder au
débug ou au dashboard si actifs.  Import : charger un flow sauvegardé  Export :
sauvegarder les flows ouverts  Manage Palette : gérer les nodes installées et en installer de
nouvelles  Flows / Subflows : créer un nouveau flow ou subflow.

Eya Latrech Page 28


ISET de Radès Juin 2022

Pour avoir les données du capteurs sur notre téléphone portable , on va créer une
application dans la NODE-RED a partir le broker MQTT Mosquitto .
A la première étape :
 on va installer le Mosquitto .

Eya Latrech Page 29


ISET de Radès Juin 2022

 Tester le publisher et le subscribe

 Ecrire ce programme python dans fichier (on utiliser la bibliothèque paho pour
faciliter la tache)

Eya Latrech Page 30


ISET de Radès Juin 2022

 Ouvrir le NODE-RED et mettre l’adresse IP pour connecte a le broker et lier la carte a


l’application.

Eya Latrech Page 31


ISET de Radès Juin 2022

 On va avoir les mesures sur un Dashboard.

Eya Latrech Page 32


ISET de Radès Juin 2022

4- Partie Electronique programmée (Software) :


A- Logiciel utilisée :

Raspberry Pi Imager est une application permettant d'installer un système


d'exploitation compatible sur un ordinateur Raspberry Pi.
 Installer de l’application :

 Choisir le système d’exploitation :

Eya Latrech Page 33


ISET de Radès Juin 2022

 Choisir la carte SD :

 Choisir un hostname , SSH , nom et mot de passe pour l’ordinateur de


la carte Raspberry pi :

 Cliquer sur écrire et laisser jusqu'à il termine :

Eya Latrech Page 34


ISET de Radès Juin 2022

 Retirer la carte SD et la mettre a la carte Raspberry Pi


 Ouvrir PuTTy configuration et écrire l’adresse Ip de la Raspberry :

Eya Latrech Page 35


ISET de Radès Juin 2022

 Une fenetre s’ouvre ou on écrit le nom et le mot de passe du PC :


Dans notre cas :
Nom : pi / Mot de passe : 0000

 Lancer le VNC Viewer et créer un Pc d’après l’adresse Ip de la carte :

 Ecrire le nom et le mot de passe :

Eya Latrech Page 36


ISET de Radès Juin 2022

 Ouvrir la configuration :

Eya Latrech Page 37


ISET de Radès Juin 2022

 Activer les interfaces :

Eya Latrech Page 38

Vous aimerez peut-être aussi