Vous êtes sur la page 1sur 43

MINISTERE DU COMMERCE, DE REPUBLIQUE DU MALI

Un Peuple – Un But – Une Foi


L’INDUSTRIE ET DE LA PROMOTION
DES INVESTISSEMENTS
***************
CENTRE DE RECHERCHE ET DE
FORMATION POUR L’INDUSTRIE
TEXTILE(CERFITEX)

DER : GENIE INDUSTRIEL

THEME

Elaboré par :
Moumine SANGARE
Mamadou MO SANGHO
Badra Aly dit Manifa DJIRE
Introduction :
La formation au CERFITEX en général surtout dans le domaine de Master en
Génie Industriel en particulier est toujours sanctionnée par des séances de
travaux pratiques, de réalisations de projets, de visites en entreprise et
de voyages d’études. C’est dans cette optique que nous avons réalisé un
projet portant sur l’Acquisition et le Traitement des Données par
Microprogramme (Arduino) et Circuit Intégré (Multiplexeur).
Le projet se base sur l’acquisition et le traitement de données en temps réel
provenant de plusieurs capteurs (Lumière, Distance, Température et
d’Humidité) à travers un multiplexeur analogique pour commander des
dispositifs de sortie (Lampe, Ventilateur, servomoteur) reliés à une carte
Arduino.

La simulation du montage se fera sous Proteus Isis 8.6 SP2 Processionnal et


le code servant à la commande se fera avec l’IDE Arduino.

I- Cahier de charge et Description du Fonctionnement :


1- Cahier de charge :
• Trois capteurs à savoir une photorésistance, un ultrason et un
DHT11 sont branchés aux entrées d’un multiplexeur 74 LS 4051. Le
choix du capteur se fait grâce à un programme piloté par
microcontrôleur dont les CAN servent à la numérisation des signaux
sélectionnés
• Pour sélectionner une entrée, l’adresse de celle-ci doit être envoyée
au multiplexeur. C’est le microcontrôleur qui est chargé d’envoyer
les adresses des différentes entrées au multiplexeur.
L’organigramme du programme à exécuter par le microcontrôleur
pour commander le multiplexeur se trouve à la figure ci-dessous. La
lecture de ces capteurs se fera à tour de rôle de façon cyclique.
• Des LEDs témoins ont pour rôle d’indiquer le capteur qui est en train
d’être lu à un instant « t »
• Toutes les données en provenance des capteurs sont enregistrées
dans un tableur Excel à travers le port série.
• L’écran LCD permet d’afficher la valeur d’un capteur quelconque.
• Le système peut être schématisé comme le montre le diagramme de
la figure suivante

Diagramme de fonctionnement

2- Description du Fonctionnement :
• Une lampe est utilisée dans le circuit et commandée par la
photorésistance. Cette lampe s’allume en fonction d’un seuil de
luminosité fixé
• Le capteur de température commande le moteur DC d’un
ventilateur. La consigne est fixée à 30°C, quand la température
ambiante vient à dépasser cette consigne, le ventilateur se met en
marche. Quand la température revient en dessous de la consigne le
ventilateur s’arrête.
• Le troisième capteur ultrasonic commande un servomoteur. Quand il
y a présence d’objet ou d’une personne à moins de 80 cm le
servomoteur se met à tourner.

II- Description des Matériels et Logiciels utilisés :


