- Componentes requeridos:
- Diagrama de circuito y explicación:
- Explicación de trabajo:
- Explicación del código:
- "; página web + =" La calidad del aire es "; página web + = calidad_aire; página web + =" PPM "; página web + ="
";
El siguiente código llamará a una función llamada sendData y enviará las cadenas de datos y mensajes a la página web para mostrar.
sendData (cipSend, 1000, DEBUG); sendData (página web, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ r \ n";
El siguiente código imprimirá los datos en la pantalla LCD. Hemos aplicado varias condiciones para verificar la calidad del aire, y la pantalla LCD imprimirá los mensajes de acuerdo con las condiciones y el zumbador también emitirá un pitido si la contaminación supera los 1000 PPM.
lcd.setCursor (0, 0); lcd.print ("La calidad del aire es"); lcd.print (calidad_aire); lcd.print ("PPM"); lcd.setCursor (0,1); if (air_quality <= 1000) {lcd.print ("Aire fresco"); digitalWrite (8, BAJO);
Finalmente, la siguiente función enviará y mostrará los datos en la página web. Los datos que almacenamos en la cadena llamada 'página web' se guardarán en la cadena llamada 'comando' . El ESP luego leerá el carácter uno por uno del 'comando' y lo imprimirá en la página web.
String sendData (comando de cadena, tiempo de espera de int constante, depuración booleana) {Respuesta de cadena = ""; esp8266.print (comando); // envía el carácter leído al esp8266 long int time = millis (); while ((tiempo + tiempo de espera)> millis ()) {while (esp8266.available ()) {// El esp tiene datos, así que muestra su salida en la ventana serial char c = esp8266.read (); // lee el siguiente carácter. respuesta + = c; }} if (depurar) {Serial.print (respuesta); } respuesta de retorno; }
- Prueba y salida del proyecto:
En este proyecto vamos a crear un Sistema de Monitoreo de la Contaminación del Aire basado en IoT en el cual monitorearemos la Calidad del Aire a través de un servidor web usando Internet y activaremos una alarma cuando la calidad del aire baje más allá de un cierto nivel, es decir, cuando haya suficiente cantidad. de gases nocivos están presentes en el aire como CO2, humo, alcohol, benceno y NH3. Mostrará la calidad del aire en PPM en la pantalla LCD y también en la página web para que podamos monitorearla muy fácilmente.
Anteriormente, hemos construido el detector de GLP con el sensor MQ6 y el detector de humo con el sensor MQ2, pero esta vez hemos utilizado el sensor MQ135 como sensor de calidad del aire, que es la mejor opción para monitorear la calidad del aire, ya que puede detectar la mayoría de los gases nocivos y puede medir su cantidad. precisamente. En este proyecto de IOT, puede monitorear el nivel de contaminación desde cualquier lugar usando su computadora o dispositivo móvil. Podemos instalar este sistema en cualquier lugar y también podemos activar algún dispositivo cuando la contaminación supera algún nivel, como podemos encender el ventilador de escape o podemos enviar un mensaje de texto / correo de alerta al usuario.
Componentes requeridos:
- Sensor de gas MQ135
- Arduino Uno
- Módulo wifi ESP8266
- LCD 16X2
- Tablero de circuitos
- Potenciómetro 10K
- Resistencias de 1K ohmios
- Resistencia de 220 ohmios
- Zumbador
Puede comprar todos los componentes anteriores desde aquí.
Diagrama de circuito y explicación:
Primero que nada conectaremos el ESP8266 con el Arduino. ESP8266 funciona con 3.3V y si le da 5V del Arduino, entonces no funcionará correctamente y puede dañarse. Conecte el VCC y el CH_PD al pin 3.3V de Arduino. El pin RX de ESP8266 funciona en 3.3V y no se comunicará con el Arduino cuando lo conectemos directamente al Arduino. Por lo tanto, tendremos que hacer un divisor de voltaje que convertirá los 5V en 3.3V. Esto se puede hacer conectando tres resistencias en serie como hicimos en el circuito. Conecte el pin TX del ESP8266 al pin 10 del Arduino y el pin RX del esp8266 al pin 9 de Arduino a través de las resistencias.
El módulo Wi-Fi ESP8266 le da a sus proyectos acceso a Wi-Fi o Internet. Es un dispositivo muy barato y hace que tus proyectos sean muy potentes. Puede comunicarse con cualquier microcontrolador y es el dispositivo más líder en la plataforma IOT. Obtenga más información sobre el uso de ESP8266 con Arduino aquí.
Luego conectaremos el sensor MQ135 con el Arduino. Conecte el VCC y el pin de tierra del sensor a los 5V y tierra del Arduino y el pin analógico del sensor a la A0 del Arduino.
Conecte un zumbador al pin 8 del Arduino que comenzará a pitar cuando la condición se vuelva verdadera.
Por último, conectaremos el LCD con el Arduino. Las conexiones de la pantalla LCD son las siguientes
- Conecte el pin 1 (VEE) al suelo.
- Conecte el pin 2 (VDD o VCC) al 5V.
- Conecte el pin 3 (V0) al pin medio del potenciómetro de 10K y conecte los otros dos extremos del potenciómetro al VCC y al GND. El potenciómetro se utiliza para controlar el contraste de la pantalla LCD. El potenciómetro de valores distintos a 10K también funcionará.
- Conecte el pin 4 (RS) al pin 12 del Arduino.
- Conecte el pin 5 (lectura / escritura) a la tierra de Arduino. Este pin no se usa con frecuencia por lo que lo conectaremos a tierra.
- Conecte el pin 6 (E) al pin 11 del Arduino. Los pines RS y E son los pines de control que se utilizan para enviar datos y caracteres.
- Los siguientes cuatro pines son pines de datos que se utilizan para comunicarse con el Arduino.
Conecte el pin 11 (D4) al pin 5 de Arduino.
Conecte el pin 12 (D5) al pin 4 de Arduino.
Conecte el pin 13 (D6) al pin 3 de Arduino.
Conecte el pin 14 (D7) al pin 2 de Arduino.
- Conecte el pin 15 al VCC a través de la resistencia de 220 ohmios. La resistencia se utilizará para configurar el brillo de la luz de fondo. Los valores más altos harán que la luz de fondo sea mucho más oscura.
- Conecte el pin 16 a tierra.
Explicación de trabajo:
El sensor MQ135 puede detectar NH3, NOx, alcohol, benceno, humo, CO2 y algunos otros gases, por lo que es un sensor de gas perfecto para nuestro proyecto de monitoreo de la calidad del aire. Cuando lo conectemos a Arduino, detectará los gases y obtendremos el nivel de contaminación en PPM (partes por millón). El sensor de gas MQ135 da la salida en forma de niveles de voltaje y necesitamos convertirlo en PPM. Entonces, para convertir la salida en PPM, aquí hemos utilizado una biblioteca para el sensor MQ135, se explica en detalle en la sección "Explicación del código" a continuación.
El sensor nos estaba dando un valor de 90 cuando no había gas cerca de él y el nivel seguro de calidad del aire es 350 PPM y no debería exceder 1000 PPM. Cuando excede el límite de 1000 PPM, comienza a causar dolores de cabeza, somnolencia y aire estancado, viciado y congestionado, y si supera los 2000 PPM, puede causar un aumento de la frecuencia cardíaca y muchas otras enfermedades.
Cuando el valor sea inferior a 1000 PPM, la pantalla LCD y la página web mostrarán "Fresh Air". Siempre que el valor aumente 1000 PPM, el zumbador comenzará a sonar y la pantalla LCD y la página web mostrarán “Poor Air, Open Windows”. Si aumenta 2000, el zumbador seguirá sonando y la pantalla LCD y la página web mostrarán “¡Peligro! Muévase al aire libre ”.
Explicación del código:
Antes de comenzar la codificación de este proyecto, primero debemos calibrar el sensor de gas MQ135. Hay muchos cálculos involucrados en la conversión de la salida del sensor en valor PPM, hemos hecho este cálculo antes en nuestro proyecto anterior de detector de humo. Pero aquí estamos usando la biblioteca para MQ135, puede descargar e instalar esta biblioteca MQ135 desde aquí:
Con esta biblioteca, puede obtener directamente los valores de PPM, simplemente usando las dos líneas siguientes:
Sensor de gas MQ135 = MQ135 (A0); flotar calidad_aire = gasSensor.getPPM ();
Pero antes de eso, necesitamos calibrar el sensor MQ135, para calibrar el sensor, cargue el código que se indica a continuación y déjelo funcionar durante 12 a 24 horas y luego obtenga el valor RZERO .
#include "MQ135.h" void setup () {Serial.begin (9600); } bucle vacío () {MQ135 gasSensor = MQ135 (A0); // Conecte el sensor al pin A0 float rzero = gasSensor.getRZero (); Serial.println (rzero); retraso (1000); }
Después de obtener el valor RZERO . Ponga el valor RZERO en el archivo de biblioteca que descargó "MQ135.h": #define RZERO 494.63
Ahora podemos comenzar el código real para nuestro proyecto de monitoreo de la calidad del aire.
En el código, en primer lugar hemos definido las bibliotecas y las variables para el sensor de gas y la pantalla LCD. Al utilizar la biblioteca de serie de software, podemos convertir cualquier pin digital como pin TX y RX. En este código, hemos creado el Pin 9 como el pin RX y el pin 10 como el pin TX para el ESP8266. Luego hemos incluido la biblioteca para la pantalla LCD y hemos definido los pines para la misma. También hemos definido dos variables más: una para el pin analógico del sensor y otra para almacenar el valor de air_quality .
#incluir
Luego declararemos el pin 8 como el pin de salida donde hemos conectado el zumbador. El comando l cd.begin (16,2) iniciará la pantalla LCD para recibir datos y luego colocaremos el cursor en la primera línea e imprimiremos el 'circuitdigest' . Luego colocaremos el cursor en la segunda línea e imprimiremos 'Sensor Warming' .
pinMode (8, SALIDA); lcd.begin (16,2); lcd.setCursor (0,0); lcd.print ("resumen de circuitos"); lcd.setCursor (0,1); lcd.print ("Calentamiento del sensor"); retraso (1000);
Luego estableceremos la velocidad en baudios para la comunicación en serie. Los diferentes ESP tienen diferentes velocidades en baudios, así que escríbalo de acuerdo con la velocidad en baudios de su ESP. Luego enviaremos los comandos para configurar el ESP para que se comunique con el Arduino y muestre la dirección IP en el monitor serial.
Serial.begin (115200); esp8266.begin (115200); sendData ("AT + RST \ r \ n", 2000, DEBUG); sendData ("AT + CWMODE = 2 \ r \ n", 1000, DEBUG); sendData ("AT + CIFSR \ r \ n", 1000, DEBUG); sendData ("AT + CIPMUair_quality = 1 \ r \ n", 1000, DEBUG); sendData ("AT + CIPSERVER = 1,80 \ r \ n", 1000, DEBUG); pinMode (sensorPin, INPUT); lcd.clear ();
Para imprimir la salida en la página web en el navegador web, tendremos que utilizar la programación HTML. Entonces, hemos creado una cadena llamada página web y almacenamos la salida en ella. Estamos restando 48 de la salida porque la función read () devuelve el valor decimal ASCII y el primer número decimal que es 0 comienza en 48.
if (esp8266.available ()) {if (esp8266.find ("+ IPD,")) {retraso (1000); int connectionId = esp8266.read () - 48; String webpage = "
Sistema de monitoreo de contaminación del aire IOT
"; página web + =""; página web + =" La calidad del aire es "; página web + = calidad_aire; página web + =" PPM "; página web + ="
";
El siguiente código llamará a una función llamada sendData y enviará las cadenas de datos y mensajes a la página web para mostrar.
sendData (cipSend, 1000, DEBUG); sendData (página web, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ r \ n";
El siguiente código imprimirá los datos en la pantalla LCD. Hemos aplicado varias condiciones para verificar la calidad del aire, y la pantalla LCD imprimirá los mensajes de acuerdo con las condiciones y el zumbador también emitirá un pitido si la contaminación supera los 1000 PPM.
lcd.setCursor (0, 0); lcd.print ("La calidad del aire es"); lcd.print (calidad_aire); lcd.print ("PPM"); lcd.setCursor (0,1); if (air_quality <= 1000) {lcd.print ("Aire fresco"); digitalWrite (8, BAJO);
Finalmente, la siguiente función enviará y mostrará los datos en la página web. Los datos que almacenamos en la cadena llamada 'página web' se guardarán en la cadena llamada 'comando' . El ESP luego leerá el carácter uno por uno del 'comando' y lo imprimirá en la página web.
String sendData (comando de cadena, tiempo de espera de int constante, depuración booleana) {Respuesta de cadena = ""; esp8266.print (comando); // envía el carácter leído al esp8266 long int time = millis (); while ((tiempo + tiempo de espera)> millis ()) {while (esp8266.available ()) {// El esp tiene datos, así que muestra su salida en la ventana serial char c = esp8266.read (); // lee el siguiente carácter. respuesta + = c; }} if (depurar) {Serial.print (respuesta); } respuesta de retorno; }
Prueba y salida del proyecto:
Antes de cargar el código, asegúrese de estar conectado al Wi-Fi de su dispositivo ESP8266. Después de cargar, abra el monitor serial y mostrará la dirección IP como se muestra a continuación.
Escriba esta dirección IP en su navegador, le mostrará el resultado como se muestra a continuación. Tendrá que actualizar la página nuevamente si desea ver el valor actual de la calidad del aire en PPM.
Hemos configurado un servidor local para demostrar su funcionamiento, puede ver el video a continuación. Pero para monitorear la calidad del aire desde cualquier parte del mundo, debe reenviar el puerto 80 (utilizado para HTTP o Internet) a su dirección IP local o privada (192.168 *) de su dispositivo. Después del reenvío de puertos, todas las conexiones entrantes se reenviarán a esta dirección local y puede abrir la página web que se muestra arriba simplemente ingresando la dirección IP pública de su Internet desde cualquier lugar. Puede reenviar el puerto iniciando sesión en su enrutador (192.168.1.1) y busque la opción para configurar el reenvío de puertos.