This PM2.5 GP2Y1010AU0F Dust Smoke Particle Sensor is an infrared emitting diode (IRED) and a phototransistor are diagonally arranged into this device. It detects the reflected light of dust in the air. Especially, it is effective to detect very fine particle like the cigarette smoke. In addition, it can distinguish smoke from house dust by the pulse pattern of the output voltage.
The module is mainly used for dust removal equipment alarm equipment, air purification equipment, dust robots, fire alarm, etc. industry equipment can detect smoke particles, pollen spores, and other particles.
Applications:
1. Detecting of dust in the air. 2. Example: Air purifier, Air conditioner, the Air monitor.
Features :
Compliant with RoHS directive (2002/95/EC)
Compact, thin package (46.0 × 30.0 × 17.6 mm)
Low consumption current (Icc: MAX. 20 mA)
The presence of dust can be detected by the photometry of only one pulse
Enable to distinguish smoke from house dust
Lead-free and RoHS directive compliant
Package Includes :
1 x PM2.5 GP2Y1010AU0F Dust Smoke Particle Sensor. 1 x Connecting cable. 1x 150 Ω resistor. 1 x 220 μF capacitor.
Pin Connections Table 1
Board Sensor Pin Connection GP2Y1010AU0F VCC/GND/LED/AOUT 5V / GND / board digital pin (via 150 ohm resistor + 220uF cap per datasheet) / board analog pin
PM2.5 GP2Y1010AU0F Dust Smoke Particle Sensor (2) - Arduino Uno
PM2.5 GP2Y1010AU0F Dust Smoke Particle Sensor (2) - Arduino Nano
PM2.5 GP2Y1010AU0F Dust Smoke Particle Sensor (2) - Arduino Mega
PM2.5 GP2Y1010AU0F Dust Smoke Particle Sensor (2) - ESP32
PM2.5 GP2Y1010AU0F Dust Smoke Particle Sensor (2) - ESP8266
PM2.5 GP2Y1010AU0F Dust Smoke Particle Sensor (2) - STM32
PM2.5 GP2Y1010AU0F Dust Smoke Particle Sensor (2) - Raspberry Pi Pico
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // LED-drive pin 2 , analog out A0 on Arduino Uno
6 #define LED_PIN 2
7 #define AOUT_PIN A0
8
9 void setup () {
10 Serial.begin (115200 );
11 pinMode (LED_PIN, OUTPUT );
12 digitalWrite (LED_PIN, HIGH ); // module's internal IR LED is active-LOW - idle it off between samples
13 }
14
15 void loop () {
16 digitalWrite (LED_PIN, LOW ); // turn the IR LED on
17 delayMicroseconds (280 );
18 int raw = analogRead(AOUT_PIN); // sample while the LED is on
19 delayMicroseconds (40 );
20 digitalWrite (LED_PIN, HIGH ); // turn the IR LED back off
21 delayMicroseconds (9680 ); // completes the ~10ms duty cycle the datasheet specifies
22
23 float voltage = raw * 5.0 / 1023.0 ;
24 float dustDensity = (voltage - 0.6 ) / 5.0 * 1000.0 ; // approximate datasheet formula, ug/m3 (needs real calibration)
25
26 Serial.print ("Dust density (approx): "); Serial.print (dustDensity > 0 ? dustDensity : 0 ); Serial.println (" ug/m3");
27 delay (1000 );
28 }
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // LED-drive pin 2 , analog out A0 on Arduino Nano
6 #define LED_PIN 2
7 #define AOUT_PIN A0
8
9 void setup () {
10 Serial.begin (115200 );
11 pinMode (LED_PIN, OUTPUT );
12 digitalWrite (LED_PIN, HIGH ); // module's internal IR LED is active-LOW - idle it off between samples
13 }
14
15 void loop () {
16 digitalWrite (LED_PIN, LOW ); // turn the IR LED on
17 delayMicroseconds (280 );
18 int raw = analogRead(AOUT_PIN); // sample while the LED is on
19 delayMicroseconds (40 );
20 digitalWrite (LED_PIN, HIGH ); // turn the IR LED back off
21 delayMicroseconds (9680 ); // completes the ~10ms duty cycle the datasheet specifies
22
23 float voltage = raw * 5.0 / 1023.0 ;
24 float dustDensity = (voltage - 0.6 ) / 5.0 * 1000.0 ; // approximate datasheet formula, ug/m3 (needs real calibration)
25
26 Serial.print ("Dust density (approx): "); Serial.print (dustDensity > 0 ? dustDensity : 0 ); Serial.println (" ug/m3");
27 delay (1000 );
28 }
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // LED-drive pin 2 , analog out A0 on Arduino Mega
6 #define LED_PIN 2
7 #define AOUT_PIN A0
8
9 void setup () {
10 Serial.begin (115200 );
11 pinMode (LED_PIN, OUTPUT );
12 digitalWrite (LED_PIN, HIGH ); // module's internal IR LED is active-LOW - idle it off between samples
13 }
14
15 void loop () {
16 digitalWrite (LED_PIN, LOW ); // turn the IR LED on
17 delayMicroseconds (280 );
18 int raw = analogRead(AOUT_PIN); // sample while the LED is on
19 delayMicroseconds (40 );
20 digitalWrite (LED_PIN, HIGH ); // turn the IR LED back off
21 delayMicroseconds (9680 ); // completes the ~10ms duty cycle the datasheet specifies
22
23 float voltage = raw * 5.0 / 1023.0 ;
24 float dustDensity = (voltage - 0.6 ) / 5.0 * 1000.0 ; // approximate datasheet formula, ug/m3 (needs real calibration)
25
26 Serial.print ("Dust density (approx): "); Serial.print (dustDensity > 0 ? dustDensity : 0 ); Serial.println (" ug/m3");
27 delay (1000 );
28 }
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // LED-drive pin 4 , analog out 34 on ESP32
6 #define LED_PIN 4
7 #define AOUT_PIN 34
8
9 void setup () {
10 Serial.begin (115200 );
11 pinMode (LED_PIN, OUTPUT );
12 digitalWrite (LED_PIN, HIGH ); // module's internal IR LED is active-LOW - idle it off between samples
13 }
14
15 void loop () {
16 digitalWrite (LED_PIN, LOW ); // turn the IR LED on
17 delayMicroseconds (280 );
18 int raw = analogRead(AOUT_PIN); // sample while the LED is on
19 delayMicroseconds (40 );
20 digitalWrite (LED_PIN, HIGH ); // turn the IR LED back off
21 delayMicroseconds (9680 ); // completes the ~10ms duty cycle the datasheet specifies
22
23 float voltage = raw * 3.3 / 4095.0 ;
24 float dustDensity = (voltage - 0.6 ) / 5.0 * 1000.0 ; // approximate datasheet formula, ug/m3 (needs real calibration)
25
26 Serial.print ("Dust density (approx): "); Serial.print (dustDensity > 0 ? dustDensity : 0 ); Serial.println (" ug/m3");
27 delay (1000 );
28 }
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // LED-drive pin D4, analog out A0 on ESP8266
6 #define LED_PIN D4
7 #define AOUT_PIN A0
8
9 void setup () {
10 Serial.begin (115200 );
11 pinMode (LED_PIN, OUTPUT );
12 digitalWrite (LED_PIN, HIGH ); // module's internal IR LED is active-LOW - idle it off between samples
13 }
14
15 void loop () {
16 digitalWrite (LED_PIN, LOW ); // turn the IR LED on
17 delayMicroseconds (280 );
18 int raw = analogRead(AOUT_PIN); // sample while the LED is on
19 delayMicroseconds (40 );
20 digitalWrite (LED_PIN, HIGH ); // turn the IR LED back off
21 delayMicroseconds (9680 ); // completes the ~10ms duty cycle the datasheet specifies
22
23 float voltage = raw * 3.3 / 1023.0 ;
24 float dustDensity = (voltage - 0.6 ) / 5.0 * 1000.0 ; // approximate datasheet formula, ug/m3 (needs real calibration)
25
26 Serial.print ("Dust density (approx): "); Serial.print (dustDensity > 0 ? dustDensity : 0 ); Serial.println (" ug/m3");
27 delay (1000 );
28 }
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // LED-drive pin PB4, analog out PA0 on STM32
6 #define LED_PIN PB4
7 #define AOUT_PIN PA0
8
9 void setup () {
10 Serial.begin (115200 );
11 pinMode (LED_PIN, OUTPUT );
12 digitalWrite (LED_PIN, HIGH ); // module's internal IR LED is active-LOW - idle it off between samples
13 }
14
15 void loop () {
16 digitalWrite (LED_PIN, LOW ); // turn the IR LED on
17 delayMicroseconds (280 );
18 int raw = analogRead(AOUT_PIN); // sample while the LED is on
19 delayMicroseconds (40 );
20 digitalWrite (LED_PIN, HIGH ); // turn the IR LED back off
21 delayMicroseconds (9680 ); // completes the ~10ms duty cycle the datasheet specifies
22
23 float voltage = raw * 3.3 / 4095.0 ;
24 float dustDensity = (voltage - 0.6 ) / 5.0 * 1000.0 ; // approximate datasheet formula, ug/m3 (needs real calibration)
25
26 Serial.print ("Dust density (approx): "); Serial.print (dustDensity > 0 ? dustDensity : 0 ); Serial.println (" ug/m3");
27 delay (1000 );
28 }
1 //ekostra.com
2 //electronics store in egypt
3 //+201008896258
4
5 // LED-drive pin 2 , analog out 26 on Raspberry Pi Pico
6 #define LED_PIN 2
7 #define AOUT_PIN 26
8
9 void setup () {
10 Serial.begin (115200 );
11 pinMode (LED_PIN, OUTPUT );
12 digitalWrite (LED_PIN, HIGH ); // module's internal IR LED is active-LOW - idle it off between samples
13 }
14
15 void loop () {
16 digitalWrite (LED_PIN, LOW ); // turn the IR LED on
17 delayMicroseconds (280 );
18 int raw = analogRead(AOUT_PIN); // sample while the LED is on
19 delayMicroseconds (40 );
20 digitalWrite (LED_PIN, HIGH ); // turn the IR LED back off
21 delayMicroseconds (9680 ); // completes the ~10ms duty cycle the datasheet specifies
22
23 float voltage = raw * 3.3 / 4095.0 ;
24 float dustDensity = (voltage - 0.6 ) / 5.0 * 1000.0 ; // approximate datasheet formula, ug/m3 (needs real calibration)
25
26 Serial.print ("Dust density (approx): "); Serial.print (dustDensity > 0 ? dustDensity : 0 ); Serial.println (" ug/m3");
27 delay (1000 );
28 }
Project Notes: Optical dust/smoke density sensor.