Kit de sensor de calidad del aire y confort para interiores con Arduino
Componentes y suministros
![]() |
Arduino Nano R3 | × | 1 |
![]() |
Sensor de temperatura y humedad DHT11 (3 pines) | × | 1 |
| Sensor de calidad del aire MQ135 | × | 1 | |
| Pantalla OLED I2C 0.96" | × | 1 |
Herramientas y máquinas necesarias
![]() |
Soldador (genérico) |
![]() |
Impresora 3D (genérica) Opcional |
Aplicaciones y servicios en línea
![]() |
Arduino IDE |
Sobre este proyecto
Muchas veces nos sentimos débiles al despertar incluso después de dormir bien. Esto puede deberse a la mala calidad del aire en habitaciones cerradas durante la noche.

Este es un monitor de calidad del aire de bajo costo que mide la calidad del aire usando el sensor MQ135, además de temperatura y humedad con el DHT11, mostrando los datos en una pantalla OLED. Es un proyecto divertido y muy útil.
Conexiones (Wiring)




Conecta:
- Arduino D2 → DHT11 OUT
- Arduino A0 → MQ135 AO
- Arduino A5 → OLED SCL
- Arduino A4 → OLED SDA
Programación
Necesitas instalar las siguientes librerías:
Adafruit_SSD1306.hAdafruit_GFX.hDHT.h
El código tiene dos funciones principales: sendSensor() y air_sensor().
air_sensor(): Lee el valor analógico del sensor de calidad del aire (gasLevel = analogRead(sensor);) y define la calidad del aire según ese nivel.sendSensor(): Mide temperatura y humedad con la libreríadhty lo muestra en el OLED.


Calibración del sensor MQ135: En air_sensor() es posible que debas ajustar los umbrales de gasLevel para tu sensor. Alimenta el MQ135 con 5V y déjalo en un ambiente limpio al menos 24 horas antes de usarlo (proceso de "quemado" necesario porque el sensor viene contaminado). Esto limpia el sensor y da lecturas más precisas.
Luego conéctalo al circuito, llévalo al exterior y ajusta los valores correctos para tu ubicación.
Código
Monitor de calidad del aire con Arduino
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeSans9pt7b.h>
#include <Fonts/FreeMonoOblique9pt7b.h>
#include <DHT.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define sensor A0
#define DHTPIN 2
#define DHTTYPE DHT11
int gasLevel = 0;
String quality = "";
DHT dht(DHTPIN, DHTTYPE);
void sendSensor() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Error al leer sensor DHT!");
return;
}
display.setTextColor(WHITE);
display.setTextSize(1);
display.setFont();
display.setCursor(0, 43);
display.println("Temp:");
display.setCursor(80, 43);
display.println(t);
display.setCursor(114, 43);
display.println("C");
display.setCursor(0, 56);
display.println("HR:");
display.setCursor(80, 56);
display.println(h);
display.setCursor(114, 56);
display.println("%");
}
void air_sensor() {
gasLevel = analogRead(sensor);
if (gasLevel < 181) {
quality = " BUENO!";
} else if (gasLevel > 181 && gasLevel < 225) {
quality = " MALO!";
} else if (gasLevel > 225 && gasLevel < 300) {
quality = "Muy malo!";
} else if (gasLevel > 300 && gasLevel < 350) {
quality = "Peligroso!";
} else {
quality = " TOXICO";
}
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(1, 5);
display.setFont();
display.println("Calidad Aire:");
display.setTextSize(1);
display.setCursor(20, 23);
display.setFont(&FreeMonoOblique9pt7b);
display.println(quality);
}
void setup() {
Serial.begin(9600);
pinMode(sensor, INPUT);
dht.begin();
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3c)) {
Serial.println(F("Fallo al iniciar SSD1306"));
}
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(50, 0);
display.println("Aire");
display.setTextSize(1);
display.setCursor(23, 20);
display.println("Monitor calidad");
display.display();
delay(1200);
display.clearDisplay();
display.setTextSize(2);
display.setCursor(20, 20);
display.println("Por Abid");
display.display();
delay(1000);
display.clearDisplay();
}
void loop() {
display.clearDisplay();
air_sensor();
sendSensor();
display.display();
}
Piezas personalizadas y cajas
Esta es una caja 3D diseñada para el proyecto. No necesitas impresora 3D; puedes hacer tu propia caja con cartón u otros materiales.
Esquemáticos
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
- Monitor DIY de calidad del aire: detector EPA-compliant económico
- 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
- Crea un Impresionante Sistema Ambilight para Monitor con Arduino
- Sistema inteligente de monitorización de calidad del aire interior y residuos
- Bosch Sensortec presenta sensor de calidad de aire BME688 con IA para reducir riesgo de transmisión viral
- Renesas eleva su plataforma sensor calidad aire interior con IA embebida para detección de olores mejorada
- Pequeños sensores PM2.5 y VOC ofrecen monitoreo personal de calidad del aire en tiempo real
- Sensor avanzado de NO₂ basado en carbono mejora monitorización de calidad del aire interior