A- Les Logiciels (Softwares) :
1- Arduino :
L'environnement de programmation Arduino (IDE) est une application écrite
en Java inspirée du langage Processing. L'IDE permet d'écrire, de modifier un
programme et de le convertir en une série d'instructions compréhensibles
pour la carte. Ce logiciel est téléchargeable gratuitement à l’adresse
http://arduino.cc/en/Main/Software
Une documentation en ligne existe pour aider dans l’installation du logiciel
Arduino. Elle se trouve à l’adresse http://arduino.cc/en/Main/DebuterInstallation
Cette aide supplémentaire peut être utile pour adapter la méthode
d’installation selon le système d’exploitation et le type de microcontrôleur
Arduino à notre disposition
2- Proteus Isis :
Proteus est une suite logicielle permettant la CAO
(conception assistée par ordinateur) électronique éditée
par la société Labcenter Electronics. Proteus est
composé de deux logiciels principaux : ISIS,
permettant entre autres la création de schémas et la
simulation électrique, et ARES, destiné à la création de
circuits imprimés.
Grâce à des modules additionnels, ISIS est également
capable de simuler le comportement d'un
microcontrôleur (PIC, Atmel, 8051, ARM, HC11...) et
son interaction avec les composants qui l'entourent.
3- PLX-DAG :
PLX-DAQ est une macro pour Excel mise au point par la société Parallax
pour permettre aux microcontrôleurs qu’elle commercialise d’envoyer des
données vers Excel. Ce logiciel (macro) est gratuit, et ça fonctionne avec
n’importe quel microcontrôleur capable d’opérer une communication série, ce
qui inclut Arduino.
Pour utiliser PLX-DAQ, nous avons besoin d’un ordinateur muni du logiciel Excel.
Le fichier d’installation de la macro PLX-DAQ est téléchargeable gratuitement
sur le site internet de son fabriquant Parallax dont le lien est le suivant :
https://www.parallax.com/downloads/plx-daq
Le fichier est un fichier compressé qui apparait sous le nom de PLX-
DAQ.zip. Une fois décompressé, on lance l’application
« plx_daq_install.exe ». Ceci a pour but d’installer un dossier « Parallax Inc. »
dans le menu des programmes. Un raccourci du même dossier sera créé sur
le bureau.
Dans ce dossier, on retrouvera un fichier Excel nommé « PLX-DAQ
Spreadsheet ». Quand on ouvre ce fichier Excel, on aura l’affichage comme
le montre la figure suivante

C’est dans cette fenêtre de la figure 2.21 qu’on choisira le port « COM » sur
lequel est branché notre carte Arduino et préciser la vitesse de transmission
« Baud ». Cette vitesse doit être la même que celle écrite dans le
programme Arduino. Ensuite, on aura qu’à cliquer sur le bouton « Connect ».
Si le programme Arduino est parfait, on devra voir apparaitre dans les
cellules d’Excel les données envoyées par la carte Arduino via le port série.
Dans le chapitre suivant, nous montrerons une simulation de cette partie.
La carte Arduino n’est pas disponible au port numéro du logiciel.
Il faut simuler le port. Le logiciel Advanced Virtual COM Port permet de le
faire. 4- Advanced Virtual COM Port :
 Avant d’utiliser ce logiciel, il faut ajouter COMPIN dans Proteus et le
connecter aux port série d’Arduino (TX, RX).

En suite double cliquer sur COMPIN et Voyer le numéro de port :


Ici le port est com1 et le Baud est 9600 comme dans le code Arduino.
 Télécharger et Installer Virtual COM Port :
Le logiciel est disponible en téléchargement à partir de Google. Après
avoir installé le programme, ouvrer le, cliquer sur Local Ports à partir
de la fenêtre principale en suite sur Add.

Dans notre cas, nous allons sélectionne COM1 pour le premier port car notre
COMPIN est au port COM1 et COM4 pour le deuxième qui est notre port
d’Arduino.
En suite cliquer sur OK et vous aurez accès à la fenêtre suivante :
Attention : Ne fermer pas le logiciel si vous voulez faire la simulation ; Le
port série du logiciel Arduino et le logiciel PLX DAQ ne peuvent pas être
connecter en même temps sur le même port, donc il faut fermer l’un pour
pouvoir connecter l’autre.

5- Les Bibliothèques ou Librairies utilisées :


 Sous Arduino :
• Adafruit DHT library for Arduino (pour le DHT 11)
• LiquidCrystal_I2C (pour le LCD en Liaison I2C) ➢ Sous Proteus :

• UltrasonicSensorLibraryforProteus (pour l’Ultrasonic)


• UltrasonicSensor.HEX (fichier compilé pour l’ultrasonic, généralement
inclus dans le précédent).

B- Les Composants physique (Hardwares) :


