Medición de la Calidad del Aire con OpenSensors: Guía para Arduino y Python
Aprenda a monitorizar la calidad del aire interior utilizando un Arduino, un sensor de partículas Shinyei PPD‑42 y el broker MQTT de OpenSensors. Este tutorial paso a paso muestra cómo recopilar datos de partículas en tiempo real y publicarlos de forma segura en un flujo de datos público.
Introducción
Para este proyecto buscábamos una forma sencilla pero potente de evaluar la calidad del aire en nuestro lugar de trabajo. Elegimos el sensor Shinyei PPD‑42 por su asequibilidad y facilidad de uso, y lo combinamos con un Arduino UNO y un host basado en Linux (por ejemplo, Raspberry Pi). El sensor transmite la concentración de partículas pequeñas que pueden suponer riesgos para la salud, y publicamos esos datos continuamente en el broker de mensajería de OpenSensors.
Materiales necesarios
- Sensor Shinyei PPD‑42
- Arduino UNO
- Computadora Linux o Raspberry Pi
Esta guía sigue el proyecto DustDuino, que ya integra el PPD‑42 con Arduino y Wi‑Fi. Adaptamos su diagrama de conexiones y código para funcionar con nuestra configuración de OpenSensors.
Primero, conecte el sensor al Arduino como se describe en el paso 2 de las instrucciones de DustDuino. Luego descargue el sketch DustDuinoSerial.ino del repositorio de GitHub, ábralo en el IDE de Arduino y cárguelo en el UNO.
Verifique que el sensor está enviando datos abriendo el Monitor Serie del IDE de Arduino.
A continuación, conectaremos la salida serie del Arduino al broker de OpenSensors utilizando un script ligero de Python que aprovecha la biblioteca cliente Mosquitto.
Hola Mundo Python
Para confirmar que Python está listo en su máquina, cree un archivo llamado hi.py con el siguiente contenido:
print("Hola Mundo")
Ejecute desde una terminal:
python hi.py
Debería ver Hola Mundo impreso en la consola.
Hola OpenSensors
Instale el cliente Python de Mosquitto si aún no lo ha hecho:
sudo apt-get install python-pip
sudo pip install paho-mqtt
Pruebe la publicación en OpenSensors con este script mínimo (reemplace Louis y la contraseña con sus credenciales):
import paho.mqtt.client as mqtt
mqttc = mqtt.Client(client_id="939")
mqttc.username_pw_set("Louis", password="AbcDEFgH")
mqttc.connect("mqtt.opensensors.io")
mqttc.publish("/users/Louis/test2", payload="¡Hola OpenSensors!", qos=0, retain=False)
mqttc.disconnect()
Tras una ejecución exitosa, verá el mensaje aparecer en la consola de OpenSensors.
Para conectar con el puerto serie del Arduino, identifique el dispositivo con:
dmesg | grep tty
La salida típica se parece a:
[ 0.000000] console [tty0] enabled
[ 3522.192687] cdc_acm 7-1:1.0: ttyACM0: USB ACM device
Aquí /dev/ttyACM0 es el puerto serie a utilizar.
Lea datos serie con Python:
import serial
ser = serial.Serial('/dev/ttyACM0')
while True:
print(ser.readline())
Integrando la Salida del Sensor con MQTT
Combine el lector serie y el publicador MQTT en un solo script. El siguiente ejemplo publica cada línea de datos del sensor en el tema /users/Louis/ODI/airquality cada segundo:
import serial
import paho.mqtt.client as mqtt
import time
mqttc = mqtt.Client(client_id="939")
mqttc.username_pw_set("Louis", password="AbcDEFgH")
mqttc.connect("mqtt.opensensors.io")
ser = serial.Serial('/dev/ttyACM0') # ajuste si su puerto difiere
while True:
message = ser.readline()
print(message)
mqttc.publish("/users/Louis/ODI/airquality", payload=message, qos=0, retain=False)
time.sleep(1)
Para un procesamiento posterior más fácil, considere formatear la salida del Arduino como JSON antes de publicar.
Explore el flujo de datos resultante en OpenSensors visitando el tema que creó aquí.
Ejemplo de Código Completo
import serial
import paho.mqtt.client as mqtt
import time
mqttc = mqtt.Client(client_id="939")
mqttc.username_pw_set("Louis", password="AbcDEFgH")
mqttc.connect("opensensors.io")
ser = serial.Serial('/dev/ttyACM0') # abre el primer puerto serie
while True:
message = ser.readline()
print(message)
mqttc.publish("/users/Louis/ODI/airquality", payload=message, qos=0, retain=False)
time.sleep(1);
Fuente: Cómo medir la calidad del aire en OpenSensors
Proceso de manufactura
- Sensor de Calidad del Aire Solar con Helium: Guía de Diseño y Despliegue
- Construya un mando a distancia IR universal con Arduino: Guía paso a paso
- Uso Fácil de Termistor: Guía Paso a Paso con Arduino
- Estrategias probadas para aumentar la eficiencia de los compresores de aire a bordo
- Medición del Espesor de la Máscara de Soldadura: Guía Práctica
- Cómo Funcionan los Secadores de Aire: Manteniendo el Aire Comprimido Limpio y Eficiente
- Guía completa para eliminar contaminantes del aire comprimido
- Pulseras de silicona: muestreadores pasivos asequibles para monitorización precisa de calidad del aire
- Sensor avanzado de NO₂ basado en carbono mejora monitorización de calidad del aire interior
- Los riesgos ocultos para la salud de la mala calidad del aire interior
- Aprovechando IoT para Construir Sistemas Avanzados de Monitoreo de Calidad de Aire Interior