Arduino TP3 – Capteurs numériques | Dr Ousmane SADIO
__________________________________________________________________________________________________
TP3 – Capteurs numériques
Connaissance du mode de fonctionnement des capteurs numériques. Lire la valeur des signaux
numériques reçues sur les broches d’entrées et sorties numériques de la carte Arduino. Installer et
exploiter les bibliothèques de fabricants afin de traiter les données de capteurs.
A. Capteurs TOR
Un capteur TOR (Tout ou Rien) permet de détecter la présence ou non d’un phénomène physique. Ces
capteurs sont appelés aussi capteur logique car ne génère à leurs sorties que deux valeurs possibles : 0
(niveau bas) ou 1 (niveau haut).
1. Capteur d’inclinaison à bille
Ce type de capteur intègre une bille qui bascule selon son orientation : cette bille métallique à l'intérieur
du tube ouvre ou ferme le contact.
• Pratique
Réaliser un système capable d’allumer une LED en cas de détection d’une inclinaison par le biais du
capteur à bille.
2. Capteur à effet de Hall
Un capteur à Effet Hall permet de détecter si un aimant est à proximité. Il est très utile pour
constituer un capteur sans contact et peut aussi servir comme capteurs de position, encodeur,
______________________________________________________________________________
UVS 2021 – 2022 | Licence 2 Robotique
Arduino TP3 – Capteurs numériques | Dr Ousmane SADIO
__________________________________________________________________________________________________
détection de rotation. Le module ci-dessous renvoie un signal HIGH si un aimant est à
proximité.
• Pratique
Concevoir un détecteur de champ magnétique qui émet un son via le buzzer lorsqu’il détecte la
présence d’un aimant.
3. Détecteur de fumée
Les capteurs de la famille MQx sont des capteurs de gaz. Le procédé chimique qui permet la mesure est
basé sur la tension entre deux électrodes séparées par le gaz ambiant. On peut noter la présence d'une
résistance qui chauffe le gaz pour mesurer correctement, ce qui explique pourquoi le capteur est chaud
lorsqu'il est branché.
Le capteur MQ2
Module comportant un capteur MQ2 permettant de détecter plusieurs types de gaz : le LPG,
Isobutane, le propane, le méthane, l'hydrogène, l'alcool et la fumée. Une sortie numérique (DO)
est également disponible, son seuil de déclenchement est réglable via un potentiomètre.
• Pratique
Réaliser un système détection de fumée consistant à déterminer la présence de la fumée par le
biais du capteur MQ2 puis d’activer le buzzer. Deux LED seront également utilisées : une rouge
pour indiquer la détection de fumée, une verte dans le cas contraire.
______________________________________________________________________________
UVS 2021 – 2022 | Licence 2 Robotique
Arduino TP3 – Capteurs numériques | Dr Ousmane SADIO
__________________________________________________________________________________________________
NB : pour créer de la fumée, allumer un bout de papier enroulée puis le placier à proximité du capteur.
B. Capteur de température et d’humidité DHT11
Le DHT11 est un capteur qui génère un signal numérique en sortie codant une valeur de température et
d’humidité mesurée en temps réel.
DHT11 utilise une communication simplifiée à 1 bus pour le contrôle et l’échange de données. La trame
est constituée de 5 octets (40 bits) :
Humidité = 00110101,00000000 = 53%RH
Température = 00011000, 00000000 = 24 °C
Checksum = 00110101 + 00000000 + 00011000 + 00000000 = 01001101 (correcte)
• Pratique
Ecrire un programme capable de lire la température et l’humidité mesurée par le capteur DHT11
puis d’afficher ces mesures.
Installer la bibliothèque DHT sensor library
DHT sensor library est une bibliothèque proposée par Adafruit pour le contrôle et le traitement des
données du capteur DHT11.
Pour l’installer, aller sur le menu Outils, puis cliquer sur Gérer les bibliothèques. Une nouvelle fenêtre
va s’ouvrir, saisir sur la barre de recherche le mot DHT11. Sélectionner la bibliothèque DHT proposée
par Adafruit et cliquer sur le bouton Installer.
______________________________________________________________________________
UVS 2021 – 2022 | Licence 2 Robotique
Arduino TP3 – Capteurs numériques | Dr Ousmane SADIO
__________________________________________________________________________________________________
Ensuite sur la nouvelle fenêtre qui apparait, cliquer sur Install all.
Montage électronique
Bout de code sur l’utilisation de le bibliothèque DHT11
(1) Paramétrage
// Importer la bibliothèque DHT
#include "DHT.h"
// Indiquer le numéro de broche et le type de capteur DHT
#define DHTPIN 2
#define DHTTYPE DHT11
// Créer un objet de type DHT
DHT dht(DHTPIN, DHTTYPE);
(2) Initialisation dans la fonction setup()
[Link]();
______________________________________________________________________________
UVS 2021 – 2022 | Licence 2 Robotique
Arduino TP3 – Capteurs numériques | Dr Ousmane SADIO
__________________________________________________________________________________________________
(3) Lecture des mesures dans la fonction loop()
// Lire la valeur de l'humidité
float humidite = [Link]();
// Lire la valeur de la temperature
float temperature = [Link]();
// Vérifier si la lecture a échouée
if (isnan(humidite) || isnan(temperature)) {
[Link]("Echec de lecture depuis le capteur DHT11");
return;
}
C. Capteur MQ135 ou capteur de la qualité de l'air
Le capteur MQ135 est sensible au CO2, à l’alcool, au Benzène, à l’oxyde d’azote NOx et à
l’ammoniac NH3. On peut donc appeler la mesure "qualité de l'air" car tous ces gaz sont nocifs
à forte dose, mais on ne peut pas différencier les gaz entre eux. Toutefois, la concentration en
CO2 dans l’air est bien plus élevée que celle de ces autres gaz, on peut donc considérer ce
capteur comme un capteur de CO2 dans la plupart des cas usuels.
Le graphique indique la concentration des gaz en ppm (partie par million) en fonction du rapport de
résistance du capteur (𝑅𝑠/𝑅0). 𝑅𝑠 est la résistance du capteur en fonction de la concentration du gaz.
𝑅0 est la résistance du capteur à une concentration connue sans la présence de gaz.
• Pratique
Installer la bibliothèque MQ135
Cette bibliothèque permet à toute carte compatible Arduino de s'interfacer facilement avec le capteur de
qualité de l'air MQ135 et de calculer les concentrations de CO2 corrigées en fonction de la température
et de l'humidité.
NB : c’est la sortie analogique AO du capteur qui sera utilisée pour déterminer la concentration CO2
corrigée en fonction de la température et de l’humidité. Pour ce faire, un capteur DHT11 sera utilisé.
Pour installer la bibliothèque, aller sur le gestionnaire des bibliothèques puis saisir sur la barre de
recherche MQ135. Choisir la bibliothèque proposée par Phoenix1747.
Détails : [Link]
______________________________________________________________________________
UVS 2021 – 2022 | Licence 2 Robotique
Arduino TP3 – Capteurs numériques | Dr Ousmane SADIO
__________________________________________________________________________________________________
NB : il existe une autre bibliothèque nommée MQUnifiedsensor qui est utilisable pour l’ensemble des
capteurs de la famille MQx. Cependant sont usage nécessite de fournir plusieurs paramètres de
fonctionnement du capteur.
Détails : [Link]
Montage électronique
(1) Tester le code suivant afin de vérifier si le capteur marche bien. Pour ce faire réaliser le montage
ci-dessous puis téléverser le code. Patienter quelques minutes, le temps que le capteur se réchauffe
puis ouvrir le moniteur série et observer les données affichées.
(2) Pour produire du CO2, allumer un bout de papier enroulée puis le placier à proximité du capteur.
(3) Modifier le programme afin d’afficher que la valeur de la concentration corrigée. Ensuite observer
l’évolution de cette concentration sous forme courbe à l’aide du Traceur série.
______________________________________________________________________________
UVS 2021 – 2022 | Licence 2 Robotique
Arduino TP3 – Capteurs numériques | Dr Ousmane SADIO
__________________________________________________________________________________________________
#include <MQ135.h>
#include <DHT.h>
#define PIN_MQ135 A2
#define DHTPIN 2
#define DHTTYPE DHT11
MQ135 mq135_sensor(PIN_MQ135);
DHT dht(DHTPIN, DHTTYPE);
float temperature, humidity;
void setup() {
[Link](9600);
[Link]();
}
void loop() {
humidity = [Link]();
temperature = [Link]();
if (isnan(humidity) || isnan(temperature)) {
[Link](F("Failed to read from DHT sensor!"));
return;
}
float rzero = mq135_sensor.getRZero();
float correctedRZero = mq135_sensor.getCorrectedRZero(temperature, humidity);
float resistance = mq135_sensor.getResistance();
float ppm = mq135_sensor.getPPM();
float correctedPPM = mq135_sensor.getCorrectedPPM(temperature, humidity);
[Link]("MQ135 RZero: ");
[Link](rzero);
[Link]("\t Corrected RZero: ");
[Link](correctedRZero);
[Link]("\t Resistance: ");
[Link](resistance);
[Link]("\t PPM: ");
[Link](ppm);
[Link]("ppm");
[Link]("\t Corrected PPM: ");
[Link](correctedPPM);
[Link]("ppm");
delay(300);
}
D. Capteur ultrason HC-SR04
Le capteur à ultrason permet une mesure d’un objet situé à une distance allant de 2cm à 4m et fourni
une mesure avec une précision de 3mm. Le principe de fonctionnement est le suivant : (1) un signal de
déclenchement (trigger) est émis pendant 10µs, (2) le module se met à l’écoute d’un signal de retour,
(3) le temps entre l’émission et la réception est le temps nécessaire au signal pour faire l’aller et le retour
vers l’obstacle.
______________________________________________________________________________
UVS 2021 – 2022 | Licence 2 Robotique
Arduino TP3 – Capteurs numériques | Dr Ousmane SADIO
__________________________________________________________________________________________________
Le chronogramme est illustré ci-dessous. Il vous suffit de fournir une courte impulsion de 10us au trigger
input pour démarrer la télémétrie, puis le module enverra une rafale d'ultrasons de 8 cycles à 40 kHz et
d’écouter son écho. La largeur d'impulsion d'écho est proportionnelle à la distance de l'objet.
𝐷𝑖𝑠𝑡𝑎𝑛𝑐𝑒 𝑜𝑏𝑠𝑡𝑎𝑐𝑙𝑒 = 𝑑𝑢𝑟é𝑒 𝑒𝑐ℎ𝑜 × 𝑣𝑖𝑡𝑒𝑠𝑠𝑒 𝑑𝑢 𝑠𝑜𝑛 / 2
La vitesse du son est de la vitesse est d'environ 340 m/s.
• Pratique
Ecrire un programme capable de déterminer puis d’afficher la distance d’un obstacle.
Bout de code sur l’utilisation du capteur HC-SR04
(1) Paramétrage dans la fonction setup()
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
(3) Lecture de la distance dans la fonction loop()
// Remise à zéro du trigger
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Activer le trigger pendant 10 microsecondes
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Determiner la durée de l’echo
duration = pulseIn(echoPin, HIGH);
// Calculer la distance
distance = duration * 0.034 / 2;
______________________________________________________________________________
UVS 2021 – 2022 | Licence 2 Robotique