Dans ce tutoriel, vous allez apprendre à utiliser le capteur de poussière GP2Y1010AU0F avec un Arduino pour mesurer la densité de poussière. Nous allons aborder les caractéristiques du capteur, comment le connecter à une carte Arduino, et comment interpréter les données qu’il fournit.
Mesurer la densité de poussière est important pour la santé, car des niveaux élevés de poussière dans l’air peuvent entraîner des problèmes respiratoires, des allergies et d’autres soucis de santé. Surveiller le niveau de poussière permet d’évaluer la qualité de l’air intérieur et extérieur, d’identifier les risques potentiels et de prendre les mesures nécessaires pour améliorer la qualité de l’air.
Composants nécessaires
J’ai utilisé un Arduino Uno pour ce projet, mais n’importe quelle autre carte Arduino, ou une carte ESP8266/ESP32, fonctionnera tout aussi bien.
Le capteur de poussière GP2Y1010AU0F est livré avec un condensateur de 220µF et une résistance de 150Ω, qui sont nécessaires pour le câblage avec un Arduino. Pas besoin de les acheter séparément.

Capteur de poussière GP2Y1010AU0F

Arduino Uno

Jeu de fils Dupont

Breadboard

Câble USB pour Arduino UNO
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.
Principes de base du capteur de poussière GP2Y1010AU0F
Le GP2Y1010AU0F est un capteur optique de qualité de l’air, conçu pour détecter les particules de poussière. Il est particulièrement efficace pour détecter les particules très fines comme la fumée de cigarette, et est couramment utilisé dans les systèmes de purificateurs d’air. L’image suivante montre le capteur.

Structure interne
À l’intérieur du capteur, une LED infrarouge et une photorésistance infrarouge sont disposées en diagonale. La lumière de la LED IR est réfléchie par les particules de poussière qui entrent dans l’appareil par un orifice (chemin de la poussière). La quantité de lumière IR réfléchie est mesurée par le capteur infrarouge et convertie en une tension de sortie. Plus il y a de poussière dans le chemin, plus la lumière est réfléchie et plus la tension de sortie est élevée. L’image ci-dessous montre la construction interne du capteur GP2Y1010AU0F.

Le GP2Y1010AU0F a une faible consommation de courant de 20mA max ou 11mA typique, et fonctionne sous 5V. Sa tension de sortie est proportionnelle à la densité de poussière mesurée, avec une sensibilité de 0,5V/0,1mg/m 3 . Le capteur peut détecter des particules aussi petites que 0,5µm et la densité maximale de poussière qu’il peut mesurer est de 580 µg/m 3 .
Schéma interne
L’image suivante montre le schéma interne du GP2Y1010AU0F. Vous pouvez voir le circuit qui alimente la LED IR (IRED) et le circuit amplificateur avec la photodiode IR (PD) qui crée le signal de sortie Vo sur la broche 5.

Il y a aussi un trimmer (résistance ajustable Rs) pour régler la sensibilité du capteur, mais il ne faut pas y toucher. Sur l’image ci-dessous, vous pouvez voir l’emplacement du trimmer et du circuit intégré amplificateur.

Le GP2Y1010AU0F possède un connecteur à six broches. La LED infrarouge est alimentée via (1) V-LED et (2) LED-GND et contrôlée via la broche (3) LED. Le circuit intégré amplificateur de signal est alimenté via (6) Vcc et (4) S-GND et le signal de sortie Vo est sur la broche (5).
Fiches techniques
Pour plus d’informations sur le GP2Y1010AU0F, consultez sa fiche technique et les notes d’application ci-dessous.
Connexion du GP2Y1010AU0F à Arduino
Pour connecter le GP2Y1010AU0F à Arduino, il faut suivre l’exemple d’application fourni dans les notes d’application (voir ci-dessous).

