Vous êtes sur la page 1sur 19

Université Sidi Mohamed Ben Abdellah Année Univ.

2021 /2022
Ecole Nationale des Sciences appliquées GSII2
de Fès

Série 2 de TD :
Conception des objets connectés sous Proteus

I. Présentation du capteur LM35

Le circuit LM35 est un capteur « analogique » de température. Le capteur de température LM35


est capable de mesurer des températures allant de -55°C à +150°C avec une précision de de
±0,5°C

 Mesure de la température avec un capteur LM35

L’utilisation des « Mots clés » accélère grandement la recherche des composants dans la boite
de dialogue « Pick Devices » de Proteus, qu’on peut afficher en choisissant « Pick parts from
libraries » dans le menu « library »
Par exemple pour trouver rapidement le capteur de température LM35 saisissez simplement
LM35 dans « Mots clés » puis double-cliquez sur le composant.

1
Université Sidi Mohamed Ben Abdellah Année Univ. 2021 /2022
Ecole Nationale des Sciences appliquées GSII2
de Fès

1. Réalisez sous Proteus le Montage ci-dessous en utilisant un capteur LM35, une carte
Arduino UNO, et un afficheur LCD

2. Pour pouvoir simuler cet exemple, Proteus a besoin de la bibliothèque Arduino. Après
avoir extrait les fichiers (ARDUINO.IDX et ARDUINO.LIB), placez-les dans le dossier
Bibliothèque (ex: C: \Program Files\Labcenter Electronics\ Proteus 8 Professional\
LIBRARY)

3. Ecrire un programme Arduino qui permet l’affichage de la température sur l’écran LCD
en utilisant la fonction « DHT.temperature ». Ouvrir le « ARDUINO IDE » et taper le
code suivant :
// déclarer la bibliothéque LiquidCrystal
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

void setup() {
lcd.begin(16,2);
lcd.setCursor(1,0);
lcd.print("Temp= ");
lcd.setCursor(10,0);
lcd.print("C");
lcd.setCursor(1,1);
lcd.print("ENSA FES");
}
void loop() {
int Valeur=analogRead(A0);
int Vout=Valeur*5.0/1023*1000;
int temp=Vout/10;
lcd.setCursor(7,0);
lcd.print(temp);
}

2
Université Sidi Mohamed Ben Abdellah Année Univ. 2021 /2022
Ecole Nationale des Sciences appliquées GSII2
de Fès

4. Placer la ligne suivante dans « Programme file » d’ARDUINO UNO:


C:\\Users\\MVA\\AppData\\Local\\Temp\\arduino_build_964808/sketch_aug2a
ino.hex
5. Lancez la simulation en appuyant sur la touche F12 du clavier
6. Ce capteur est-il actif ou passif ? Justifier la réponse.

II. Capteur LDR


