Skip to Content

Comment utiliser un capteur de distance IR SHARP GP2Y0A21YK0F avec Arduino

Comment utiliser un capteur de distance IR SHARP GP2Y0A21YK0F avec Arduino

Le SHARP GP2Y0A21YK0F est un capteur de distance IR facile à utiliser avec une portée de 10 à 80 cm. C’est un excellent capteur pour les robots autonomes ou les interrupteurs optiques sans contact.

Dans ce tutoriel, vous apprendrez comment fonctionne ce capteur et comment l’utiliser avec Arduino. J’ai inclus un schéma de câblage et un exemple de code pour que vous puissiez commencer à expérimenter avec votre capteur.

Pièces requises

Capteur de distance GP2Y0A21YK0F

Arduino

Arduino Uno

USB Data Sync cable Arduino

Câble USB pour Arduino UNO

Dupont wire set

Jeu de fils Dupont

Half_breadboard56a

Plaque d’essai (breadboard)

Condensateur( 10 µF)

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Comment fonctionne un capteur de distance IR ?

Un capteur de distance IR utilise un faisceau de lumière infrarouge qui se réfléchit sur un objet pour mesurer sa distance. La distance est calculée par triangulation du faisceau lumineux. Le capteur est composé d’une LED IR et d’un détecteur de lumière ou PSD (Position Sensing Device). Lorsque le faisceau lumineux est réfléchi par un objet, le faisceau réfléchi atteint le détecteur et un « point optique » se forme sur le PSD.

How an IR distance sensor works light emitter and detector PSD
Capteur de distance IR

Lorsque la position de l’objet change, l’angle du faisceau réfléchi et la position du point sur le PSD changent également. Voir les points A et B sur l’image ci-dessous.

How an IR distance sensor works
Notez le changement d’angle du faisceau réfléchi et la position du « point optique » sur le PSD.

Le capteur intègre un circuit de traitement du signal. Ce circuit analyse la position du point optique sur le PSD pour déterminer la position (distance) de l’objet réfléchissant. Il fournit un signal analogique qui dépend de la position de l’objet devant le capteur.

Comment lire un capteur de distance IR ?

Les capteurs de distance IR délivrent un signal analogique qui varie selon la distance entre le capteur et un objet. D’après la fiche technique, la tension de sortie du SHARP GP2Y0A21YK0F varie de 2,3 V pour un objet à 10 cm à 0,4 V pour un objet à 80 cm. Le graphique montre aussi pourquoi la plage de détection utile commence à 10 cm. Remarquez que la tension de sortie pour un objet à 2 cm est la même que pour un objet à 28 cm. La plage de détection utile commence donc après le pic, vers 10 cm ou 2,3 V.

GP2Y0A21YK0F Output Characteristics
Caractéristiques de mesure de distance (sortie)

Le graphique montre aussi la limite de ces capteurs : la réponse est non linéaire. En d’autres termes, une grande variation de la tension de sortie ne correspond pas toujours à un grand changement de distance. Pour déterminer la distance entre le capteur et un objet, il faut trouver une fonction qui convertit la tension de sortie en valeur de distance.

Cela peut être fait avec MS Excel et donne la formule suivante pour les distances > 10 cm :

Distance (cm) = 29.988 X POW(Volt , -1.173)

C’est la fonction utilisée dans la bibliothèque SharpIR, que nous utiliserons plus tard. Notez que cette fonction est basée uniquement sur les données de la fiche technique SHARP. Les caractéristiques de sortie du capteur peuvent varier légèrement d’un capteur à l’autre, ce qui peut entraîner des mesures imprécises.

Si vous souhaitez améliorer la précision de vos mesures, vous pouvez essayer de mesurer et tracer de nombreux points de données dans Excel et ajuster une courbe à ces points. Une fois que vous avez une nouvelle fonction pour votre capteur spécifique, vous devrez modifier la formule utilisée dans le fichier SharpIR.cpp.

Spécifications du GP2Y0A21YK0F

Tension de fonctionnement 4,5 à 5,5 V
Courant de fonctionnement 30 mA
Plage de mesure 10 à 80 cm
Type de sortie Analogique
Dimensions 29,5 x 13 x 13,5 mm
Trous de fixation 2x 3,2 mm, espacement 37 mm
Coût Check price

Pour plus d’informations, vous pouvez consulter la fiche technique ici.

Connexion du capteur IR GP2Y0A21YK0F à Arduino

Le schéma de câblage ci-dessous montre comment connecter le capteur de distance IR GP2Y0A21YK0F à un Arduino.

SHARP GP2Y0A21YK0 with Arduino Wiring Diagram
Schéma de câblage du capteur de distance IR GP2Y0A21YK0F avec Arduino.​

