Leçon 74 : Utilisation d'un module capteur infrarouge précis avec Arduino
Introduction
Ce guide montre comment utiliser deux capteurs de distance infrarouges (IR) Sharp ou plus avec un Arduino pour mesurer la distance et afficher les résultats sur le moniteur série. Bien qu'un seul capteur soit utile, de nombreuses applications réelles, comme une voiture intelligente, un bras robotique ou toute machine mobile, nécessitent des mesures de distance depuis plusieurs directions simultanément. Par exemple, vous pourriez installer un capteur à l'avant pour mesurer la distance devant, et un autre sur le côté droit ou gauche pour éviter les collisions. Ce tutoriel vous montre comment configurer votre Arduino pour gérer plusieurs capteurs efficacement, en s'appuyant sur une vidéo détaillée séparée qui explique les spécifications et le fonctionnement du capteur individuel.
Voici quelques idées de projets pratiques pour vous inspirer :
- Construire un robot qui évite les obstacles en mesurant les distances sur ses côtés gauche, droit et avant.
- Créer un assistant de stationnement intelligent qui utilise plusieurs capteurs pour guider un véhicule dans un espace restreint.
- Développer un système de sécurité qui surveille une porte ou un couloir avec des capteurs placés à différents angles.
- Réaliser une installation artistique interactive où la distance de la main d'un spectateur change ce qui est affiché.

Dans cette vidéo, l'accent est mis sur le câblage et le code nécessaires pour faire fonctionner plusieurs capteurs IR Sharp. La démonstration utilise deux capteurs GP2Y0A21YK0F, qui mesurent des distances de 10 à 80 cm. Le code est structuré pour être facilement extensible, afin que vous puissiez ajouter un troisième, un quatrième, ou même plus de capteurs avec seulement quelques lignes de code.
Matériel et composants
Pour suivre ce projet, vous aurez besoin des composants suivants :
- Une carte Arduino (par exemple, Uno, Mega).
- Deux capteurs de distance IR Sharp ou plus (par exemple, GP2Y0A21YK0F).
- Des fils de connexion (jumper wires).
- Une plaque d'essai (breadboard) (optionnelle, pour des connexions plus faciles).
Guide de câblage
Le capteur IR Sharp a trois fils : rouge (alimentation), noir (masse) et jaune (sortie du signal). Le câblage est simple. Pour le premier capteur, connectez son fil rouge à la broche 5V de l'Arduino, le fil noir à une broche de masse (GND), et le fil jaune du signal à une broche analogique, par exemple A1. Pour le deuxième capteur, connectez son fil rouge à la même broche 5V ou à une autre, le fil noir à GND, et le fil jaune à une broche analogique différente, comme A2.
Si vous manquez de broches 5V, la vidéo propose une solution astucieuse. Vous pouvez utiliser n'importe quelle broche numérique comme source d'alimentation. Dans le code, la broche numérique 2 est configurée comme sortie et mise à HIGH, ce qui fournit un 5V constant. Vous connecteriez alors les fils rouges de vos capteurs à cette broche numérique au lieu de la broche 5V dédiée. Les fils de masse peuvent être connectés à n'importe quelle broche GND de l'Arduino. La vidéo montre une démonstration de cette configuration à [00:06:10].
Pour une référence visuelle des connexions, veuillez consulter le schéma de câblage ci-dessous :