Vous pouvez voir que le signal de sortie Vo sur la broche (5) va dans le convertisseur analogique-numérique (A/N) du microcontrôleur et que la LED IR sur la broche (3) est contrôlée par une sortie du microcontrôleur.
Nous n’aurons pas besoin du transistor représenté pour piloter la LED IR, car une broche GPIO d’Arduino peut facilement fournir les 20mA nécessaires à la LED. Il y a aussi un peu de circuiterie supplémentaire comme une résistance de limitation de courant de 150Ω pour la LED IR et un condensateur de 220µF, mais rien de compliqué.
Le schéma de brochage suivant montre où se trouvent les six broches sur le connecteur du capteur.

V-LED alimente la LED et doit être connectée au 5V avec une résistance de 150Ω. LED-GND est la masse pour la LED IR et doit être connectée à la GND broche de l’Arduino. LED sert à commuter la LED et nous la connectons à la broche 7 de l’Arduino. N’importe quelle autre sortie digitale fonctionne aussi.
S-GND est la masse pour le capteur et doit être connectée à la GND broche de l’Arduino. Vo fournit la sortie du capteur et sera connectée à l’entrée analogique A0 de l’Arduino. Vcc est l’alimentation du module capteur et doit être connectée au 5V.
L’image suivante montre le câblage complet sur une breadboard, y compris le condensateur de 220µF.

Lors de la connexion du condensateur, faites attention à la polarité. Sa broche négative (généralement plus courte et marquée d’une bande blanche) doit être connectée à la masse (fil noir).
Code pour mesurer la densité de poussière avec le GP2Y1010AU0F
Pour mesurer la densité de poussière, regardons d’abord la courbe de réponse du GP2Y1010AU0F. Elle montre comment la tension de sortie Vo évolue avec l’augmentation de la densité de poussière, mesurée en milligrammes par mètre cube (mg/m 3 ).

Pour des densités de poussière de 0 à 0,5 mg/m 3 , le graphique montre une relation largement linéaire entre la tension et la densité de poussière. Une fois que l’on s’approche de la densité maximale de 580 µg/m 3 (=0,58 mg/m 3 ) que le capteur peut détecter, la courbe s’aplatit et on ne peut plus mesurer de valeurs utiles. La tension de sortie maximale sera alors d’environ 3,7V.
Calcul de la densité de poussière
La partie linéaire du graphique peut être décrite par l’équation suivante :
D[mg/m 3 ] = 0,170 x Vo − 0,1
Elle permet de calculer la densité de poussière D en mg/m 3 en mesurant la tension de sortie Vo avec l’Arduino. Comme les densités de poussière en mg/m 3 sont généralement de petits nombres, on peut aussi mesurer la densité en µg/m 3 , simplement en multipliant la densité en mg/m 3 par 1000.
D[µg/m 3 ] = (0,170 x Vo − 0,1) x 1000
Protocole d’échantillonnage
La fiche technique du GP2Y1010AU0F indique qu’il faut utiliser le protocole d’échantillonnage suivant pour mesurer la densité de poussière. Après avoir allumé la LED IR, il faut attendre 0,28 millisecondes, puis lire la tension de sortie Vo et ensuite éteindre la LED IR.

