☁️ ESP32 Cloud Gateway

Sistema de Monitorización y Control IoT en la Nube

📋 Descripción del Proyecto

Este proyecto propone el desarrollo de un sistema integral de IoT (Internet de las Cosas) basado en múltiples dispositivos ESP32 que se conectan a una plataforma cloud para monitorización en tiempo real y control remoto de diversos parámetros ambientales y dispositivos.

El sistema permitirá la recopilación de datos de sensores (temperatura, humedad, luminosidad) y el control de actuadores (luces, ventiladores, sistemas de riego) desde cualquier ubicación a través de una interfaz web accesible desde cualquier dispositivo conectado a internet.

🎯 Objetivos

Monitorización Ambiental

Recopilar datos de temperatura, humedad y luminosidad desde múltiples ubicaciones en tiempo real.

Control Remoto

Gestionar dispositivos (luces, ventiladores, sistemas de riego) desde cualquier lugar.

Escalabilidad

Arquitectura que permite agregar nuevos nodos ESP32 fácilmente sin modificar el sistema central.

Visualización de Datos

Dashboard web con gráficos, alertas y análisis histórico de los datos recopilados.

🔧 Funcionalidades Principales

1. Sensores y Monitorización

  • Temperatura: Medición precisa con sensores DHT22 o DS18B20
  • Humedad: Control de humedad relativa del aire
  • Luminosidad: Detección de niveles de luz con fotoresistencia o BH1750
  • Calidad del aire: Monitoreo de CO2 y partículas (opcional)
  • Presencia: Detección de movimiento con sensores PIR

2. Actuadores y Control

  • Control de iluminación: Encendido/apagado y regulación de intensidad (PWM)
  • Ventilación: Control de ventiladores y extractores
  • Sistemas de riego: Activación automática o manual de válvulas
  • Persianas/Estores: Control motorizado de cortinas (opcional)

3. Comunicación Cloud

  • Conexión WiFi: Cada ESP32 se conecta a la red WiFi local
  • Protocolo MQTT: Comunicación eficiente con broker cloud
  • API REST: Endpoints para integración con otros sistemas
  • WebSocket: Actualizaciones en tiempo real para el dashboard

4. Dashboard Web

  • Vista en tiempo real: Valores actuales de todos los sensores
  • Gráficos históricos: Visualización de tendencias temporales
  • Control de actuadores: Interfaz intuitiva para control remoto
  • Alertas y notificaciones: Sistema de alertas configurables
  • Múltiples usuarios: Sistema de autenticación y permisos

🏗️ Arquitectura del Sistema

ESP32 (Nodos) → WiFi → MQTT Broker → Servidor Cloud → Dashboard Web

Múltiples ESP32 actúan como nodos de recopilación de datos y control.
Se comunican con un broker MQTT que gestiona los mensajes.
Un servidor cloud procesa los datos y los almacena en base de datos.
El dashboard web consume estos datos para visualización y control.

💻 Stack Tecnológico

Hardware

ESP32 DHT22 / DHT11 DS18B20 BH1750 LDR Relés Módulos PWM

Firmware (ESP32)

Arduino IDE ESP32 Arduino Core PubSubClient (MQTT) WiFiManager ArduinoJson

Backend / Cloud

PHP (PDO) MariaDB MQTT Broker (Mosquitto) REST API WebSocket

Frontend

HTML5 CSS3 JavaScript Vanilla Fetch API Chart.js / SVG

📊 Flujo de Datos

  1. Recopilación: Los ESP32 leen los sensores cada X segundos (configurable)
  2. Publicación: Los datos se envían vía MQTT al broker con topic específico por nodo
  3. Procesamiento: El servidor cloud recibe los mensajes MQTT y los procesa
  4. Almacenamiento: Los datos se guardan en MariaDB con timestamp y ID del nodo
  5. Visualización: El dashboard consulta la API REST para mostrar datos actuales e históricos
  6. Control: Las acciones del usuario se envían vía MQTT a los ESP32 correspondientes

🔐 Seguridad

  • Autenticación MQTT: Usuario y contraseña para conexión al broker
  • SSL/TLS: Comunicación encriptada entre ESP32 y broker (opcional)
  • API con tokens: Autenticación mediante JWT o tokens de sesión
  • Validación de datos: Sanitización de entradas en el servidor
  • Control de acceso: Permisos por usuario para diferentes funcionalidades

📈 Fases de Desarrollo

Fase 1: Prototipo Básico (2-3 semanas)

  • Configurar un ESP32 con sensor DHT22
  • Implementar conexión WiFi y publicación MQTT
  • Crear servidor PHP básico que recibe datos MQTT
  • Desarrollar dashboard simple con visualización de datos

Fase 2: Múltiples Nodos (2-3 semanas)

  • Agregar 2-3 ESP32 adicionales con diferentes sensores
  • Implementar sistema de identificación de nodos
  • Mejorar dashboard con múltiples vistas
  • Agregar control básico de actuadores (relés)

Fase 3: Funcionalidades Avanzadas (3-4 semanas)

  • Implementar gráficos históricos
  • Sistema de alertas y notificaciones
  • Automatizaciones (reglas if-then)
  • Optimización de consumo energético

Fase 4: Producción (2-3 semanas)

  • Pruebas de estabilidad y rendimiento
  • Documentación completa
  • Interfaz de configuración para nuevos nodos
  • Optimizaciones finales

💰 Recursos Necesarios

Hardware (por nodo)

  • ESP32 Development Board (1 unidad)
  • Sensor DHT22 (temperatura/humedad)
  • Sensor de luminosidad (LDR o BH1750)
  • Módulo relé (para control de actuadores)
  • Protoboard y cables
  • Fuente de alimentación 5V (USB o adaptador)

Software

  • Arduino IDE con librerías ESP32
  • Servidor web (Apache/Nginx)
  • MariaDB
  • MQTT Broker (Mosquitto o similar)
  • Editor de código (VS Code, Cursor, etc.)

🎓 Aprendizajes y Competencias

Este proyecto desarrolla competencias en:

  • Programación embebida (Arduino/ESP32)
  • Protocolos de comunicación (MQTT, HTTP, WebSocket)
  • Desarrollo backend (PHP, bases de datos)
  • Desarrollo frontend (HTML, CSS, JavaScript)
  • Arquitectura de sistemas distribuidos
  • Seguridad en IoT
  • Integración hardware-software

📝 Notas Adicionales

Este proyecto es escalable y puede adaptarse a diferentes necesidades. Los nodos ESP32 pueden ubicarse en diferentes ubicaciones (aulas, laboratorios, invernaderos, etc.) y todos los datos se centralizan en un único dashboard accesible desde cualquier dispositivo.

El sistema está diseñado para ser modular, permitiendo agregar nuevos tipos de sensores o actuadores sin necesidad de modificar el código central, solo configurando nuevos nodos.

← Volver al Inicio