En este tutorial, proporcionaré los detalles esenciales sobre el índice de calidad del aire, el pinout del sensor MQ-135 y cómo medir la contaminación del aire utilizando el sensor MQ-135.
Después de este tutorial, serás capaz de desarrollar el sistema de monitorización y alerta de la contaminación del aire utilizando la placa Arduino Uno con un sensor MQ-135.
Componentes de hardware
Arduino Uno Rev3 | x1 | Amazon |
Arduino Mega (opcional) | x1 | Amazon |
Sensor de calidad del aire MQ-135 | x1 | Amazon |
Pantalla LCD 16 x 2 | x1 | Amazon |
LED | x3 | Amazon |
Zumbador | x1 | Amazon |
Tablero de pruebas | x1 | Amazon |
Cables de puente | x15 | Amazon |
Potenciómetro de 10K | x1 | Amazon |
Cable USB tipo A/B | x1 | Amazon |
Software
Arduino IDE | Arduino IDE |
Makerguides.com participa en el Programa de Asociados de Amazon Services LLC, un programa de publicidad de afiliados diseñado para proporcionar un medio para que los sitios ganen honorarios de publicidad mediante la publicidad y los enlaces a productos en Amazon.com.
¿Qué es la contaminación atmosférica?
La contaminación atmosférica es la presencia en la atmósfera de cantidades excesivas de sustancias sólidas o gaseosas indeseables e inseguras, como el monóxido de carbono, el plomo, el óxido de nitrógeno, el ozono, las partículas, el dióxido de azufre, etc.
Causa y efecto de la contaminación atmosférica
La contaminación atmosférica se ha convertido en un problema cada vez más peligroso en los últimos años. Este factor está directamente relacionado con la salud humana.
El calentamiento global se ha convertido en una grave preocupación para muchos países; uno de los problemas a los que más se enfrenta es la contaminación atmosférica.
Otros efectos de la contaminación atmosférica son diversas enfermedades como el cáncer de pulmón, la cardiopatía isquémica, los ataques de asma, etc.
¿Qué es un sistema de vigilancia de la contaminación atmosférica?
El sistema de monitorización de la contaminación atmosférica es una instalación que permite medir los contaminantes del aire mediante sensores, procesarlos con microcontroladores y mostrar los resultados con diversas pantallas.
¿Cómo se puede controlar la contaminación atmosférica?
La calidad del aire es una medida de lo limpio o contaminado que está el aire. La contaminación del aire suele medirse como Índice de Calidad del Aire (ICA) en la unidad PPM.
Los sensores son los más adecuados para identificar puntos conflictivos en los bordes de las carreteras y cerca de fuentes puntuales. Este sensor obtiene datos que pueden ser monitorizados continuamente a través de diferentes pantallas.
Valores del Índice de Calidad del Aire (ICA) | Niveles de preocupación por la salud | Valores del Índice de Calidad del Aire (ICA) | Nombre cualitativo |
0 a 50 | Buena | 0 a 25 | Muy bajo |
51 a 100 | Moderado | 25 a 50 | Bajo |
101 a 150 | No es saludable para los grupos sensibles | 50 a 75 | Medio |
151 a 200 | Insalubre | De 75 a 100 | Alta |
201 a 300 | Muy poco saludable | >100 | Muy alto |
301 a 500 | Peligrosos |
Índice de calidad del aire: Fuente
¿Qué sensor puede detectar la contaminación del aire?
Hoy en día, el progreso de las piezas electrónicas y la disponibilidad de varios sensores como MQ-135, MQ-2, MQ-3, MQ-4, MQ-5, MQ-6, etc., para medir el contaminante del aire, se desarrollan diferentes sistemas para controlar el número de contaminantes del aire.
El MQ135 es uno de los sensores más populares para medir el AQI en PPM.
¿Qué es el sensor del MQ-135?
El MQ-135 es un sensor de gas que tiene una menor conductividad en el aire limpio. Es de bajo coste y adecuado para diferentes aplicaciones.
Este módulo funciona a 5V, tiene una resistencia de 33Ω±5% y consume unos 150mA.
Este sensor tiene cuatro pines de cuatro pines, de salida digital y analógica, que se utilizan para aproximar estos niveles de gases en la atmósfera.
Cuando estos gases superan un umbral límite en el aire, la clavija digital se eleva.
Este valor de umbral puede ajustarse mediante el potenciómetro incorporado.
Características del sensor MQ-135
- Amplio alcance de detección, respuesta rápida y alta sensibilidad
- Larga vida útil
- Tensión del calentador: 5,0V
- Contiene salida analógica y salida digital alta/baja
- La señal de salida TTL es un nivel bajo
- La tensión de funcionamiento es de +5V
- Detección/Medición de NH3, NOx, alcohol, benceno, humo, CO2, etc.
- Rango de detección: 10 - 300 ppm NH3, 10 - 1000 ppm Benceno, 10 - 300 Alcohol
Si desea obtener más detalles sobre el sensor MQ-135, consulte la hoja de datos del MQ-135 y el pdf del esquema del MQ-135.
Mecanismo de trabajo
Ahora, entendamos el mecanismo de funcionamiento del sensor de gas del MQ-135.
El sensor de gas MQ-135 está compuesto por dióxido de estaño (SnO2). Cuando existe un gas contaminante objetivo, la conductividad del sensor aumenta junto con la concentración de gas.
Los usuarios pueden convertir el cambio de conductividad para que se corresponda con la señal de salida de la concentración de gas a través de un sencillo circuito.
El sensor de gas MQ-135 tiene una alta sensibilidad al NH3, S2, vapor de la serie C6H6 y puede controlar el humo y otros gases tóxicos. Puede detectar tipos de gases tóxicos.
Pinout de MQ135
El módulo sensor MQ-135 tiene cuatro pines, siendo la parte más importante un potenciómetro ajustable.
Número de pin | Nombre de la clavija | Detalles |
1 | Clavija VCC | El Pin requiere 5V para alimentar el módulo. |
2 | Clavija de tierra | Para conectar el módulo a la tierra común del sistema |
3 | Pin de salida digital | Este pin ajusta el valor del umbral mediante un potenciómetro. |
4 | Pin de salida analógica | La clavija de tensión analógica se basa en la concentración del gas. |
¿Se puede medir la calidad del aire con un dispositivo Arduino?
Arduino Uno consta de 14 pines de entrada/salida (E/S) digitales y 6 pines de entrada analógica, que cumplen los requisitos del sistema de monitorización AQI.
Este sistema puede ser ampliado por varios módulos compatibles con Arduino, como el escudo de Ethernet, el escudo de GSM/GPRS, el escudo del registrador de GPS, el escudo de RTC, y la placa incorporada con VCC, tierra, etc.
Ahora que ya sabes un poco sobre el sensor MQ-135, vamos a avanzar y aprender a interconectar el MQ-135 con Arduino.
Cableado del sensor MQ-135 con Arduino UNO
El diagrama de este circuito se explica por sí mismo. La mejor manera de interconectar este circuito es empezar con una placa Arduino Uno y LCD con la protoboard.
Paso 1: En primer lugar, coloque un LCD de 16×2 en la protoboard, como se muestra en la figura.
Ahora, conecta A a +5V con una resistencia de 220 ohmios y K a tierra.
Para variar el contraste de un LCD 16×2, conecte el VO al pin central del potenciómetro y VDD a +5V, VSS y RW a tierra.
Además, proporcione +5V y tierra al potenciómetro como se muestra en la figura.
El resumen de las conexiones se menciona en la siguiente tabla.
Arduino Uno PIN | LCD 16×2 Pin |
Pin digital 2 | RS |
Clavija digital 3 | ES |
Clavija digital 4 | D4 |
Clavija digital 5 | D5 |
Pin digital 6 | D6 |
Pin digital 7 | D7 |
Paso 2: El módulo MQ-135 se conecta al pin A0 de un Arduino Uno y conecta GND a tierra, proporcionando +5V a VCC.
Paso 3: Conecte el ánodo (+) del LED verde al pin digital 8 de Arduino; el LED azul al pin digital 9 de Arduino y el LED rojo al pin digital 10 de Arduino y todos los LEDs al cátodo (-) de tierra con una resistencia de 220 ohmios.
Paso 4: Conecta el terminal positivo del zumbador al pin digital 11 de Arduino y el terminal negativo a la tierra.
Código Arduino para el control de la contaminación atmosférica
El siguiente código permite medir el contaminante del aire en una unidad PPM utilizando el sensor MQ-135.
Puedes ver los resultados en un monitor de serie y en una pantalla LCD de 16×2.
// Include library for LCD and define pins #include "LiquidCrystal.h" const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); // Define pins and variable for input sensor and output led and buzzer const int mq135_aqi_sensor = A0; const int green_led = 8; const int blue_led = 9; const int red_led = 10; const int buzzer = 11; // Set threshold for AQI int aqi_ppm = 0; void setup() { // Set direction of input-output pins pinMode (mq135_aqi_sensor, INPUT); pinMode (green_led, OUTPUT); pinMode (blue_led, OUTPUT); pinMode (red_led, OUTPUT); pinMode (buzzer, OUTPUT); digitalWrite(green_led, LOW); digitalWrite(blue_led, LOW); digitalWrite(red_led, LOW); digitalWrite(buzzer, LOW); // Initiate serial and lcd communication Serial.begin (9600); lcd.clear(); lcd.begin (16, 2); Serial.println("AQI Alert System"); lcd.setCursor(0, 0); lcd.print("AQI Alert System"); delay(1000); } void loop() { aqi_ppm = analogRead(mq135_aqi_sensor); Serial.print("Air Quality: "); Serial.println(aqi_ppm); lcd.setCursor(0, 0); lcd.print("Air Quality: "); lcd.print(aqi_ppm); if ((aqi_ppm >= 0) && (aqi_ppm <= 50)) { lcd.setCursor(0, 1); lcd.print("AQI Good"); Serial.println("AQI Good"); digitalWrite(green_led, HIGH); digitalWrite(blue_led, LOW); digitalWrite(red_led, LOW); digitalWrite(buzzer, LOW); } else if ((aqi_ppm >= 51) && (aqi_ppm <= 100)) { lcd.setCursor(0, 1); lcd.print("AQI Moderate"); Serial.println("AQI Moderate"); tone(green_led, 1000, 200); digitalWrite(blue_led, HIGH); digitalWrite(red_led, LOW); digitalWrite(buzzer, LOW); } else if ((aqi_ppm >= 101) && (aqi_ppm <= 200)) { lcd.setCursor(0, 1); lcd.print("AQI Unhealthy"); Serial.println("AQI Unhealthy"); digitalWrite(green_led, LOW); digitalWrite(blue_led, HIGH); digitalWrite(red_led, LOW); digitalWrite(buzzer, LOW); } else if ((aqi_ppm >= 201) && (aqi_ppm <= 300)) { lcd.setCursor(0, 1); lcd.print("AQI V. Unhealthy"); Serial.println("AQI V. Unhealthy"); digitalWrite(green_led, LOW); tone(blue_led, 1000, 200); digitalWrite(red_led, HIGH); digitalWrite(buzzer, LOW); } else if (aqi_ppm >= 301) { lcd.setCursor(0, 1); lcd.print("AQI Hazardous"); Serial.println("AQI Hazardous"); digitalWrite(green_led, LOW); digitalWrite(blue_led, LOW); digitalWrite(red_led, HIGH); digitalWrite(buzzer, HIGH); } delay (700); }
Cómo funciona el código
He utilizado un IDE de Arduino para programar una placa Arduino Uno.
Paso 1: En primer lugar, he incluido el archivo de cabecera necesario para 16×2 LCD,
#include "LiquidCrystal.h>" // Header file for LCD
Paso 2: Definir las variables para los diferentes pines utilizados en la placa Arduino para LCD, Buzzer, LED, y MQ-135. También, definir la variable para el valor analógico.
const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; // Pines de LCD a Arduino LiquidCrystal lcd(rs, en, d4, d5, d6, d7); // Función LiquidCrystal const int mq135_aqi_sensor = A0; // Conectar el sensor MQ-135 al pin A0 de Arduino const int green_led = 8; // Conectar el LED verde al pin digital 8 de Arduino const int blue_led = 9; // Conectar el LED azul al pin digital 9 de Arduino const int red_led = 10; // Conectar el LED rojo al pin digital 10 de Arduino const int buzzer = 11; // Conectar el buzzer al pin digital 11 de Arduino int aqi_ppm = 0; // Inicializar la variable para recuperar el valor analógico
Paso 3: En la función void setup(), he inicializado el Buzzer, el LED como dispositivo de salida, y el MQ-135 como dispositivo de entrada a Arduino Uno.
lcd.begin(); función inicializar LCD de 16×2, antes de inicializar la LCD de 16×2 hay que borrar.
Usando la función lcd.clear();. Además, establezca la tasa de baudios a una velocidad de 9600 usando la función Serial.begin();.
Paso 4: Después de la inicialización, la pantalla LCD de 16×2 establece la posición de inicio del cursor.
lcd.setCursor(0, 0);
El siguiente mensaje se imprimirá en el terminal de serie y en la pantalla LCD de 16×2.
Serial.println("Sistema de alerta AQI");
lcd.print("Sistema de alerta AQI");
Paso 5: En la función void loop(), inicializar la variable para captar el valor analógico, utilizando la función analogRead(); . E imprimir en la terminal serial de mensajes y en el LCD de 16×2.
aqi_ppm = analogRead(mq135_aqi_sensor); Serial.print("Calidad del aire: "); Serial.println(aqi_ppm); lcd.setCursor(0, 0); lcd.print("Calidad del aire: "); lcd.print(aqi_ppm);
Paso 6: Si el valor de Suppose Analog está entre 0 y 50, el LED verde parpadeará. Imprime en el terminal serial de mensajes. Y en el LCD se imprimirá un mensaje en la segunda fila y primera posición.
lcd.setCursor(0, 1); lcd.print("AQI Good"); Serial.println("AQI Good"); digitalWrite(green_led, HIGH);
Paso 7: Al igual que, dependiendo del valor de AQI, el LED parpadeará y se imprimirá en el terminal de mensajes en serie y en la pantalla LCD de 16×2 siguiendo la tabla.
Valor AQI | LED verde | LED azul | LED rojo | Zumbador | Terminal de serie yMensaje LCD 16×2 |
0 - 50 | EN | OFF | OFF | OFF | AQI Bueno |
51 - 100 | BLINK | EN | OFF | OFF | AQI Moderado |
101 - 200 | OFF | EN | OFF | OFF | AQI Insalubre |
201 - 300 | OFF | BLINK | EN | OFF | AQI Muy Insalubre |
> 301 | OFF | OFF | EN | EN | AQI Peligroso |
Salida del LCD:
Salida de monitor en serie:
Conclusión
Después de este tutorial, puedes desarrollar tu propio sistema de monitorización y alerta del aire utilizando el sensor MQ-135 y la placa Arduino Uno.
Espero que hayas encontrado este tutorial informativo. Si lo has hecho, ¡compártelo con un amigo al que le guste la electrónica y hacer cosas!
Me encantaría saber qué proyecto tienes pensado construir o has hecho ya con el Arduino.
Si tienes alguna pregunta o sugerencia o crees que faltan cosas en este tutorial, deja un comentario abajo.
Hiren is a professional Embedded Engineer with a Master’s Degree
in Electronics and Communication Engineering. He is proficient in C and
C++ and enjoys building DIY projects on Arduino, ESP32, PIC32, STM32 & Raspberry PI boards.
Shelke Snehal
Saturday 9th of March 2024
Thank you so much
Jakub
Saturday 19th of August 2023
This code is terrible! Can't do "copy paste"!
Stefan
Saturday 19th of August 2023
hmm, works for me. I clicked "copy to clipboard" in the right upper corner and the copy worked. What Browser are you using? I am on Chrome.
Chackochan Sebastian
Thursday 1st of June 2023
Is there a need to calibrate the mq135 sensor for this project? If yes, can you tell me how?
성인망가
Thursday 26th of January 2023
Hello there! I simply wish to give you a huge thumbs up for the great info you have got right here on this post "성인망가"Does running a blog like this take a large attention-grabbing discussion is worth comment. It’s difficult to find knowledgeable people using the same blog platform.