1- La carte Arduino Uno :
La carte Arduino UNO est une carte à microcontrôleur basée sur
l’ATmega328. Elle est dotée de 14 broches entrées/sorties numériques dont 6
configurables en PWM. Elle dispose également de 6 entrées analogiques,
d’un oscillateur à quartz 16 Mhz, d’une connexion USB. Son brochage ainsi
que son diagramme en bloc se trouvent en annexes 2 et 3. La carte UNO est
généralement livrée prête à fonctionner, il suffit de la connecter à un
ordinateur par le câble USB et de l’alimenter à l’aide d’un adaptateur USB ou
des piles. Ci-dessous sont mentionnées toutes les caractéristiques
techniques de ladite carte :
Microcontrôleur embarqué : ATmega328
Tension de fonctionnement : 5V
Tension d’alimentation : 7 à 12V
Mémoire flash : 32ko dont 0,5ko pour le boot loader
SRAM: 2ko
EEPROM: 1ko
Fréquence d’horloge : 16Mhz
Entrées/sorties numériques : 14 dont 6 PWM
Entrées analogiques : 6
Courant de sortie : 3,3V/50mA
Dimension : 69x54mm

Pour fonctionner, la carte a besoin d’être programmée. Arduino vient avec


son logiciel de programmation téléchargeable gratuitement sur internet.
• L’alimentation de la carte :
La carte Arduino UNO peut être alimentée soit via la connexion USB (qui
fournit 5V jusqu'à 500mA) ou à l'aide d'une alimentation externe. La source
d'alimentation est sélectionnée automatiquement par la carte.
L’alimentation externe (non-USB) peut être soit un adaptateur secteur
(pouvant fournir typiquement de 3V à 12V sous 500mA) ou des piles (ou
des accus). La carte peut fonctionner avec une alimentation externe de 6 à
20 volts. Cependant, si la carte est alimentée avec moins de 7V, la broche
5V pourrait fournir moins de 5V et la carte pourrait être instable. Si on
utilise plus de 12V, le régulateur de tension de la carte pourrait chauffer et
endommager la carte. Aussi, la plage idéale recommandée pour alimenter
la carte UNO est entre 7V et 12V.
2- L’Ecran LCD :
L’affichage sur un petit écran LCD est une solution bien plus élégante et
pratique. L’un des écrans LCD les plus répandu dans le monde Arduino et qui
est souvent fourni avec les kits de base est le modèle dit 16x2 LCD (il est
capable d’afficher deux lignes de 16 caractères chacun).

Tous les modèles d’écran LCD sont dotés de 16 Pins dont le câblage est
le suivant :
Les deux premiers pins tout à gauche servent à l'alimentation de l'écran.
Pôle négatif ou GND pour le premier et pôle positif (5V) pour le 2ème. •
Le 3ème pin est connecté à un potentiomètre et sert à régler le contraste
de l'écran LCD.
• Le 4ème, noté RS pour Register Select, est connecté au pin 12 de
l'Arduino. Il sert à sélectionner la zone mémoire de l'écran LCD dans
laquelle nous allons écrire.
• Le 5ème doit être connecté au ground (GND).
• Le 6ème, noté E pour Enable, est connecté au pin 11 de l'Arduino. Il permet
de lancer ou non l'écriture dans les zones mémoires.
• Les quatre suivants (7, 8, 9 et 10ème) sont reliés au ground (GND).
• Les quatre qui suivent (11 à 14ème, notés 5, 4, 3, 2 sur le schéma
cidessus, car ils se connectent sur les Pins 5, 4, 3, 2 de l'Arduino. Ils
servent pour la transmission des données à afficher.
• Les deux pins tout à droite (15 et 16ème) servent pour alimenter la LED du
rétroéclairage de l’écran
LCD. Attention l’avant-dernier (pôle positif 5V) doit impérativement être
protégé par une résistance d’environ 220 Ω. Le dernier est relié au pôle
négatif (GND).
3- Le Potentiomètre :
Un potentiomètre est un type de résistance variable à trois bornes, dont une
qui est relié à un curseur se déplaçant sur une piste résistante terminée par
les deux autres bornes. Ce système permet de recueillir, entre la borne reliée
au curseur et une des deux autres bornes, une tension qui dépend de la
position du curseur et de la tension à laquelle est soumise la résistance.
Les potentiomètres sont couramment employés dans les circuits
électroniques. Ils servent par exemple à contrôler le volume d'une radio. Les
potentiomètres peuvent aussi être utilisés comme des transducteurs puisqu'ils
convertissent une position en une tension.

Un potentiomètre, pour fonctionner correctement doit être branché sur


une carte Arduino comme le montre la figure 2.10. L’une des broches
externes doit être connectée à la masse (0V) et l’autre broche externe
connectée au potentiel 5V. La troisième patte au milieu est reliée à une
entrée analogique de la carte Arduino, la broche A0 dans notre cas. En
tournant l’axe du potentiomètre, on modifie la résistance entre la broche
médiane et les broches externes du potentiomètre. Ceci a pour effet de
modifier la tension sur la broche de sortie du potentiomètre (broche du
milieu). L’intérieur du potentiomètre réagit en diviseur de tension.
La carte Arduino dispose d’un circuit intégré interne, présent dans le
microcontrôleur de la carte, appelé « convertisseur analogiquenumérique »
en abrégé CAN. Il convertit la tension en volts présente à son entrée en une
valeur numérique comprise entre 0 et 1023, soit une échelle de 10 bits.
Cette valeur est très précisément proportionnelle à la tension présente à
l’entrée. On distingue trois cas :
Quand l’axe du potentiomètre est tourné à fond vers la broche connectée à
5V, la tension de sortie vaut 5V et le CAN renvoie la valeur maximale, soit
1023 ;
Quand l’axe du potentiomètre est tourné à fond dans l’autre sens, c’est-adire
vers la broche connectée) la masse, la tension de sortie vaut 0V, le
CAN renvoie la valeur minimale, soit 0 ;
Dans le dernier cas, l’axe du potentiomètre est en position intermédiaire, la
tension présente varie entre 0V et 5V, le CAN renvoie une valeur
proportionnelle à la tension comprise entre 0 et 1023.
Rappelons que la précision de la mesure est de l’ordre de 0,0049V
(5V÷1023=0,0049) soit 5mV environ, ce qui est précis et largement
suffisant pour l’utilisation de nombreux capteurs analogiques.
4- Le DHT11 :
Le DHT11 est un capteur qui permet à la fois la mesure de la température et
de l’humidité de l’environnement dans lequel il se trouve. Il est couramment
utilisé dans la climatisation.
Sur le schéma, nous pouvons remarquer que le DHT11 a quatre broches dont
les fonctions sont les suivantes :
Les pattes 1 et 4 sont respectivement connectées à +Vcc et la masse ;
La patte 2 est la sortie ;
La patte 3 n’est pas utilisée.
Notons que le DHT existe en plusieurs versions dont le DHT11 et le DHT22.
La différence entre ces deux variantes est que le deuxième a une plage de
mesure beaucoup plus importante que le premier. Dans le tableau 2.1, nous
pouvons voir une comparaison des deux variantes du DHT.
Retenons qu’un DHT peut s’utiliser aussi bien en analogique qu’en
numérique. L’intérêt de l’utiliser en numérique est que dans ce cas la
lecture est plus rapide.
5- Les Leds :
Une diode électroluminescente (abrégé en DEL en français, ou 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.

Le courant électrique ne peut traverser la diode que dans le sens de l’anode


vers la cathode.
On reconnaît l’anode, car il s’agit de la broche la plus longue. Lorsque les
deux broches sont de même longueur, on peut distinguer l’anode de la
cathode, par un méplat du côté de cette dernière. Le symbole de la LED est
le suivant :

6- Le capteur Ultrasonic :
Comme son nom l’indique, le capteur Ultrasonic émet un ultrason de 40 000
Hz à partir de l’émetteur (Trig) qui se déplace dans l'air et s'il y a un objet ou
un obstacle sur son trajet, il rebondit sur le récepteur (Echo) du module.
Compte tenu du temps de trajet et de la vitesse du son, vous pouvez calculer
la distance.

Il comporte quatre pins (Ground, VCC, Trig et Echo). Le Ground et le Vcc


servent à l’alimentation du module. Le Ground est relié à la masse provenant
de la carte Arduino et le VCC à la source de tension (3,3V ou 5V). Le pin Trig
et Echo sont connectés aux Sorties - Entrées (Output - Input) digital de la
carte Arduino. Afin de générer l'échographie, vous devez définir le Trig sur un
état élevé pendant 10 μs.
Cela enverra une rafale sonore de 8 cycles qui se déplacera à la vitesse du
son et sera reçue dans la broche Echo. La broche Echo affichera le temps en
microsecondes parcouru par l'onde sonore.

7- Le Ventilateur et Moteur DC :
C’est un dispositif, appareil qui, souvent au moyen de pales, permet de
renouveler, de brasser l'air dans un lieu fermé, de rafraîchir l'atmosphère d'un
lieu en mettant de l'air en mouvement grâce à un moteur à courant continu.

8- La Lampe :
Une lampe électrique est un objet destiné à convertir de l'énergie électrique
en lumière.
21-Le Relais :
Un relais électromécanique est un organe électrique permettant de dissocier la
partie puissance de la partie commande : il permet l'ouverture et la fermeture
d'un circuit électrique par un second circuit complètement isolé (isolation
galvanique) et pouvant avoir des propriétés différentes.

10- La photorésistance (LDR) :


La photorésistance est également appelée LDR (Light Depending Resistor). Une
photorésistance est un composant électronique dont la résistance (en Ohm Ω)
varie en fonction de l'intensité lumineuse. Plus la luminosité est élevée, plus la
résistance est basse. On peut donc l'utiliser comme capteur lumineux pour :
• Mesure de la lumière ambiante pour une station météo.
• Détecteur de lumière dans une pièce.
• Suiveur de lumière dans un robot.
• Détecteur de passage.
Symboles :

Sur ce composant, deux électrodes sont séparées par un semi-conducteur très


résistant en forme de Zig-Zag. Lorsque ce semiconducteur va absorber les
photons qui constitue la lumière, ces mêmes photons vont fournir de l’énergie
aux électrodes pour faciliter leur déplacement entre les deux électrodes. Donc si
le déplacement des photons est facilité alors la résistance diminue, c’est pour
quoi plus la photorésistance est exposée à la lumière, plus sa résistance est
faible mais par contre elle ne diminue pas linéairement.
Les semiconducteurs sont sous forme de Zig-Zag pour augmenter sa
sensibilité à la lumière.
11. Le servomoteur :
Un servomoteur est un moteur conçu pour produire le mouvement précis d’un
élément mécanique selon une commande externe. Ainsi, le servomoteur
connecté à notre carte Arduino produit un mouvement précis analogue au
mouvement du potentiomètre.

12- Les résistances :


Une résistance est un composant électronique ou électrique dont la principale
caractéristique est d'opposer une plus ou moins grande résistance (mesurée
en ohms: Ω) à la circulation du courant électrique. On peut alors comparer, le
débit d’eau au courant électrique I (qui est d’ailleurs le débit d’électrons), la
différence de pression à la différence de potentiel électrique (qui est la tension
U) et, enfin, le rétrécissement à la résistance R.
Ainsi, pour une tension fixe, plus la résistance est faible, plus le courant la
traversant est fort. Cette proportion est vérifiée par la loi d’Ohm:
𝑈 = 𝑅 ∙ 𝐼 𝑒𝑡 𝑑𝑜𝑛𝑐 𝑅 = 𝑈/𝐼 𝑒𝑡 𝐼 = 𝑈/𝑅
Une résistance est un milieu peu conducteur; les électrons peinent à s’y
déplacer. Leur énergie se dissipe alors en général sous forme de chaleur.
C’est ce principe utilisé pour les bouilloires électriques ou les ampoules à
filaments.
La valeur de la résistance se mesure en Ohms (Ω). La valeur d’une résistance
est déterminée par ses bandes de couleurs.

