Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

I U G É T: TPN 1: Synthèse Des Capteurs Arduino

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 7

Institut Universitaire des Grandes Écoles des Tropiques

Année académique : 2019/2020 Niveau : Licence GE2I


CAPTEUR ET CHAINE DE MESURE

TP NO 1 : Synthèse des capteurs arduino


Matériels à utiliser:
Quantités désignations Caractéristiques
05 Alimentations stabilisés
05 Plaques à essais
05 Multimètre
05 Kit arduino
05 LED
05 Résistors 220
05 Résistors 10K
05 LDR
05 Ecran LCD 16x2
05 Potentiomètre 20K
05 Capteur DHT11
05 ultrason HC-SR04

Thème1 : La photorésistance (interrupteur crépusculaire)


I- Description
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.
 …
II- Montage

III- Code
int lightPin = 0; //On renomme la broche A0 en "lightPin"
int ledPin = 9; //On renomme la broche 9 en "ledPin"
//***** FONCTION SETUP = Code d'initialisation *****
// La fonction setup() est exécutée en premier et une seule fois, au
démarrage du programme
void setup()
{
pinMode (ledPin, OUTPUT);
Serial.begin(9600);
}
void loop()
{
int seuil = 900; //On définit un seuil de
luminosité (sur 1023) à partir duquel la LED s'éteint
if (analogRead (lightPin) > seuil) //Si la luminosité est plus élevée
que le seuil...
{
digitalWrite (ledPin, LOW); //... alors on éteint la LED.
}
else //Sinon...
{
digitalWrite (ledPin, HIGH); //...on allume la LED
}
}

Thème 2 : Mesure de température et d’humidité à affichage LCD


I- Description
Objectif : utiliser un capteur température/humidité et afficher les données sur un écran LCD.
Connaître la température et l’humidité est une information utile pour vivre confortablement,
pour stocker des aliments ou du matériel, pour des prévisions météo… Avec ce TP nous
apprendrons comment mesurer ces deux données et à les afficher sur un écran LCD.
Le capteur : Le DHT11 ne mesure que des températures positives, entre 0°C et 50°C avec une
précision de ± 2°C et des taux d’humidité relative de 20 à 80% avec une précision de ± 5%.
II- Utilisation du capteur de température et d’humidité
Quand on tient le capteur avec la grille en face de nous, la broche centrale estl’alimentation,
elle doit êtrereliée au 5V de l’Arduino. La broche la plus à droite sera reliée au – (GND).
Quant à la broche la plus à gauche, c’est la broche de données, elle sera connectée à l’entrée
digitale utilisée pour lire les données.

/*
Code 20 - Edurobot.ch, destiné à l'Arduino
Objectif: Afficher la température et l'humidité sur un écran
*/

//***** EN-TETE DECLARATIVE *****//


#include <dht.h> //on charge la bibliothèque
dht DHT; //on crée l'objet du capteur DHT11
#define DHT11_PIN 7 //on définit le Pin qui sera utilisé pour recevoir les
données
void setup() // début de la fonction setup()
{
Serial.begin(9600); //Pour une fois, l'ouverture du port série et la
définition de sa vitesse en bauds est utile, même indispensable puisque l'on va
utiliser ce port pour afficher les valeurs du capteur.
}
//***** FONCTION LOOP = Code d'initialisation *****
// La fonction setup() est exécutée en premier et une seule fois, au démarrage
du programme
void loop() // début de la fonction loop()
{
int chk = DHT.read11(DHT11_PIN); // on lit l'état du capteur
Serial.print("Temperature = "); //on écrit le mot Température sur le moniteur
Serial.println(DHT.temperature); //on affiche sur la même ligne la
température lue
Serial.print("Humidite = "); //on écrit le mot Humidité sur le moniteur
Serial.println(DHT.humidity); //on affiche sur la même ligne l'humidité lue
delay(1000); //on fait une pause de 1 seconde entre 2 interrogations du
capteur
}
Pour visualiser les données transmises par le capteur, il faut encore ouvrir une fenêtre du
moniteur série sur votre ordinateur : Menu Outils -> Moniteur série.
III- Affichage des valeurs mesurées sur un écran LCD
Afficher le résultat des mesures sur le moniteur série est bien sympathique, mais si l’on
veut faire une installation de mesure permanente et autonome, cette solution ne convient pas,
car il faut que l’ordinateur soit en permanence allumé et branché à la carte. 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).
/*
Code 21 - Edurobot.ch, destiné à l'Arduino
Objectif: Afficher la température et l'humidité sur un écran LCD
*/
//***** EN-TETE DECLARATIVE *****
#include <dht.h> //on inclut la bibliothèque pour le capteur DHT11
#include <LiquidCrystal.h> //on inclut la bibliothèque pour l'écran LCD

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//on crée l'objet LCD et on définit les


