Construye un monitor de calidad del aire preciso con el sensor Sharp GP2Y1010AU0F
Componentes y suministros
| Arduino Nano R3 | × | 1 |
| Capacitor, 220 µF | × | 1 |
| Resistencia de orificio pasante, 150 ohm | × | 1 |
Herramientas y máquinas necesarias
- Soldador (genérico)
Aplicaciones y servicios en línea
- Arduino IDE
- Processing (The Processing Foundation)
Sobre este proyecto
El sensor óptico de polvo Sharp (GP2Y1010AU0F) es especialmente eficaz en la detección de partículas muy finas como el humo del cigarrillo, y se usa comúnmente en sistemas purificadores de aire. Un diodo emisor de infrarrojos y un fototransistor están dispuestos diagonalmente en este dispositivo, para permitirle detectar la luz reflejada del polvo en el aire.
En videos anteriores he mostrado monitores de calidad del aire basados en placas de sensores DSM501A y PPD42NS. Esta vez presentaré el mismo dispositivo, ahora basado en la placa de sensor Sharp GP2Y1010AU0F que también es muy barata y cuesta alrededor de $5. El esquema eléctrico de este dispositivo es muy simple y se muestra en la figura de abajo. El sensor de aire tiene un consumo de corriente muy bajo (20mA máx, 11mA típico), y puede alimentarse directamente desde la placa Arduino. La salida del sensor es un voltaje analógico proporcional a la densidad de polvo medida, con una sensibilidad de 0.5V/0.1mg/m3.
Modifiqué el código de muestra de Arduino de la página "Dfrobot" para que la lectura de valores sea en microg/m3. Luego escribí un código de Processing basado en la biblioteca "meter", para que estos valores se representen en el monitor de la PC en forma de un gran instrumento analógico, dándole un efecto visual distinto.
Por último, comparemos las tres placas de sensores (DSM501A y PPD42NS que describí en videos anteriores y Sharp GP2Y1010AU0F descrito arriba). Los tres sensores son muy baratos y se pueden comprar por unos pocos dólares. Según los resultados que obtuve probándolos bajo las mismas condiciones, el ganador es Sharp GP2Y1010AU0F. Hay una serie de puntos positivos entre los que se incluyen:
- Es más sensible a valores muy bajos
- Tiene un consumo de energía muy bajo y puede alimentarse directamente desde el Arduino
- Código de Arduino muy simple que es fácilmente personalizable
- Tiene una salida analógica por lo que puede conectarse directamente a un instrumento de medición sin electrónica adicional
Este sensor se puede comprar en AliExpress: https://www.aliexpress.com/item/32661666070.html?spm=a2g0s.9042311.0.0.27424c4dKW7gUj
Gracias por ver
Código
Código Arduino Arduino
/* Sketch independiente para usar con un Arduino UNO y un Sensor Óptico de Polvo Sharp GP2Y1010AU0F */
int measurePin = 0; //Conectar sensor de polvo al pin A0 de Arduino
int ledPower = 2; //Conectar 3 pines de control del LED del sensor de polvo al pin D2 de 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); // encender el LED
delayMicroseconds(samplingTime);
voMeasured = analogRead(measurePin); // leer el valor de polvo
delayMicroseconds(deltaTime);
digitalWrite(ledPower,HIGH); // apagar el LED
delayMicroseconds(sleepTime);
// 0 - 5V mapeado a 0 - 1023 valores enteros
// recuperar voltaje
calcVoltage = voMeasured * (5.0 / 1024.0);
// ecuación lineal tomada de https://www.howmuchsnow.com/arduino/airquality/
// Chris Nafis (c) 2012
dustDensity = 170 * calcVoltage - 0.1;
Serial.println(dustDensity); // unidad: ug/m3
delay(1000);
}
Código Processing C/C++
/* Medidor como círculo parcial. Cambia algunos colores.
Creado el 19 de abril de 2017 por Bill (Papa) Kujawa.
Este código de ejemplo es de dominio 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("Calidad del aire (ug/m3)");
m.setDisplayDigitalMeterValue(true);
}
void draw() {
if (port.available() > 0) {
String val = port.readString();
list = split(val, ',');
float air = float(list[0]);
println("Calidad del aire: " + air + " mg/m3 ");
m.updateMeter(int(air));
}
}
Esquemas
Diagrama esquemático de conexión del sensor Sharp GP2Y1010AU0F.
Proceso de manufactura
- Construya una estación meteorológica y de calidad del aire con Raspberry Pi, InfluxDB y Grafana
- Medición de la Calidad del Aire con OpenSensors: Guía para Arduino y Python
- Sensor de Calidad del Aire Solar con Helium: Guía de Diseño y Despliegue
- Sistema de Monitorización de Calidad del Aire para Ciudades Inteligentes con LoRa
- Construye un reloj Numitron retro con Arduino: Simple, fiable y eficiente energéticamente
- Proyecto Sensor DHT11 Temperatura y Humedad con Indicadores LED y Altavoz Piezo
- Sistema inteligente de monitorización de calidad del aire interior y residuos
- Sensor K30 CO₂: Monitorización en tiempo real de la calidad del aire interior
- Sensor de obstáculos IR casero con Arduino – Tutorial fácil con LED IR y fotodiodo
- Bosch Sensortec presenta sensor de calidad de aire BME688 con IA para reducir riesgo de transmisión viral
- Sensor avanzado de NO₂ basado en carbono mejora monitorización de calidad del aire interior