13. Le Multiplexeur :
Le multiplexage consiste à envoyer sur une même ligne de transmission des
informations provenant de sources différentes.
Dans le cadre de notre projet, il s’agira d’envoyer sur une même entrée
analogique de la carte Arduino, des informations provenant de plusieurs
capteurs, huit au total. Pour ce faire, nous allons utiliser un multiplexeur huit vers
un (8 vers 1). Notre choix a porté sur le multiplexeur 74HC4051. Il existe aussi en
version CD4051B. C’est le même circuit intégré, seule la technologie de
fabrication utilisée est différente.

Le circuit intégré 74HC4051 est un multiplexeur/démultiplexeur analogique


huit voies bidirectionnelles. Il est conçu pour manipuler des signaux
analogiques, mais rien n’empêche de l’utiliser avec des signaux numériques
si besoin. C’est un très bon outil pour connecter un grand nombre de boutons
poussoirs par exemple. Sur la figure 2.14, nous pouvons voir le brochage du
circuit CD4051B identique à celui du 74HC4051.
Pour le câblage du CD4051B (74HC4051) on retrouve les éléments suivants :
• Une broche d’alimentation positive (VDD, de 3 à 20 volts maximum) ; Une
broche d’alimentation négative (VEE, optionnelle, uniquement si besoin de
mesurer des signaux analogiques inferieurs à 0V, sinon à relier à la masse) ;
• Une masse (VSS) ;
• Huit broches d’entrées/sorties indépendantes sur lesquelles connecter des
capteurs/actionneurs ;
• Trois broches d’adresses (A, B, C) pour sélectionner la voie à connecter ;
• Une broche d’activation (INH) ;
• Une broche d’entrée/sortie commune sur laquelle connecter sa carte Arduino.
Le principe de fonctionnement est assez simple :
On choisit la voie à activer en binaire avec les broches A, B et C, La
broche INH étant reliée à la masse.
Dans le tableau 2.2 se trouve la table de vérité du multiplexeur permettant
d’activer les entrées/sorties.
Table de vérité du multiplexeur CD4051B