Le capteur de luminosité LDR (Light Dependant Resistor) est une résistance sensible à la
lumière. Sa valeur diminue lorsque l'intensité lumineuse augmente et inversement.
Son principe se présente comme suit, tel que, le capteur LDR est une photorésistance, une
cellule photo-électrique sensible à la quantité de lumière reçue. Une variation de lumière (ou
d'ombre) provoque une variation de signal. C'est un capteur passif. Ces capteurs sont sensibles
à la lumière visible comme à l'infra-rouge.
L'unité de mesure de l'intensité lumineuse est le Lux.

1. Créer un nouveau projet et cliquez sur le bouton « Pick divices »(P) pour
rechercher les composants nécessaires.
2. Dans la boîte de recherche, tapez "Arduino" et choissiez «Arduino UNO» puis valider.
Maintenant, cliquez sur le bouton P, tapez "LDR" et choisissiez «LDR
TORCH_LDR» puis valider.
3. Ecrire un programme Arduino permettant d’afficher la variation de luminosité sur
l’écran LCD.
4. Lancer la simulation en cliquant sur F12. Vérifier et analyser le fonctionnement de
capteur LDR

3
Université Sidi Mohamed Ben Abdellah Année Univ. 2021 /2022
Ecole Nationale des Sciences appliquées GSII2
de Fès

// déclarer la biblio LiquidCrystal


#include <LiquidCrystal.h>
//Déclarer une variable lcd avec les ports utilisés
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

void setup() {
// initialiser l'écran LCD
lcd.begin(16,2);
//Imprimer un message sur l'écran
lcd.setCursor(0,0);
lcd.print("LDR= ");
lcd.setCursor(1,1);
lcd.print("ENSA FES");
}
void loop() {
int valeur = analogRead(A0);
lcd.setCursor(6,0);
lcd.print(valeur);

5. Vérifier le fonctionnement du capteur LDR

III. Présentation du capteur DHT22


Le capteur DHT22 est un capteur de température et d’humidité à sortie « numérique » sérielle.
La liaison entre la carte Arduino et le capteur est assurée par un microcontrôleur 8 bits intégré
dans le corps du DHT22. Une bibliothèque permet le capteur de communiquer avec la carte
ARDUINO.

 Mesure de température et de l’humidité avec un capteur DHT22

4
Université Sidi Mohamed Ben Abdellah Année Univ. 2021 /2022
Ecole Nationale des Sciences appliquées GSII2
de Fès

1. Réalisez sous Proteus le Montage ci-dessous en utilisant un capteur DHT22, une carte
Arduino UNO, et un afficheur LCD

2. Pour pouvoir simuler cet exemple, Proteus a besoin de la bibliothèque Adafruit pour la
série DHT (placez le dossier nommé DHT dans le dossier « library d'Arduino »)
3. Ecrire un programme Arduino permettant d’afficher la température et le taux d'humidité
sur le moniteur série et sur l’écran LCD en utilisant la fonction « DHT.temperature » et
« DHT.humidity » après avoir inclus la bibliothèque <dht.h>.

5
Université Sidi Mohamed Ben Abdellah Année Univ. 2021 /2022
Ecole Nationale des Sciences appliquées GSII2
de Fès

// Interfacing Arduino with DHT22 humidity and temperature


sensor
// include LCD library code
#include <LiquidCrystal.h>
// include DHT library code
#include "DHT.h"
#define DHTPIN 8 // DHT22 data pin is connected to
Arduino pin 8

// LCD module connections (RS, E, D4, D5, D6, D7)


LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

#define DHTTYPE DHT22 // DHT22 sensor is used


DHT dht(DHTPIN, DHTTYPE); // Initialize DHT library

char temperature[] = "Temp = 00.0 C";


char humidity[] = "RH = 00.0 %";
void setup() {
// set up the LCD's number of columns and rows
lcd.begin(16, 2);
dht.begin();
}

void loop() {
delay(1000); // wait 1s between readings
// Read humidity
int RH = dht.readHumidity() * 10;
//Read temperature in degree Celsius
int Temp = dht.readTemperature() * 10;

// Check if any reads failed and exit early (to try again)
if (isnan(RH) || isnan(Temp)) {
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Error");
return;
}

if(Temp < 0){


temperature[6] = '-';
Temp = abs(Temp);
}
else
temperature[6] = ' ';
temperature[7] = (Temp / 100) % 10 + 48;
temperature[8] = (Temp / 10) % 10 + 48;
temperature[10] = Temp % 10 + 48;
temperature[11] = 223; // Degree symbol ( °)
if(RH >= 1000)
humidity[6] = '1';

6
Université Sidi Mohamed Ben Abdellah Année Univ. 2021 /2022
Ecole Nationale des Sciences appliquées GSII2
de Fès

else
humidity[6] = ' ';
humidity[7] = (RH / 100) % 10 + 48;
humidity[8] = (RH / 10) % 10 + 48;
humidity[10] = RH % 10 + 48;
lcd.setCursor(0, 0);
lcd.print(temperature);
lcd.setCursor(0, 1);
lcd.print(humidity);
}

4. Copiez la ligne suivante dans « Programme file » d’ARDUINO UNO:


C:\\Users\\MVA\\AppData\\Local\\Temp\\arduino_build_95227/sketch_nov23c.ino.hex
5. Lancez la simulation en appuyant sur la touche F12 du clavier
6. Vérifier et analyser le fonctionnement de capteur DHT
7. Comparaison des différentes mesures de la température
a. Ecrire un programme qui permet la mesure de la température par 2
méthodes différentes et son affichage sur 3 digits (2 pour la partie entière et 1
pour la partie décimale) :
i. TDHT22 : Température mesurée par le capteur DHT22.
ii. TDEF : Température mesurée par le capteur LM35 avec tension de
référence 5V analogReference(DEFAULT)
8. Citer d’autre types de capteurs d’humidité/ température et faire une comparaison en
terme de performance et précision.

IV. Capteur de courant à effet de Hall : Acs712


Le capteur ACS712 est un capteur de courant à effet de Hall qui se branche en série avec la
charge sur un circuit alternatif et permet de mesurer le courant qui traverse le capteur. Le capteur
utilise le champ magnétique généré par le courant (et donc l'effet hall) pour mesurer le courant
qui le traverse. Le capteur produit en sortie une tension continue proportionnelle au courant à
raison de 0.100V/A (100 mV par ampère). Vous pouvez donc lire cette tension sur une entrée
analogique de votre Arduino.

7
Université Sidi Mohamed Ben Abdellah Année Univ. 2021 /2022
Ecole Nationale des Sciences appliquées GSII2
de Fès

 Mesure de courant avec le capteur ACS712

1. Réalisez sous Proteus le Montage ci-dessous en utilisant un capteur ACS712, une


carte Arduino UNO, un moteur et un afficheur LCD
2. Ecrire un programme Arduino permettant d’afficher l’intensité de courant sur l’écran
LCD.

#include <LiquidCrystal.h>

//Définir les pins utilisés pour l'écran LCD

LiquidCrystal LCD(9, 8, 5, 4, 3, 2);


double AcsOffset=2.5; // la valeur du tension de sortie du
capteur lorsque le courant =0
double Sensibl=0.066; // La valeur de la sensibilité du
capteur
double courant=0;
double tension=0;

void setup() {
// Initialiser l'écran Lcd
LCD.begin(16,2);

void loop() {

// Définir la valeur lue par le capteur sur le pin A0


double ValeurLue=analogRead(A0);
// Convertir cette valeur à une tension comprise entre 0 et
5V
tension=(ValeurLue*5.0/1023);

8
Université Sidi Mohamed Ben Abdellah Année Univ. 2021 /2022
Ecole Nationale des Sciences appliquées GSII2
de Fès

// Définir la formule de calcule du courant


courant=(tension-AcsOffset)/Sensibl;
// Déplacer le curseur sue l'écran LCD
LCD.setCursor(0,0);
// Imprimer la valeur du courant sur l'écran LCD

LCD.print("Courant=");
LCD.print(courant);
LCD.print(" Amp");
delay(500);

3. Copiez la ligne suivante dans « Programme file » d’ARDUINO UNO:


C:\\Users\\MVA\\AppData\\Local\\Temp\\arduino_build_95227/sketch_nov23c.ino.h
ex
4. Ajouter 3 moteurs de manière parallèle, et observer l’intensité de courant dans
l’afficheur

5. Lancez la simulation en appuyant sur la touche F12


6. Vérifier le fonctionnement du capteur
7. Ce capteur est-il passif ou actif ?
8. Citer d’autre types de capteur de l’intensité de courants et comparer les avec le
capteur ACS712

9
Université Sidi Mohamed Ben Abdellah Année Univ. 2021 /2022
Ecole Nationale des Sciences appliquées GSII2
de Fès

V. Capteur Ultrason HC-SR04

Le capteur à ultrasons, également appelé «capteur de


ping», est utilisé pour détecter les objets et mesurer la
distance entre le capteur et l'objet.

Le détecteur HC-SR04 utilise les ultrasons pour


déterminer la distance à laquelle se trouve un objet.
Peu importe l'intensité de la lumière, la température
ou le type de matière, le capteur pourra facilement
détecter s'il y a un obstacle devant lui. Tout de fois, il
peut être contraint sur certains types de couleurs tels
que le noir (contraste), ou encore sur la matière
comme le textile. Son champ de vision est de 90° environ selon l'environnement. Si une
impulsion de plus de 10µS est détectée, alors le capteur envoie une série de 8 impulsions
à ultrason de 40kHZ et attends le réfléchissement du signal. Ensuite, en ayant en tête la
vitesse du son, il effectue un rapide calcul pour déterminer la distance.

1. Principe de fonctionnement
L'émetteur et le récepteur sont situés dans le même boîtier. L'émetteur envoie un train
d'ondes qui va se réfléchir sur l'objet à détecter et ensuite revenir à la source. Le temps mis
pour parcourir un aller-retour permet de déterminer la distance de l'objet par rapport à
la source. Plus l'objet sera loin plus il faudra longtemps pour que le signal revienne.
Pour détecter le niveau (la distance d), on utilise l’équation :

 t étant le temps vu au dessus entre le début de l’émission et le début de la réception


 et v étant la vitesse du son qui est de 330 m.s-1.

2. Mesure de la distance avec un capteur Ultrason HC-SR04

10
Université Sidi Mohamed Ben Abdellah Année Univ. 2021 /2022
Ecole Nationale des Sciences appliquées GSII2
de Fès

1- Réaliser sous Proteus le Montage ci-dessous en utilisant un capteur ultrason HC SR04, une
carte Arduino UNO, un potentiomètre (POT HG) et un terminal virtuel pour afficher la
distance.
3- Extraire le dossier de bibliothèque de capteur Ultrason et placer les fichiers
« UltrasonicTEP.LIB » « UltrasonicTEP.IDX » dans C:\Program Files (x86)\Labcenter
Electronics\Proteus 7 Professional\LIBRARY”, puis placer le fichier « UltraSonicTEP.HEX »
dans “C:\Program Files (x86)\Labcenter Electronics\Proteus 7 Professional\BIN”

4 – Ecrire un programme Arduino qui permet l’affichage de la distance sur le terminal virtuel.
Ouvrir le « ARDUINO IDE » et taper le code suivant :

const int echoPin = 2; // Echo Pin of Ultrasonic Sensor


const int pingPin = 3; // Trigger Pin of Ultrasonic Sensor

void setup()
{
Serial.begin(9600); // Starting Serial Communication
pinMode(pingPin, OUTPUT); // initialising pin 3 as output
pinMode(echoPin, INPUT); // initialising pin 2 as input
}

void loop()
{
long duration, inches, cm;

digitalWrite(pingPin, LOW);
delayMicroseconds(2);

digitalWrite(pingPin, HIGH);
delayMicroseconds(10);

digitalWrite(pingPin, LOW);

11
Université Sidi Mohamed Ben Abdellah Année Univ. 2021 /2022
Ecole Nationale des Sciences appliquées GSII2
de Fès

duration = pulseIn(echoPin, HIGH); // using pulsin function to


determine total time
inches = microsecondsToInches(duration); // calling method
cm = microsecondsToCentimeters(duration); // calling method

Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();

delay(100);
}

long microsecondsToInches(long microseconds) // method to covert microsec


to inches
{
return microseconds / 74 / 2;
}

long microsecondsToCentimeters(long microseconds) // method to covert


microsec to centimeters
{
return microseconds / 29 / 2;
}

5 – Copier le chemin de la compilation dans « Programme file » d’ARDUINO UNO:


6 - Lancer la simulation en appuyant sur la touche F12 du clavier

VI. Capteur PIR


Un capteur infrarouge passif (Passive infrared sensor, PIR) est un capteur électronique qui
mesure la lumière infrarouge émise par les
objets situés dans son champ de vision. Ils
sont les plus souvent utilisés dans les détecteurs
de mouvement.
Ils mesurent la lumière infrarouge (IR) rayonnant
d'objets en mouvement qui émettent de la chaleur.
Le capteur vous permet de détecter le mouvement
des personnes, des animaux et des voitures pour
déclencher des alarmes de sécurité et l'éclairage,
et souvent utilisés pour les détecteurs de
mouvement PIR. Ces capteurs sont passifs car ils
n'émettent pas de chaleur ou d'énergie et détectent
l'émission de radiations infrarouges et non de
chaleur.
Ces capteurs sont utilisés pour détecter les mouvements et sont idéaux pour la sécurité et la
sûreté comme les alarmes antivol et les systèmes d'éclairage de sécurité. Ils peuvent être utilisés
à l'intérieur et à l'extérieur et peuvent être montés sur les plafonds et les murs. Les capteurs PIR

12
Université Sidi Mohamed Ben Abdellah Année Univ. 2021 /2022
Ecole Nationale des Sciences appliquées GSII2
de Fès

ont des portées et des styles variés, y compris des options compatibles avec les animaux
domestiques (conçues pour ignorer certaines formes d'objets en mouvement, ou détecter un
mouvement seulement au-dessus d'une certaine hauteur).
Les capteurs PIR sont également utilisés pour allumer automatiquement les lumières lorsqu'une
personne entre dans une pièce ou pour faire démarrer l'enregistrement d'une caméra vidéo.

1. Simulation d’un capteur PIR sous Proteus


1. Copier/coller la bibliothèque «PIR Sensor Library for Proteus»,
2. cliquez sur le bouton P et tapez "PIR" et choisissiez «PIR SENSOR» puis
valider.

3. Ce capteur PIR a quatre broches au total, dont une est Vcc, donc vous devez
donner +5V à cette broche et n'oublier pas aussi la GND que vous devez mettre à
la masse . Double clic sur l’icône pour activer «VCC»
4. La broche OUT du PIR est la broche principale par laquelle nous recevons la sortie
qui indique s'il y a un mouvement. Elle doit être branchée au PIN 2 de la
carte Arduino. Comme le montre la figure suivante.

13
Université Sidi Mohamed Ben Abdellah Année Univ. 2021 /2022
Ecole Nationale des Sciences appliquées GSII2
de Fès

5. Maintenant, double-cliquez sur le capteur PIR et indiquez le chemin d'accès au


fichier PIRSensorTEP.HEX (vous le trouvez dans le fichier de la libraire «PIR
Sensor Library for Proteus»).
6. cliquez sur le bouton P à nouveau et tapez "LOGICSTATE" et choisissiez
«LOGICSTATE» puis valider. Reliez ce dernier à TestPin du capteur PIR. Il
est évident que nous ne pouvons pas détecter un mouvement réel dans Proteus,
c'est pourquoi on utilisera la broche de test qui fonctionnera comme broche
de simulation. Si le TestPin est HAUT(1), cela signifie que le mouvement est
détecté et s'il est BAS(0), cela signifie que le mouvement n'est pas détecté.
7. Utilisez un terminal virtuel. Il doit être branché aux PIN 9 et 10 de la carte
Arduino.
8. Ecrire un programme pour lire les valeurs générées par le capteur «PIR», compiler
le programme suivant puis téléchargez le fichier HEX sur la carte :

14
Université Sidi Mohamed Ben Abdellah Année Univ. 2021 /2022
Ecole Nationale des Sciences appliquées GSII2
de Fès

9. Commencez la simulation et cliquant sur «TestPin»

15
Université Sidi Mohamed Ben Abdellah Année Univ. 2021 /2022
Ecole Nationale des Sciences appliquées GSII2
de Fès

V. Système de détection Gaz et flamme


1. Copier les bibliothèques des capteurs de flamme et de gaz ,
2. Créer un projet et cliquez sur le bouton P pour rechercher les composants
suivants :

3. Réaliser sous Proteus le Montage ci-dessous

4. Ecrire et compiler le programme suivant puis téléchargez le fichier HEX sur la carte :

16
Université Sidi Mohamed Ben Abdellah Année Univ. 2021 /2022
Ecole Nationale des Sciences appliquées GSII2
de Fès

#include <Servo.h>
Servo myservo;
int flame = 10;
int smoke = 9;
int red = 6;
int green = 7 ;
int buzzer = 13 ;
void setup ()
{
pinMode (flame, INPUT) ;
pinMode (smoke, INPUT) ;
pinMode (red, OUTPUT) ;
pinMode (green, OUTPUT) ;
pinMode (buzzer, OUTPUT) ;
Serial.begin(9600);
myservo.attach(8);
myservo.write(0);
}

void loop ()
{
int fval = digitalRead (flame) ;
int sval = digitalRead(smoke);
Serial.print("fval = ");
Serial.println(fval);
Serial.print("sval = ");
Serial.println(sval);

if ( sval == HIGH or fval == HIGH)


{
Serial.println(" WARNING! ");
digitalWrite(red, HIGH);
digitalWrite(buzzer, HIGH);
digitalWrite(green, LOW);
myservo.write(180);
}
else
{
Serial.println(" SAFE ");
digitalWrite(red, LOW);
digitalWrite(green, HIGH);
digitalWrite(buzzer, LOW);
myservo.write(0);
}
delay(100);
}
5. Lancer la simulation et tester le fonctionnement du circuit

17
Université Sidi Mohamed Ben Abdellah Année Univ. 2021 /2022
Ecole Nationale des Sciences appliquées GSII2
de Fès

VI. Système de stationnement utilisant l’IoT

18
Université Sidi Mohamed Ben Abdellah Année Univ. 2021 /2022
Ecole Nationale des Sciences appliquées GSII2
de Fès

void setup() {
// put your setup code here, to run once:

Serial.begin(9600);
}

void loop() {
int a=analogRead(A0);
int b=map(a,0,1023,0,255);
Serial.println(b);
if(b>240)
{
Serial.println("car1 arrived..");
delay(500);
}

if(b<240)
{
Serial.println("car1 Not arrived..");
delay(500);
}

/////////////////////////////////////////////////

int a1=analogRead(A1);
int b1=map(a1,0,1023,0,255);
Serial.println(b1);
if(b1>240)
{
Serial.println("car2 arrived..");
delay(500);
}
if(b1<240)
{
Serial.println("car2 Not arrived..");
delay(500);
}

/////////////////////////////////////////////////

int a2=analogRead(A2);
int b2=map(a2,0,1023,0,255);
Serial.println(b2);
if(b2>240)
{
Serial.println("car3 arrived..");
delay(500);
}
if(b2<240)
{
Serial.println("car3 Not arrived..");
delay(500);
}

/////////////////////////////////////////////////

19

Vous aimerez peut-être aussi