Módulo 10

Introducción al Internet de las Cosas

Integración con la Nube y IoT

ESP32 Mecatrónica IoT UNAM

Introducción al Internet de las Cosas

El Internet de las Cosas (IoT) es un ecosistema de dispositivos y sensores interconectados que recopilan, envían y reciben datos a través de redes.

En este módulo exploraremos los conceptos clave para integrar un ESP32 en soluciones IoT, desde la arquitectura hasta un ejemplo práctico de comunicación con un broker MQTT.

Historia y Evolución del IoT

El concepto de IoT surge de la convergencia de la miniaturización de sensores, la conectividad inalámbrica y el auge de servicios en la nube. Desde sus inicios en RFID y SCADA hasta plataformas modernas, el IoT ha transformado industrias enteras.

  • Años 90: Primeros sistemas industriales y SCADA.
  • 2000: RFID y conectividad básica.
  • 2010: Plataformas en la nube y MQTT.
  • 2020+: Edge computing y redes de baja potencia.

Protocolos Clave

Los protocolos más utilizados en IoT son:

  • MQTT: Ligero, publica-suscribe, ideal para redes inestables.
  • HTTP/REST: Basado en peticiones, amplio soporte, mayor overhead.
  • CoAP: Comparable a HTTP pero optimizado para dispositivos con recursos limitados.
¿Por qué MQTT?

MQTT permite un intercambio de mensajes eficiente con baja latencia y es ampliamente soportado por plataformas IoT.

Arquitectura de IoT

Cuatro Capas de IoT

Capa de Dispositivo
ESP32 y Sensores
Capa de Conectividad
MQTT / HTTP
Capa de Plataforma
Broker MQTT / Cloud
Capa de Aplicación
Dashboards / Apps

Ejemplo Práctico: MQTT en ESP32

En este ejemplo conectaremos el ESP32 a un broker MQTT y publicaremos valores simulados de temperatura.

Arduino C++
#include 
#include 

const char* ssid = "TU_SSID";
const char* password = "TU_PASSWORD";
const char* mqtt_server = "broker.hivemq.com";

WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  client.setServer(mqtt_server, 1883);
}

void loop() {
  static long lastMsgTime = 0;
  if (!client.connected()) client.connect("ESP32Client");
  if (millis() - lastMsgTime > 5000) {
    String payload = String(random(20,30));
    client.publish("esp32/temp", payload.c_str());
    lastMsgTime = millis();
  }
  client.loop();
}

Ejercicios Prácticos

  • Modifica el ejemplo para enviar humedad.
  • Implementa suscripción a un tópico de control.
  • Crea un dashboard en Node-RED para visualizar datos.

Referencias