GP2Y1010AUOF Optical Dust Sensor with Cable – Smoke
GP2Y1010AU0F Optical Dust Sensor
Laser-Based Air Quality Detection for PM2.5 and Smoke
Introduction
The GP2Y1010AU0F is an optical air quality sensor that detects fine particles like dust, smoke, and other airborne contaminants. Using infrared LED and phototransistor technology, it provides analog output proportional to particulate concentration, making it ideal for air quality monitors and industrial applications.
Key Features
Particle Detection
Sensitive to PM2.5 and smoke particles
Optical Design
Infrared LED with phototransistor
Analog Output
Voltage proportional to dust density
Built-in Cable
6-pin connector for easy integration
Technical Specifications
Detection Range | 0.5μm to 2.5μm particles |
---|---|
Operating Voltage | 5V DC ±0.5V |
Current Consumption | 20mA (typical) |
Output Type | Analog (0.6V-4.0V) |
Sensitivity | 0.5V per 0.1mg/m³ |
Response Time | <10ms |
Pin Configuration

Pin | Color | Description | Arduino Connection |
---|---|---|---|
1 | Black | Ground | GND |
2 | Red | LED Power (5V) | 5V via 150Ω resistor |
3 | Yellow | LED Control | D2 (Digital Output) |
4 | Green | Not Connected | – |
5 | White | Analog Output | A0 (Analog Input) |
6 | Blue | VCC (5V) | 5V |
Important: LED must be pulsed for proper operation
Wiring Diagram (Arduino)
// GP2Y1010AU0F Connections: // Black → GND // Red → 5V through 150Ω resistor // Yellow → D2 (LED control) // White → A0 (Analog Input) // Blue → 5V // Green → Not connected // Required Components: // - 150Ω resistor for LED // - 220μF capacitor between VCC and GND
Basic Dust Detection
const int ledPin = 2; const int analogPin = A0; void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); } void loop() { // Pulse LED for 0.32ms every 10ms digitalWrite(ledPin, LOW); delayMicroseconds(280); int voRaw = analogRead(analogPin); delayMicroseconds(40); digitalWrite(ledPin, HIGH); delayMicroseconds(9680); // Convert to voltage (0-5V scale) float voltage = voRaw * (5.0 / 1023.0); // Calculate dust density (mg/m³) float dustDensity = (voltage - 0.6) / 5.0; Serial.print("Dust Density: "); Serial.print(dustDensity); Serial.println(" mg/m³"); delay(1000); }
Advanced Applications
Improved Accuracy
// Moving average filter
#define READINGS 10
float dustHistory[READINGS];
int index = 0;
float getAvgDensity(float newReading) {
dustHistory[index] = newReading;
index = (index + 1) % READINGS;
float sum = 0;
for(int i=0; i
Air Quality Index
// Convert to AQI
float getAQI(float dustDensity) {
if(dustDensity <= 0.054) {
return (50/0.054) * dustDensity;
} else if(dustDensity <= 0.154) {
return 50 + (50/0.1) * (dustDensity-0.054);
} else if(dustDensity <= 0.254) {
return 100 + (50/0.1) * (dustDensity-0.154);
} else {
return 150 + (100/0.25) * (dustDensity-0.254);
}
}
Data Logging
// Record to SD card
#include
#include
File dataFile;
void setup() {
SD.begin(4);
dataFile = SD.open("dust.csv", FILE_WRITE);
}
void loop() {
float density = getDustDensity();
dataFile.print(millis());
dataFile.print(",");
dataFile.println(density);
delay(60000); // Log every minute
}
Wireless Monitoring
// Send data via WiFi
#include
void sendDustData(float density) {
WiFiClient client;
if(client.connect("api.thingspeak.com",80)) {
String url = "/update?api_key=YOUR_KEY&field1=";
url += String(density);
client.print("GET "+url+" HTTP/1.1\r\n");
client.print("Host: api.thingspeak.com\r\n\r\n");
}
client.stop();
}
Troubleshooting
No Signal Change
- Verify LED is pulsing (check with oscilloscope)
- Ensure proper 150Ω resistor on LED power
- Check for air flow through sensor
Constant High Readings
- Clean sensor optics with compressed air
- Check for ambient light interference
- Test in known clean environment
Erratic Values
- Add 220μF capacitor between VCC and GND
- Ensure stable 5V power supply
- Implement software averaging
Related Posts
IC 74173 – 4-Bit D-Type Register with 3-State Outputs
IC 74173 - 4-Bit D-Type Register with 3-State Outputs
TTL Quad D Flip-Flop with Asynchronous Clear and Output Enable
...
DIY Metal Detector Kit
DIY Metal Detector Kit
DC 3V-5V Non-Contact Sensor Module with 60mm Detection Range
Introduction
The DIY Metal Detec...
CNC V3 Shield with 4 A4988 Drivers
CNC V3 Shield with 4 A4988 Drivers
Complete Arduino-compatible CNC controller for 3D printers and milling machines
...
CN3791 12V MPPT Solar Charger Module
CN3791 12V MPPT Solar Charger Module
Maximum Power Point Tracking Solar Charge Controller for Lead-Acid/Lithium Batteries
...
CJMCU-TRRS 3.5mm Jack AV Stereo Module
CJMCU-TRRS 3.5mm Jack AV Stereo Module
Compact breakout board for audio/video signal interfacing with TRRS connectors
...
TTP223 Capacitive Touch Sensor Module (Red)
TTP223 Capacitive Touch Sensor Module (Red)
Single-Key Touch Detection with Digital Output for Arduino and DIY Projects
...
Capacitive Soil Moisture Sensor
Capacitive Soil Moisture Sensor
Corrosion-Resistant Humidity Detection for Plants and Agricultural Applications
Intro...
VHM-314 Bluetooth Audio Receiver Board Module
VHM-314 Bluetooth Audio Receiver Board Module
High-fidelity stereo audio receiver with Bluetooth 5.0 and 3.5mm audio output
...
BD243 DIY Mini Tesla Coil Prototyping Kit
BD243 DIY Mini Tesla Coil Prototyping Kit
High-Voltage Wireless Power Demonstration - Build Your Own Spark Gap Tesla Coil
...
BF120-3AA Precision Strain Gauges (120Ω)
BF120-3AA Precision Strain Gauges (120Ω)
High-precision foil strain gauges for load cell applications with 120Ω resistance
...
Recent Comments