Explication du code
Cette section se concentre sur les parties configurables par l'utilisateur du code, qui se trouvent toutes en haut du sketch. C'est ici que vous définirez vos broches et vos modèles de capteurs.
Premièrement, le code inclut la bibliothèque nécessaire pour les capteurs IR Sharp, #include <SharpIR.h>. Cette bibliothèque gère les calculs complexes nécessaires pour convertir la tension analogique du capteur en une lecture de distance.
Ensuite, vous définirez les broches analogiques pour chacun de vos capteurs. Le code d'exemple utilise #define IR1 A1 et #define IR2 A2. Si vous utilisez plus de deux capteurs, vous ajouteriez d'autres définitions ici, comme #define IR3 A3.
Une partie cruciale de la configuration consiste à définir le bon modèle pour votre capteur. Le code utilise #define model1 1080 et #define model2 1080. Ce nombre n'est pas arbitraire ; il indique à la bibliothèque quel capteur vous avez, car chaque modèle a une courbe tension-distance différente. Les commentaires du code fournissent une liste utile :
- 2 à 15 cm GP2Y0A51SK0F utilisez 215
- 4 à 30 cm GP2Y0A41SK0F / série GP2Y0AF30 utilisez 430
- 10 à 80 cm GP2Y0A21YK0F utilisez 1080
- 10 à 150 cm GP2Y0A60SZLF utilisez 10150
- 20 à 150 cm GP2Y0A02YK0F utilisez 20150
- 100 à 550 cm GP2Y0A710K0F utilisez 100550
Vous devez modifier cette valeur pour correspondre à votre capteur spécifique. Par exemple, si vous utilisiez un GP2Y0A02YK0F, vous changeriez la définition en #define model1 20150. Le code crée ensuite un objet pour chaque capteur, comme SharpIR SharpIR1(IR1, model1);. Cette ligne relie la broche et le modèle pour le premier capteur. Si vous ajoutez plus de capteurs, vous copieriez cette ligne et changeriez le nom de l'objet, la broche et le modèle en conséquence.
Dans la fonction setup(), le moniteur série est initialisé à 9600 bauds. C'est la vitesse à laquelle l'Arduino communique avec votre ordinateur. Le code inclut également une section pour utiliser une broche numérique comme source de 5V si nécessaire, comme expliqué dans la section de câblage. Cela se fait avec pinMode(2,OUTPUT); et digitalWrite(2, HIGH);.
Enfin, la fonction loop() contient la logique principale. Il y a un delay(500); au début, qui définit le temps entre chaque série de lectures à 500 millisecondes. Vous pouvez ajuster cela pour rendre les lectures plus ou moins fréquentes. Le cœur de la boucle est là où vous lisez la distance de chaque capteur en utilisant la fonction distance() de la bibliothèque, comme int dis1=SharpIR1.distance();. Les résultats sont ensuite imprimés sur le moniteur série avec un texte descriptif, comme Serial.print("Distance (1): ");, suivi de la valeur et de l'unité "cm".
Démonstration du projet en direct
Dans la vidéo, le présentateur démontre le montage avec deux capteurs. Comme vous pouvez le voir dans la démonstration à [00:07:44], le moniteur série affiche les relevés de distance des deux capteurs. Lorsqu'un objet est placé devant le premier capteur, le relevé pour « Distance (1) » change. De même, lorsqu'un objet est placé devant le deuxième capteur, le relevé pour « Distance (2) » se met à jour. La vidéo montre qu'en tenant une feuille de papier à distance, les capteurs lisent environ 23 et 24 cm. Lorsqu'un capteur est obstrué, son relevé chute à environ 17 cm, confirmant que chaque capteur fonctionne indépendamment et fournit des données de distance en temps réel pour sa direction respective. Cela valide la capacité du code à gérer plusieurs capteurs simultanément.
Chapitres
- [00:00] Introduction à l'utilisation de plusieurs capteurs IR Sharp
- [00:28] Applications pour plusieurs capteurs de distance
- [01:34] Explication du code : bibliothèque et définitions de broches
- [02:24] Configuration des modèles de capteurs et création d'objets
- [04:15] Explication des fonctions setup et loop
- [06:10] Guide de câblage pour plusieurs capteurs
- [07:44] Démonstration en direct avec deux capteurs
++
/*
* Using two or more Sharp IR distance sensors with Arduino
* Measure distance
* Download and resource page for this video https://robojax.com/RJT143
* Watch video instructions for this video: https://youtu.be/WQ3oFyF5qeY
*
* Watch main video explaining the Sharp IR distance sensor:
* https://robojax.com?vid=robojax-sharp_IR
*
* Written by Ahmad Shamshiri for Robojax.com on Saturday, December 1, 2018
* at 20:56 in Ajax, Ontario, Canada
*
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <SharpIR.h>
#define IR1 A1 // define signal pin
#define IR2 A2 // define signal pin
#define model1 1080 // for GP2Y0A21YK0F used 1080
#define model2 1080 // for GP2Y0A21YK0F used 1080
// Sharp IR code for Robojax.com
// ir: the pin where your sensor is attached
/*
2 to 15 cm GP2Y0A51SK0F use 215
4 to 30 cm GP2Y0A41SK0F / GP2Y0AF30 series use 430
10 to 80 cm GP2Y0A21YK0F use 1080
10 to 150 cm GP2Y0A60SZLF use 10150
20 to 150 cm GP2Y0A02YK0F use 20150
100 to 550 cm GP2Y0A710K0F use 100550
*/
SharpIR SharpIR1(IR1, model1);
SharpIR SharpIR2(IR2, model2);
void setup() {
// Multiple Sharp IR Distance meter code for Robojax.com
Serial.begin(9600);
Serial.println("Robojax Sharp IR ");
// extra pin for 5V if needed
pinMode(2,OUTPUT);// define pin 2 as output
digitalWrite(2, HIGH);// set pin 2 HIGH so it always have 5V
// Robojax.com 20181201
}
void loop() {
// Sharp IR code for Robojax.com 20181201
delay(500);
unsigned long startTime=millis(); // takes the time before the loop on the library begins
int dis1=SharpIR1.distance(); // this returns the distance for sensor 1
int dis2=SharpIR2.distance(); // this returns the distance for sensor 2
// Sharp IR code for Robojax.com 20181201
Serial.print("Distance (1): ");
Serial.print(dis1);
Serial.println("cm");
Serial.print("Distance (2): ");
Serial.print(dis2);
Serial.println("cm");
// Sharp IR code for Robojax.com
}
++
/*
* Lesson 74: Using two or more Sharp IR distance sensors
* Sharp IR (infrared) distance measurement module for Arduino
* Measures the distance in cm.
* Written by Ahmad Shamshiri for Robojax.com
* on February 25, 2019 at 21:38 in Ajax, Ontario, Canada
* Original library: https://github.com/guillaume-rico/SharpIR
* Watch video instructions for this code: https://youtu.be/WQ3oFyF5qeY
*
* Full explanation of this code and wiring diagram is available at
* my Arduino Course at Udemy.com here: http://robojax.com/L/?id=62
* Written by Ahmad Shamshiri on February 3, 2018 at 07:34
* in Ajax, Ontario, Canada. www.robojax.com
*
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
*/
// Sharp IR code for Robojax.com
#include
#define IR A0 // define signal pin
#define model 1080 // used 1080 because model GP2Y0A21YK0F is used
// Sharp IR code for Robojax.com
// ir: the pin where your sensor is attached
// model: an int that determines your sensor: 1080 for GP2Y0A21Y
// 20150 for GP2Y0A02Y
// 430 for GP2Y0A41SK
/*
2 to 15 cm GP2Y0A51SK0F use 1080
4 to 30 cm GP2Y0A41SK0F / GP2Y0AF30 series use 430
10 to 80 cm GP2Y0A21YK0F use 1080
10 to 150 cm GP2Y0A60SZLF use 10150
20 to 150 cm GP2Y0A02YK0F use 20150
100 to 550 cm GP2Y0A710K0F use 100550
*/
#include <SharpIR.h>
#define IR1 A1 // define signal pin
#define IR2 A2 // define signal pin
#define model1 1080 // for GP2Y0A21YK0F used 1080
#define model2 1080 // for GP2Y0A21YK0F used 1080
// Sharp IR code for Robojax.com
// ir: the pin where your sensor is attached
/*
2 to 15 cm GP2Y0A51SK0F use 215
4 to 30 cm GP2Y0A41SK0F / GP2Y0AF30 series use 430
10 to 80 cm GP2Y0A21YK0F use 1080
10 to 150 cm GP2Y0A60SZLF use 10150
20 to 150 cm GP2Y0A02YK0F use 20150
100 to 550 cm GP2Y0A710K0F use 100550
*/
SharpIR SharpIR1(IR1, model1);
SharpIR SharpIR2(IR2, model2);
void setup() {
// Multiple Sharp IR Distance meter code for Robojax.com
Serial.begin(9600);
Serial.println("Robojax Sharp IR ");
// extra pin for 5V if needed
pinMode(2,OUTPUT);// define pin 2 as output
digitalWrite(2, HIGH);// set pin 2 HIGH so it always have 5V
// Robojax.com 20181201
}
void loop() {
// Sharp IR code for Robojax.com 20181201
delay(500);
unsigned long startTime=millis(); // takes the time before the loop on the library begins
int dis1=SharpIR1.distance(); // this returns the distance for sensor 1
int dis2=SharpIR2.distance(); // this returns the distance for sensor 2
// Sharp IR code for Robojax.com 20181201
Serial.print("Distance (1): ");
Serial.print(dis1);
Serial.println("cm");
Serial.print("Distance (2): ");
Serial.print(dis2);
Serial.println("cm");
// Sharp IR code for Robojax.com
}
Ressources et références
-
ExterneBibliothèque IR Sharp (de GitHub)github.com
-
ExterneBibliothèque Sharp de RoboJob.comrobojax.com
-
ExterneCapteurs de mesure de distance (site web)sharp-world.com
Fichiers📁
Fichier Fritzing
-
capteur ir précis GP2Y0A02YK0F
sharp ir sensor GP2Y0A02YK0F .fzz
Autres fichiers
-
Fiche technique du capteur de distance infrarouge Sharp GP2Y0A41SK0F
robojax_sharp_IR_GP2Y0A41SK0F_datasheet.pdf0.84 MB -
Capteur de distance infrarouge Sharp GP2Y0A710K0F fiche technique
robojax_sharp_IR_GP2Y0A710K0F_datasheet.pdf0.33 MB -
Bibliothèque Arduino pour capteur de distance infrarouge Sharp
robojax-sharp_IR-master.zip