(0=niveau bas, 1=niveau haut, X=indifférent)


INH C B A Voie active

0 0 0 0 0

0 0 0 1 1

0 0 1 0 2

0 0 1 1 3

0 1 0 0 4

0 1 0 1 5
0 1 1 0 6

0 1 1 1 7

1 X X X Aucune

Les sorties numériques de la carte Arduino peuvent prendre deux états :


niveau bas (0) ou niveau haut (1). C’est donc à ces sorties que seront
câblées les broches de sélection A, B et C.
On choisit la voie à activer en binaire. Pour activer par exemple la broche 3, le
nombre binaire à envoyer sera « 011 », soit C à 0, B à1 et A à 1. Lorsque la
broche « INH » est au niveau haut, quel que soit l’état des broches A, B et C,
aucune voie n’est active.
Dans le chapitre suivant, nous proposerons le programme Arduino permettant
de lire les entrées une par une, et ceci en boucle.

V- Réalisation du projet proprement dit :


Après avoir acquis les notions de base pour la réalisation de l’ensemble du
projet, nous allons donc interconnecter tous les éléments précédemment
décrits.

a- Montage sous Proteus Isis :


Nous allons câbler l’ensemble des composants comme sur la figure qui suit.
Les trois capteurs, à savoir (le capteur de distance (Ultrasonic), le capteur de
luminosité (LDR), et le capteur de Température et d’Humidité (DHT11)) sont
branché sur le multiplexeur (74HC4051) pour être lus un par un par le
microcontrôleur à travers une entrée analogique.
Les Leds témoins, le servomoteur, la Lampe, le Relay du Moteur DC
commandant le ventilateur ainsi que le COMPIN sont directement reliés au
microcontrôleur Arduino Uno pour être commandés en sortie digital.
b- Programme sous l’IDE Arduino :
Le fichier principal :

