Monitore a Qualidade do Ar com Precisão usando o Sensor Sharp GP2Y1010AU0F
Componentes e Materiais
| Componente | Quantidade |
|---|---|
| Arduino Nano R3 | 1 |
| Capacitor 220 µF | 1 |
| Resistor 150 ohm (furo passante) | 1 |
Ferramentas Necessárias
- Ferro de solda
Aplicativos e Serviços Online
- Arduino IDE
- Processing (The Processing Foundation)
Sobre o Projeto
O Sensor Óptico de Poeira Sharp (GP2Y1010AU0F) é especialmente eficaz na detecção de partículas muito finas como fumaça de cigarro, sendo comum em sistemas purificadores de ar. Um diodo emissor infravermelho e um fototransistor são dispostos diagonalmente para detectar a luz refletida pela poeira no ar.
Em vídeos anteriores mostrei monitores baseados nos sensores DSM501A e PPD42NS. Agora apresento o mesmo dispositivo baseado no Sharp GP2Y1010AU0F, também muito barato (~$5). O esquema elétrico é simples. O sensor consome pouca corrente (20mA máx, 11mA típico) e pode ser alimentado diretamente pelo Arduino. A saída é tensão analógica proporcional à densidade de poeira, com sensibilidade de 0.5V/0.1mg/m³.
Modifiquei o código de exemplo Arduino da "Dfrobot" para leitura em µg/m³. Escrevi um código Processing baseado na biblioteca "meter" para representar os valores no monitor do PC como um grande instrumento analógico, dando efeito visual distinto.

Comparação dos Sensores
Comparando os três sensores (DSM501A, PPD42NS e Sharp GP2Y1010AU0F) nas mesmas condições, o vencedor é o Sharp GP2Y1010AU0F. Pontos positivos:
- Mais sensível a valores muito baixos
- Consumo de energia muito baixo, alimentado direto do Arduino
- Código Arduino simples e facilmente personalizável
- Saída analógica, conecta direto a instrumento de medição sem eletrônica adicional
Este sensor pode ser comprado no AliExpress: link
Obrigado por assistir.
Código
Código Arduino Arduino
/* Standalone Sketch para Arduino UNO com Sensor Óptico de Poeira Sharp GP2Y1010AU0F */
int measurePin = 0; // Conecte sensor ao pino A0 do Arduino
int ledPower = 2; // Conecte 3 pinos do driver do LED do sensor ao D2 do Arduino
int samplingTime = 280;
int deltaTime = 40;
int sleepTime = 9680;
float voMeasured = 0;
float calcVoltage = 0;
float dustDensity = 0;
void setup(){
Serial.begin(9600);
pinMode(ledPower, OUTPUT);
}
void loop(){
digitalWrite(ledPower, LOW); // Liga o LED
delayMicroseconds(samplingTime);
voMeasured = analogRead(measurePin); // Lê valor de poeira
delayMicroseconds(deltaTime);
digitalWrite(ledPower, HIGH); // Desliga o LED
delayMicroseconds(sleepTime);
// 0-5V mapeado para 0-1023
calcVoltage = voMeasured * (5.0 / 1024.0);
// Equação linear de https://www.howmuchsnow.com/arduino/airquality/
// Chris Nafis (c) 2012
dustDensity = 170 * calcVoltage - 0.1;
Serial.println(dustDensity); // unidade: µg/m³
delay(1000);
}
Código Processing C/C++
/* Meter como círculo parcial. Altere algumas cores.
O círculo começa em 90 graus (6 horas) e move no sentido horário.
Criado em 19 abril 2017 por Bill (Papa) Kujawa. Domínio público. */
import processing.serial.*;
import meter.*;
Serial port;
String[] list;
Meter m;
void setup() {
size(1150, 910);
background(255, 255, 200);
port = new Serial(this, "COM4", 9600);
m = new Meter(this, 125, 25, true);
m.setMeterWidth(850);
m.setFrameColor(color(100, 0, 0));
m.setTitleFontColor(color(0, 200, 0));
m.setPivotPointColor(color(255, 0, 0));
m.setArcColor(color(0, 0, 200));
m.setScaleFontColor(color(200, 100, 0));
m.setTicMarkColor(color(217, 22, 247));
m.setArcMinDegrees(90.0);
m.setArcMaxDegrees(360.0);
m.setArcThickness(5);
m.setNeedleThickness(4);
m.setMinScaleValue(0.0);
m.setMaxScaleValue(800.0);
m.setInputSignalOutOfRangeFontColor(color(0, 255, 0));
m.setMinInputSignal(0);
m.setMaxInputSignal(800);
m.setHighSensorWarningActive(true);
m.setHighSensorWarningValue((float)200.0);
String[] scaleLabelsA = {"0", "100", "200", "300", "400", "500", "600", "700", "800"};
m.setScaleLabels(scaleLabelsA);
m.setTitle("Qualidade do Ar (µg/m³)");
m.setDisplayDigitalMeterValue(true);
}
void draw() {
if (port.available() > 0) {
String val = port.readString();
list = split(val, ',');
float air = float(list[0]);
println("Qualidade do Ar: " + air + " mg/m3 ");
m.updateMeter(int(air));
}
}
Esquemáticos

Processo de manufatura
- Bosch Sensortec Apresenta Sensor de Qualidade do Ar BME688 com IA para Reduzir Risco de Transmissão Viral
- Construa uma Estação Meteorológica e de Qualidade do Ar com Raspberry Pi, InfluxDB e Grafana
- Monitoramento de Qualidade do Ar com OpenSensors: Guia Arduino e Python
- Sensor de Qualidade do Ar Solar com Helium: Guia de Projeto e Deploy
- Sistema de Monitoramento de Qualidade do Ar para Cidades Inteligentes Baseado em LoRa
- Construa um Relógio Retrô Numitron com Arduino: Simples, Confiável e Eficiente
- Projeto DHT11: Sensor Temperatura/Umidade com LEDs Indicadores e Buzzer
- Sistema Inteligente de Monitoramento de Qualidade do Ar Interno e Resíduos
- Sensor K30 CO₂: Monitoramento de Qualidade do Ar Interno em Tempo Real
- Sensor Avançado de NO₂ Baseado em Carbono Melhora Monitoramento da Qualidade do Ar Interno