Estación Meteorológica con Protocolo MQTT
Sistema IoT para Monitorización Ambiental en Tiempo Real con Protocolos MQTT

Ejemplo del proyecto
En la actualidad, la monitorización ambiental en tiempo real se ha convertido en una
necesidad crítica en muchos campos, desde la gestión de espacios domésticos hasta la
supervisión de procesos industriales. El auge del Internet de las Cosas (IoT) ha
facilitado la adopción de soluciones para medir variables como temperatura, humedad y
presión atmosférica, permitiendo una mayor precisión y accesibilidad en la toma de
decisiones.
Entre las tecnologías disponibles para este proyecto destacan los sensores
multifuncionales como el BME680, que combina diversas capacidades en un solo
módulo compacto y eficiente. Este módulo, cuando se integra con microcontroladores
como el ESP32-C3 y protocolos de comunicación como MQTT, ofrecen un enfoque
robusto para la recolección y transmisión de datos. El microcontrolador actúa como
cliente MQTT y transmite los datos al bróker Mosquitto, instalado en un servidor local.

Diagrama explicativo del trabajo
Los materiales necesarios:
- ESP32
- Sensor BME680
- Hub I2C

Lo siguiente será mostrar el esquema de montaje, teniendo en cuenta que usaremos los pines 4 y 5 del microcontrolador.
La comunicación del sensor BME680 con el ESP32 se realiza por protocolo I2C y alimentando el módulo Vcc a 3V3 y GND a masa.

Esquema del cableado
Ahora le comentaremos el código implementado con Arduino. Usamos los pines 4 y 5. Usamos la librería PubSub.h, declaramos las variables a usar. Configuramos la IP del servidor como salida y el echo como entrada. El algoritmo constará de un bucle que realizará un paneo gracias al motor y el sensor pegado a el nos indicará si hay un objeto cerca y cómo de cerca. Para esto utilizaremos una función llamada calculateDistance.
El código completo que usaremos en Arduino es el siguiente:
Este código controla un servo y un sensor ultrasónico para medir distancias. El servo se mueve de 15° a 165° y luego regresa, mientras en cada posición se mide la distancia a un objeto. La distancia se calcula usando la duración del eco del sensor ultrasónico y se imprime junto con el ángulo del servo en el monitor serie. La función CalculateDistance() gestiona el envío del pulso ultrasónico y calcula la distancia basándose en el tiempo de retorno del eco.
Para completar el proyecto, descargaremos el programa Processing de forma gratuita: https://processing.org/download
Una vez descargado será hora de crear la interfaz que nos dirá dónde está el objeto identificado y a cuanta distancia. Para ello usaremos el siguiente código, no te olvides de modificar en la línea 11 del código el puerto utilizado por el que estés usando tú. Lo puedes saber mirando en el programa Arduino, en Tools, Port: COM.
Antes de darle a Run al código de Processing, cierra el programa de Arduino, sino el puerto COM estará ocupado.
El proyecto acabado quedará de está manera, adjuntamos video con el resultado.

Esperamos que os haya servido de ayuda para completar vuestro proyecto o al menos para aprender algo que desconocíais.