Code pour le Fichier Principale (Programme_Principale.ino) :


#include <LiquidCrystal_I2C.h> // Biliothèque
#include <Servo.h>
#include <DHT.h> // Biliothèque
Servo myservo_1; // create servo object to control a servo
int pos = 0;

LiquidCrystal_I2C LCD(0x27, 20, 4);


const char DOUT_Lampe = 2; // Sortie Digital pour commander la lampe par la Photorésistance
const char DOUT_Ventilateur = 4; // Sortie Digital pour commander le Ventilateur
const char DOUT_ServoMoteur = 3; // Sortie Digital pour commander le Buzzer
const char DIN_Trigger = 5; // Entrée Didital pour lire la Distance sur L'Ultrasonic
const char DOUT_Led_Temoin_LDR = 6; // Sortie Digital pour indiquer que le Capteur de Luminosité est
lu à l'instant t
const char DOUT_Led_Temoin_DHT = 7; // Sortie Digital pour indiquer que le Capteur de Temperature
est lu à l'instant t
const char DOUT_Led_Temoin_ULTRA = 8; // Sortie Digital pour indiquer que le Capteur de Distance est
lu à l'instant t
const char A = 11; // Broche de Selection A du Multiplexeur
const char B = 10; // Broche de Selection B du Multiplexeur
const char C = 9; // Broche de Selection C du Multiplexeur
const char DIN_Capteurs = A3; // Entrée de Selection des capteurs par la carte Arduino
#define DHTTYPE DHT11 // Type de capteur utilisée = DHT11
DHT dht(DIN_Capteurs, DHTTYPE); // Initialiser la Librairie DHT11

