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 Dust Sensor VCC/GND/LED/AOUT 5V / GND / board digital pin (via 150 ohm resistor + 220uF cap) / board analog pin
Optical Dust Sensor with Cable - Smoke - Arduino Uno
Optical Dust Sensor with Cable - Smoke - Arduino Nano
Optical Dust Sensor with Cable - Smoke - Arduino Mega
Optical Dust Sensor with Cable - Smoke - ESP32
Optical Dust Sensor with Cable - Smoke - ESP8266
Optical Dust Sensor with Cable - Smoke - STM32
Optical Dust Sensor with Cable - Smoke - 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 sensor, same GP2Y1010AU0F-style pulsed-LED sampling.