Sistema inteligente de monitorización de calidad del aire interior y residuos
Componentes y suministros
| Raspberry Pi 3 Modelo B | 1 |
| Arduino UNO | 1 |
| NodeMCU ESP8266 Breakout Board | 1 |
| Sensor DHT11 Temperatura y Humedad (4 pines) | 1 |
| Seeed Grove - Sensor de Gas (MQ2) | 1 |
| Sensor de gas MQ-7 CO (genérico) | 1 |
| Sensor ultrasónico HC-SR04 (genérico) | 1 |
| Fuente de alimentación Raspberry Pi | 1 |
| Cable HDMI | 1 |
| Cable USB-A a B | 1 |
| Cables jumper (genéricos) | 1 |
| Batería 5V (genérica) | 1 |
Aplicaciones y servicios en línea
- IOTA Tangle
- Node.js
- Raspberry Pi Raspbian
- Arduino IDE
- MQTT
Sobre este proyecto
1. Introducción
Automatización de edificios es el control automático centralizado de calefacción, ventilación, aire acondicionado, iluminación y otros sistemas de un edificio a través de un sistema de gestión de edificios (BMS/BAS). Los objetivos son: mayor confort de ocupantes, operación eficiente de sistemas, reducción de consumo energético y costes operativos, y mejora del ciclo de vida de servicios.
IOTA es una tecnología de contabilidad distribuida de código abierto, cuyo objetivo es intercambiar información y valor de forma segura en el Internet de las Cosas. Una de sus principales innovaciones es que, en lugar de Blockchain tradicional, usa su propia arquitectura (Tangle) basada en un concepto matemático llamado Grafo Acíclico Dirigido (DAG). Esta arquitectura permite que no haya comisiones, latencia de red baja y mejores perspectivas de escalabilidad. IOTA está en desarrollo y se espera que para 2019 la tecnología esté lista para adopción a gran escala.
Especificaciones de Raspberry Pi 3 B:
- CPU: Quad-core 64-bit ARM Cortex A53 a 1.2 GHz
- GPU: VideoCore IV multimedia a 400MHz
- Memoria: 1GB LPDDR2-900 SDRAM
- Puertos USB: 4
- Salidas de video: HDMI, video compuesto (PAL/NTSC) via jack 3.5mm
- Red: Ethernet 10/100 Mbps y 802.11n Wireless LAN
Características de Arduino UNO:
- Microcontrolador: ATmega328
- Voltaje operación: 5V
- Voltaje entrada (recomendado): 7-12V
- Pines I/O digitales: 14 (6 con PWM)
- Pines entrada analógica: 6
- Corriente DC por pin I/O: 40 mA
Características de NodeMCU:
- Módulo WiFi programable
- Hardware IO tipo Arduino (software defined)
- Programable con Arduino IDE
- USB-TTL incluido, plug & play
- 10 GPIOs D0-D10, PWM, IIC, SPI, 1-Wire, ADC A0
Este proyecto se divide en tres versiones. Para mejor comprensión lo dividimos en capítulos:
- 1. Introducción
- 2. Instalación de software
- 3. Sistema de monitorización calidad aire interior v1
- 4. Sistema de monitorización calidad aire interior v2
- 5. Sistema de monitorización de residuos
- 6. Conclusiones
2. Instalación de software
a) Instalar Raspbian en Raspberry Pi 3 B (usar NOOBS: https://www.raspberrypi.org/downloads/)
b) Instalar Node.JS:
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt-get install -y nodejs
c) Descargar y compilar librería BCM2835 en Raspberry Pi (para sensor DHT11):
$ wget https://www.airspayce.com/mikem/bcm2835/bcm2835-1.56.tar.gz
$ tar zxvf bcm2835-1.56.tar.gz
$ cd bcm2835-1.56
$ ./configure
$ make
$ sudo make check
$ sudo make install
d) Descargar e instalar proyecto indoor-air-quality-iota en Raspberry Pi:
$ cd ~
$ git clone https://github.com/guillengap/indoor-air-quality-and-garbage-monitoring-system.git
$ cd indoor-air-quality-and-garbage-monitoring-system
$ npm install
e) Instalar serialport: $ npm install serialport
f) Descargar e instalar Arduino IDE: https://www.arduino.cc/en/Main/Software
3. Sistema de monitorización calidad aire interior v1
Los datos del sensor DHT11 se leen y publican en el Tangle usando MAM.
¿Cómo funciona?
El proyecto tiene 3 archivos JavaScript:
- sensor.js: Lee y muestra datos DHT11 (temperatura y humedad)
- mam_sensor.js: Lee datos DHT11 y los publica en IOTA Tangle usando MAM
- mam_receive.js: Extrae datos almacenados del Tangle usando MAM y los muestra
El endpoint de nodo completo y clave lateral están hardcoded en los archivos JS. Para detener un script: CTRL+Z.
Conectar Arduino UNO con sensor DHT11. Ejecutar node sensor.js para verificar lectura de temperatura y humedad. Si todo bien, ejecutar node mam_sensor.js para almacenar datos en el Tangle. Nodo usado: https://potato.iotasalad.org:14265.
Datos enviados: Ciudad: MEXICO, Edificio: 65, Fecha/Hora UTC, Datos: Temperatura (°C/°F) y Humedad Relativa (%).
Para recibir datos: node mam_receive.js your_root
4. Sistema de monitorización calidad aire interior v2
Datos de sensores DHT11, MQ-2 y MQ-7 se leen y publican en el Tangle usando MAM.
El proyecto tiene 5 archivos:
- sensorArduino.ino: Captura datos de tres sensores: DHT11, MQ-2 (LPG), MQ-7 (CO)
- listportsArduino.ino: Muestra puertos disponibles de Arduino UNO
- sensorArduino.js: Lee y muestra datos de los tres sensores
- mam_sensorArduino.js: Lee y publica datos en Tangle usando MAM
- mam_receiveArduino.js: Extrae datos almacenados del Tangle y los muestra
Conectar Arduino UNO con sensores DHT11, MQ-2 y MQ-7. Instalar librerías en Arduino IDE. Subir sketch sensorArduino.ino. Verificar puerto con node listportsArduino.js. Ejecutar node mam_sensorArduino.js para almacenar en Tangle.
Datos enviados: Ciudad: NY, Edificio: 13, Fecha/Hora UTC, Datos: Gas LPG (ppm), Gas CO (ppm), Temperatura (°C), Humedad Relativa (%).
Recibir datos: node mam_receiveArduino.js your_root
5. Sistema de monitorización de residuos
Envía datos del sensor SRF05 usando NodeMCU y MQTT a IOTA Tangle usando MAM.
El proyecto tiene 3 archivos:
- trashcan.ino: Calcula % de basura en contenedor y envía a Raspberry Pi 3B via MQTT
- nodemcu_mqtt_mam.js: Lee datos SRF05 y publica en Tangle usando MAM
- nodemcu_mam_receive.js: Extrae datos del Tangle y los muestra
Conectar NodeMCU con sensor ultrasónico SRF05. Instalar paquetes esp8266 en Arduino IDE. Añadir librería PubSubClient para MQTT. Instalar Mosquitto (MQTT broker) en Raspberry Pi. Subir trashcan.ino a NodeMCU configurando WiFi, IP Raspberry Pi y longitud del contenedor. Ejecutar nodemcu_mqtt_mam.js para almacenar en Tangle.
Datos enviados: Ciudad: BERLIN, Edificio: 7, Fecha/Hora UTC, Datos: porcentaje de contenedor.
6. Conclusiones
Sistema v1: Funcionó satisfactoriamente monitorizando calidad de aire en edificio simulado en Ciudad de México. Prueba básica con DHT11, Raspberry Pi 3B, JavaScript y protocolo IOTA.
Sistema v2: Usa DHT11, MQ-2 (LPG) y MQ-7 (CO). Simula captura en edificio en Nueva York, envía datos vía Arduino UNO y Raspberry Pi a IOTA Tangle usando MAM. Forma práctica y rápida de añadir más sensores. Útil en edificios inteligentes e industrias con gas LP y monóxido de carbono.
Sistema residuos: Controla depósito de basura en edificio inteligente en Berlín. La acumulación genera malos olores; ahora se puede saber cuánto tiempo lleva un contenedor con residuos y su porcentaje de llenado.
Código
Archivos JavaScript principales disponibles en el repositorio del proyecto:
- sensor.js
- mam_sensor.js
- mam_receive.js
- mam_sensorArduino.js
- mam_receiveArduino.js
El código completo incluye lectura de sensores, publicación en IOTA Tangle via MAM (modo restricted con sidekey), y recuperación de datos.
Esquemáticos
Diagramas esquemáticos de conexiones para las tres versiones del proyecto disponibles en el repositorio.
Proceso de manufactura
- Construya una estación meteorológica y de calidad del aire con Raspberry Pi, InfluxDB y Grafana
- Monitorizar eficientemente temperaturas de salas con Raspberry Pi y Nagios
- Construya un sensor de temperatura remoto con Raspberry Pi y Python – Guía paso a paso
- Centro de Energía Doméstica: Monitorización de paneles solares fotovoltaicos, térmicos y temperaturas con Raspberry Pi y Moteino
- Construya un Sensor de Movimiento Infrarrojo DIY para Raspberry Pi – Guía Paso a Paso
- Sistema de Registro y Alertas con Fotocélula en Raspberry Pi – Sensor de Luz de Bajo Consumo con Python
- Construya un Sistema de Monitorización de Temperatura y Luz Multi‑Sensor con Raspberry Pi y DS18B20
- Sensor de ocupación para baño con Raspberry Pi: alertas por voz y SMS mediante Twilio
- Control de sensores y actuadores con Raspberry Pi: acelerómetro, servo y streaming de datos
- Construye un sistema aeropónico automatizado con Raspberry Pi y sensor de humedad
- Sistema de Seguridad Doméstico con Raspberry Pi: Detección de Movimiento PIR y Alertas por Email con Cámara