int Valeur_Lue_Sur_LDR = 0;
int Temperature_Lue_Sur_DTH11 = 0;
int Humidite_Lue_Sur_DTH11 = 0;
int Distance_Lue_Sur_UltraSonic = 0;

void Initialisation() {
Serial.begin(9600); // debut de la transmission sur le port serie
LCD.init(); // initialisation du LCD
dht.begin();
pinMode(DOUT_Lampe, OUTPUT);
pinMode(DOUT_Ventilateur, OUTPUT);
pinMode(DOUT_Led_Temoin_LDR, OUTPUT); //C branchée sur la sotie 9 du uC
pinMode(DOUT_Led_Temoin_DHT, OUTPUT); //C branchée sur la sotie 9 du uC
pinMode(DOUT_Led_Temoin_ULTRA, OUTPUT); //C branchée sur la sotie 9 du uC
pinMode(A, OUTPUT); //A branchée sur la sotie 11 du uC
pinMode(B, OUTPUT); //B branchée sur la sotie 10 du uC
pinMode(C, OUTPUT); //C branchée sur la sotie 9 du uC
}

void setup() {
Initialisation(); // Appel à la méthode Initialisation du fichier Initialisation.h
myservo_1.attach(DOUT_ServoMoteur); // attaches the servo on pin 9 to the servo object
}
void loop() {
Photo_Resistance(); // Appel à la méthode
delay(500);
UltraSonic(); // Appel à la méthode
delay(500);
Capteur_De_Temperature(); // Appel à la méthode
delay(500);
Envoi_Des_Data_Vers_Excel(); // Appel à la méthode
}

// Méthode Pour Afficher Sur le LCD


void Afficher_Sur_LCD(String Mot, float Valeur, String Unitee) {
LCD.clear();
LCD.setCursor(0, 0);
LCD.print(Mot);
LCD.setCursor(0, 1);
LCD.print(Valeur);
LCD.print(Unitee);
}

// Méthode Pour Allumer les Leds Temoin


void Allumer_Led_Temoin(const char Led_A_Allumer, const char Led_A_Etteindre_1, const char
Led_A_Etteindre_2) {
digitalWrite(Led_A_Allumer, HIGH);
digitalWrite(Led_A_Etteindre_1, LOW);
digitalWrite(Led_A_Etteindre_2, LOW);
}
// Méthode Pour Envoyer les données vers Excel
void Envoi_Des_Data_Vers_Excel() {
//Serial.println("LUMINOSITE, DISTANCE, TEMPERATURE, HUMIDITE");
Serial.print("DATA,TIME,");
Serial.print(Valeur_Lue_Sur_LDR);
Serial.print(",");
Serial.print(Distance_Lue_Sur_UltraSonic);
Serial.print(",");
Serial.print(Temperature_Lue_Sur_DTH11);
Serial.print(",");
Serial.println(Humidite_Lue_Sur_DTH11);
delay(500);
}

// Méthode Pour Le contrôle de la PhotoRésistance


float Photo_Resistance() {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
delay(10);
Allumer_Led_Temoin(DOUT_Led_Temoin_LDR, DOUT_Led_Temoin_DHT, DOUT_Led_Temoin_ULTRA);
Valeur_Lue_Sur_LDR = analogRead(DIN_Capteurs);
Afficher_Sur_LCD("LUMINOSITE", Valeur_Lue_Sur_LDR, " LUX");
if (Valeur_Lue_Sur_LDR < 500) {
digitalWrite(DOUT_Lampe, HIGH);
} else {
digitalWrite(DOUT_Lampe, LOW);
}
return Valeur_Lue_Sur_LDR;
}