Pins utilisés
dht DHT; // on crée l'objet du capteur DHT11
#define DHT11_PIN 7 //on définit le Pin utilisé pour les données du DHT11

void setup(){
lcd.begin(16, 2); //on initialise la communication avec l'écran LCD
}

void loop()
{
int chk = DHT.read11(DHT11_PIN); //on lit les données du capteur DHT
lcd.setCursor(0,0); //on place le curseur de l'écran LCD au début de la 1ère
ligne
lcd.print("Temp: "); //on écrit le mot "Temp: " à l'emplacement du curseur
lcd.print(DHT.temperature,1); //on écrit la température lue par le capteur,
avec 1 chiffre derrière la virgule
lcd.print((char)223); //on ajoute le symbole ° après la valeur de la
température
lcd.print("C"); //on ajoute la lettre C pour degré Celsius
lcd.setCursor(0,1); //on déplace le curseur de l'écran LCD au début de la
2èmeligne
lcd.print("Humidity: "); //on écrit le mot "Hum. rel: " à l'emplacement du
curseur
lcd.print(DHT.humidity,1); //on écrit l'humidité relative lue par le capteur,
avec 1 chiffre derrière la virgule
lcd.print("%"); //on ajoute le symbole "%" après la valeur de l'humidité
delay(1000); //on attend une seconde avant de procéder à la lecture
suivante
}
Thème 3 : Mesurer une distance avec un capteur à ultrason HC-SR04
I- Description
Un capteur de distance à ultrason utilise le même principe qu’un capteur laser, mais en
utilisant des ondes sonores (inaudible) au lieu d’un faisceau de lumière. Ils sont bien moins
chers qu’un capteur laser, mais aussi bien moins précis. Cependant, contrairement aux
capteurs à infrarouge, la lumière ambiante et l’opacité de la surface en face du capteur ne
jouent pas sur la mesure.
Le capteur HC-SR04 est un capteur à ultrason low cost. Ce capteur fonctionne avec une
tension d'alimentation de 5 volts, dispose d'un angle de mesure de 15° environ et permet de
faire des mesures de distance entre 2 centimètres et 4 mètres avec une précision de 3mm (en
théorie, dans la pratique ce n'est pas tout à fait exact).

II- Montage
III- Code
/*
* Code d'exemple pour un capteur à ultrasons HC-SR04.
*/

/* Constantes pour les broches */


const byte TRIGGER_PIN = 2; // Broche TRIGGER
const byte ECHO_PIN = 3; // Broche ECHO

/* Constantes pour le timeout */


const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = ~8m à 340m/s

/* Vitesse du son dans l'air en mm/us */


const float SOUND_SPEED = 340.0 / 1000;

/** Fonction setup() */


void setup() {

/* Initialise le port série */


Serial.begin(115200);

/* Initialise les broches */


pinMode(TRIGGER_PIN, OUTPUT);
digitalWrite(TRIGGER_PIN, LOW); // La broche TRIGGER doit être à LOW au repos
pinMode(ECHO_PIN, INPUT);
}

/** Fonction loop() */


void loop() {

/* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10µs sur
la broche TRIGGER */
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);

/* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho


(si il existe) */
long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);

/* 3. Calcul la distance à partir du temps mesuré */


float distance_mm = measure / 2.0 * SOUND_SPEED;

/* Affiche les résultats en mm, cm et m */


Serial.print(F("Distance: "));
Serial.print(distance_mm);
Serial.print(F("mm ("));
Serial.print(distance_mm / 10.0, 2);
Serial.print(F("cm, "));
Serial.print(distance_mm / 1000.0, 2);
Serial.println(F("m)"));

/* Délai d'attente pour éviter d'afficher trop de résultats à la seconde */


delay(500);
}

Vous aimerez peut-être aussi