Avec l’équation de densité de poussière ci-dessus et le protocole d’échantillonnage, nous avons maintenant toutes les informations pour écrire le code permettant de mesurer la densité de poussière avec le GP2Y1010AU0F et un Arduino.
Code pour mesurer la densité de poussière
Regardez d’abord le code complet, puis nous l’analyserons en détail.
const int sensorPin = A0;
const int ledPin = 7;
const int adcMax = 1023;
const float Vcc = 5.0;
float readDensity() {
digitalWrite(ledPin, LOW);
delayMicroseconds(280);
int adc = analogRead(sensorPin);
float v0 = Vcc * adc / adcMax;
float density = 0.170 * v0 - 0.1; // mg/m^3
digitalWrite(ledPin, HIGH);
return density * 1000; // ug/m^3
}
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
delay(1000);
}
void loop() {
Serial.print("Dust:");
Serial.println(readDensity());
delay(1000);
}
Constantes
Le code commence par définir quelques constantes. sensorPin est l’entrée analogique à laquelle la sortie Vo du capteur de poussière est connectée, et ledPin est la sortie digitale qui contrôle la LED IR à l’intérieur du capteur.
adcMax est la valeur maximale que le convertisseur analogique-numérique (ADC) peut produire. Dans le cas de l’Arduino Uno, qui a un ADC 10 bits, cette valeur est 1023. Si vous utilisez un autre microcontrôleur, il faudra ajuster cette valeur. Consultez la fonction analogRead() ou la fiche technique de votre microcontrôleur pour plus d’informations.
Nous précisons aussi ici la tension d’alimentation Vcc . En théorie, le capteur peut fonctionner en 3,3V aussi, mais il faudra alors ajuster la résistance de la LED IR ou garder cette tension à 5V. Il faudra aussi s’assurer que l’entrée analogique ne dépasse pas la tension maximale. Pour simplifier, il est plus facile de rester en 5V.
const int sensorPin = A0; const int ledPin = 7; const int adcMax = 1023; const float Vcc = 5.0;
Lecture de la densité de poussière
Ensuite, nous avons la fonction readDensity() qui lit la densité de poussière mesurée par le capteur. D’abord, la fonction allume la LED IR via digitalWrite(ledPin, LOW) . Notez que la logique est inversée (LOW = allumé).
Ensuite, on attend les 0,28ms (=280µs) comme conseillé dans la fiche technique avant de lire la sortie Vo du capteur avec analogRead() . Cependant, l’ADC de l’Arduino ne retourne pas la tension sur A0 mais une valeur brute (0…1023) qu’il faut convertir en tension v0 via v0 = Vcc * adc / adcMax .
On peut maintenant appliquer l’équation ci-dessus pour convertir la tension v0 en une mesure de densité de poussière density en mg/m^3. Après avoir éteint la LED IR, on multiplie la densité density par 1000 pour obtenir une mesure en µg/m 3 .
float readDensity() {
digitalWrite(ledPin, LOW);
delayMicroseconds(280);
int adc = analogRead(sensorPin);
float v0 = Vcc * adc / adcMax;
float density = 0.170 * v0 - 0.1; // mg/m^3
digitalWrite(ledPin, HIGH);
return density * 1000; // ug/m^3
}
Fonction setup
La fonction setup est simple. On initialise l’interface série, on définit le mode de la broche ledPin en OUTPUT et on attend une seconde – la fiche technique indique que le capteur a besoin d’environ 1 seconde pour être prêt.
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
delay(1000);
}
Fonction loop
Dans la fonction loop, on appelle simplement notre fonction readDensity() et on affiche la densité de poussière mesurée sur le moniteur série. On répète la mesure environ toutes les secondes (sans compter les 0,28ms de la mesure). Vous pouvez échantillonner plus rapidement, jusqu’à 100ms ça fonctionne bien. Plus rapide que ça, j’ai remarqué que le capteur ne réagissait plus correctement.
void loop() {
Serial.print("Dust:");
Serial.println(readDensity());
delay(1000);
}
Exemple de sortie
Si vous ouvrez le Serial Plotter, vous devriez voir la densité de poussière normale fluctuer autour de 0 µg/m 3 . J’ai secoué vigoureusement un plumeau devant le capteur et vous pouvez voir le pic de densité de poussière sur le graphique ci-dessous.

Ensuite, j’ai brûlé une allumette et le capteur a de nouveau réagi fortement à la fumée produite. Notez que la fumée est restée plus longtemps que la poussière.

Enfin, vous pouvez aussi tester le fonctionnement du capteur et du code en bloquant le chemin de la poussière avec un objet, par exemple un petit tournevis comme montré sur la photo ci-dessous.