Ce type de capteurs de distance est souvent un peu bruyant, il est donc recommandé d’ajouter un condensateur entre Vcc et GND. La fiche technique suggère un condensateur de 10 µF ou plus (j’ai utilisé 220 µF). Connectez la patte positive du condensateur au fil Vcc et la patte négative au fil GND (voir photo). Les condensateurs sont souvent marqués d’une bande indiquant la patte négative. La patte positive est souvent plus longue que la patte négative.

Connexions GP2Y0A21YK0F

GP2Y0A21YK0F Arduino
1 (Jaune) A0
2 (Noir) GND
3 (Rouge) 5V

Si votre capteur a des fils de couleurs différentes, vérifiez bien le brochage ci-dessous. La broche Vo est connectée à l’entrée analogique de l’Arduino (A0).

SHARP GP2Y0A21YK0F Pinout
Brochage du capteur de distance IR SHARP GP2Y0A21YK0F

Maintenant que vous avez câblé le capteur, il est temps de regarder un exemple de code.

Installation de la bibliothèque SharpIR pour Arduino

La  bibliothèque SharpIR écrite par Guillaume Rico et Thibaut Mauon facilite grandement l’utilisation des capteurs IR SHARP. Elle inclut les formules nécessaires pour convertir la tension de sortie mesurée en distance en centimètres. Actuellement, la bibliothèque supporte les capteurs suivants : GP2Y0A02YK0F, GP2Y0A21YK0F, GP2Y0A710K0F et GP2YA41SK0F. La dernière version de la bibliothèque peut être téléchargée sur GitHub  ou cliquez sur le bouton ci-dessous.

Vous pouvez installer la bibliothèque en allant dans Sketch > Include Library > Add .ZIP Library dans l’IDE Arduino.

Installing an Arduino library ZIP
Installation d’une bibliothèque Arduino au format .ZIP.

L’auteur de la bibliothèque a remarqué que les mesures du capteur peuvent fluctuer assez fortement. La bibliothèque résout ce problème en prenant plusieurs mesures consécutives, en éliminant les valeurs aberrantes, puis en calculant la moyenne pour obtenir une mesure de distance plus stable. Actuellement, la bibliothèque calcule la moyenne de 25 mesures, ce qui prend environ 53 ms.

Exemple de code pour le capteur de distance IR SHARP GP2Y0A21YK0F avec Arduino

Le code d’exemple ci-dessous peut être utilisé avec le capteur GP2Y0A21YK0F et affiche la distance mesurée en centimètres dans le moniteur série.

Vous pouvez copier le code en cliquant sur le bouton en haut à droite du champ de code.

/*SHARP GP2Y0A21YK0F IR distance sensor with 
  Arduino and SharpIR library example code. 
  More info: https://www.makerguides.com */

// Include the library:
#include "SharpIR.h"

// Define model and input pin:
#define IRPin A0
#define model 1080

// Variable to store the distance
int distance_cm;

/* Model :
  GP2Y0A02YK0F --> 20150
  GP2Y0A21YK0F --> 1080
  GP2Y0A710K0F --> 100500
  GP2YA41SK0F --> 430
*/

// Create a new instance of the SharpIR class:
SharpIR mySensor = SharpIR(IRPin, model);

void setup() {
  // Serial communication at a baudrate of 9600
  Serial.begin(9600);
}

void loop() {
  // Get a distance measurement and store it as distance_cm
  distance_cm = mySensor.distance();

  // Print the measured distance to the serial monitor
  Serial.print("Mean distance: ");
  Serial.print(distance_cm);
  Serial.println(" cm");

  delay(1000);
}

Notez que nous avons appelé le capteur mySensor dans cet exemple. Si vous souhaitez utiliser plusieurs capteurs de distance IR, vous pouvez créer un autre objet capteur avec un nom différent :  SharpIR mySensor2 = SharpIR(IRPin2, model);  Notez que dans ce cas, vous devez aussi utiliser une broche d’entrée différente pour le second capteur.

Vous devriez obtenir la sortie suivante dans le moniteur série (Ctrl + Maj + M) :

SHARP GP2Y0A21YK0F serial monitor output
Sortie du moniteur série

Conclusion

Dans cet article, je vous ai montré comment fonctionne le capteur de distance IR SHARP GP2Y0A21YK0F et comment l’utiliser avec Arduino.

Si vous cherchez un capteur de distance plus abordable ou étanche, jetez un œil au HC-SR04 ou au JSN-SR04T. Dans les articles ci-dessous, j’explique comment ces capteurs de distance/proximité fonctionnent et comment les utiliser avec Arduino.

Si vous avez des questions, des suggestions, ou si vous pensez que des éléments manquent dans ce tutoriel, n’hésitez pas à laisser un commentaire ci-dessous.