// Méthode Pour le Contrôle de l'Ultrasonic


float UltraSonic() {
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
delay(10);
Allumer_Led_Temoin(DOUT_Led_Temoin_ULTRA, DOUT_Led_Temoin_DHT, DOUT_Led_Temoin_LDR);
// Créer une impulsion de 10µs sur le Trigger
digitalWrite(DIN_Trigger, LOW);
delayMicroseconds(2);
digitalWrite(DIN_Trigger, HIGH);
delayMicroseconds(10);
digitalWrite(DIN_Trigger, LOW);
// Mesure la durée de l'impulsion sur l'ECHO et converti cette durée en distance (cm)
Distance_Lue_Sur_UltraSonic = pulseIn(DIN_Capteurs, HIGH) / 58.0;
Afficher_Sur_LCD("DISTANCE", Distance_Lue_Sur_UltraSonic, " cm");
if (Distance_Lue_Sur_UltraSonic < 80) {
for (pos = 0; pos < 180; pos += 2) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo_1.write(pos); // tell servo to go to position in variable ‘pos’
delay(5);// waits 15ms for the servo to reach the position
}
for (pos = 180; pos >= 1; pos -= 2) // goes from 180 degrees to 0 degrees
{
myservo_1.write(pos);
delay(5);
}
} else {
myservo_1.write(0);
}
return Distance_Lue_Sur_UltraSonic;
}

// Méthode Pour le contrôle du DHT11


float Capteur_De_Temperature() {
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
delay(10);
Allumer_Led_Temoin(DOUT_Led_Temoin_DHT, DOUT_Led_Temoin_LDR, DOUT_Led_Temoin_ULTRA);
Temperature_Lue_Sur_DTH11 = dht.readTemperature(); // lecture de temperature
Humidite_Lue_Sur_DTH11 = dht.readHumidity(); // lecture d'humidité
LCD.clear();
LCD.setCursor(0, 0);
LCD.print("TEMPERATURE ");
LCD.print(Temperature_Lue_Sur_DTH11);
LCD.print("*C");
LCD.setCursor(0, 1);
LCD.print("HUMIDITE ");
LCD.print(Humidite_Lue_Sur_DTH11);
LCD.print("%");
if (Temperature_Lue_Sur_DTH11 > 30) {
digitalWrite(DOUT_Ventilateur, HIGH);
} else {
digitalWrite(DOUT_Ventilateur, LOW);
}
return Temperature_Lue_Sur_DTH11;
return Humidite_Lue_Sur_DTH11;
}
c- Simulation sous isis Proteus :

Pour Compiler et Téléverser l’ensemble du programme, retourner sur l’IDE Arduino puis cliquer sur l’onglet croquis puis
sur Exporter les binaires compilées (Ctrl + Alt + S) pour créer automatique dans le dossier du projet, un fichier compiler
(.HEX) lisible par la carte Arduino.
Ensuite à partir de Proteus faite un double clic sur la carte Arduino pour sélectionner le fichier compilé (.HEX).

Cliquer sur Ok pour en fin lancer la simulation comme dans les cas précédents.

Voici les résultats de la simulation que vous devriez avoir aussi :


d- Envoi des donnés vers Excel Avec PLX-DAG :
La méthode de configuration de PLX-DAG et de Virtual COM Port pour
l’envoi des données vers Excel a été précédemment décrite, après avoir
réalisé toutes les configurations j’ai obtenu les données sur la figure de la
page suivante.
42
VI- Conclusion :

Ce projet nous a permis d’avoir une approche vis-à-vis de l’instrumentation Industrielle,


d’approfondir mes connaissances sur le microcontrôleur ainsi que l’utilisation et le mode de
fonctionnement de plusieurs capteurs.

Il nous a aussi permis de pouvoir réaliser des projets plus complexes de ce genre sur
l’acquisition de données en temps réel, de pouvoir extraire. Exploiter et envoyer vers Excel
des données reçues des environnements physique.
Les résultats obtenus au terme de ce projet sont satisfaisants.

43

Vous aimerez peut-être aussi