La densité de poussière mesurée devrait approcher la valeur maximale d’environ 580 µg/m 3 que le capteur peut mesurer. J’obtenais une valeur de 534 µg/m 3 .
Et voilà ! Un petit capteur de poussière bien pratique qui vous aidera à garder votre environnement sain.
Conclusions
Le GP2Y1010AU0F est un capteur facile à utiliser et assez sensible. Il réagit bien à la poussière, à la fumée et devrait aussi pouvoir détecter le pollen, même si je n’ai pas encore testé cela.
Si vous connectez le capteur à un autre microcontrôleur que l’Arduino Uno utilisé ici, faites attention aux différentes tensions (5V vs 3,3V), ainsi qu’à la résolution et à la plage d’entrée du convertisseur analogique-numérique (ADC). Beaucoup de tutoriels sur le GP2Y1010AU0F se trompent légèrement sur ce point et les mesures de densité de poussière sont alors incorrectes. Faites aussi attention à la conversion mg/m 3 en µg/m 3 , qui est parfois mal implémentée.
Enfin, si vous avez besoin d’un capteur capable de mesurer la concentration de particules PM2.5, jetez un œil au DSM501 sensor .
FAQ
Quels sont les niveaux sains et non sains de densité de poussière mesurés en µg/m 3 ?
Les niveaux sains de densité de poussière sont généralement inférieurs à 50 µg/m 3 , tandis que les niveaux non sains sont supérieurs à 150 µg/m 3 .
Quelle est la relation entre la densité de poussière mesurée en µg/m 3 et les particules PM, en particulier PM2.5 et PM10 ?
La densité de poussière mesurée en µg/m 3 est directement liée aux particules fines (PM), y compris PM2.5 et PM10. PM2.5 désigne les particules d’un diamètre de 2,5 µm ou moins, tandis que PM10 concerne les particules de 10 µm ou moins. Une densité de poussière plus élevée indique des niveaux plus élevés de PM2.5 et PM10 dans l’air.

Pourquoi la pollution PM2.5 est-elle mauvaise pour la santé ?
Parmi toutes les formes de pollution de l’air, la pollution PM2.5 représente la plus grande menace pour la santé. En raison de leur petite taille, les PM2.5 peuvent rester en suspension dans l’air longtemps et être absorbées profondément dans le sang lors de l’inhalation.
Quelles sont les principales sources de pollution PM2.5 ?
Les sources courantes de pollution PM2.5 sont les moteurs et la combustion, les procédés industriels, les poêles, cheminées et le chauffage au bois domestique, la fumée des feux d’artifice et des feux de forêt, le tabagisme, la poussière et les particules de pollen.
Un capteur PM2.5 ou PM10 peut-il mesurer le pollen ?
La plupart des particules de pollen sont plus grosses que les particules PM2.5 et PM10 et ne seront donc pas détectées par un capteur PM2.5 ou PM10. Cependant, bien que les particules de pollen fassent généralement plus de 10 µm, elles peuvent se fragmenter en particules plus petites dans la gamme PM2.5, qui peuvent alors être mesurées.
Puis-je calibrer le capteur GP2Y1010AU0F pour mesurer les valeurs PM2.5 ou PM25 ?
Non, le capteur GP2Y1010AU0F est conçu pour détecter des particules plus grosses et ne peut pas être calibré pour mesurer les valeurs PM2.5 ou PM25.
Quelle est la taille typique du pollen et un capteur de poussière comme le GP2Y1010AU0F peut-il mesurer la densité de pollen ?
La taille typique du pollen est d’environ 10 à 100 µm. Si vous voyez le pollen flotter dans l’air, cela signifie que la particule est assez grosse, au moins 60 µm. Le capteur de poussière GP2Y1010AU0F peut mesurer des particules de plus de 0,5 µm, il peut donc détecter les particules de pollen.
Quel est un niveau non sain de densité de pollen ?
Un niveau non sain de densité de pollen est généralement considéré comme élevé lorsqu’il dépasse 100 grains par mètre cube, ce qui peut déclencher des allergies chez les personnes sensibles.
Quelle densité en µg/m^3 correspond à 100 grains par mètre cube ?
La conversion des grains en microgrammes par mètre cube (µg/m^3) dépend de la densité du matériau mesuré. Pour le pollen, le facteur de conversion est d’environ 1 grain = 6,48 µg/m^3. Donc, 100 grains de pollen équivalent à 648 µg/m^3.

