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 SensoresCapa de Conectividad
MQTT / HTTPCapa de Plataforma
Broker MQTT / CloudCapa de Aplicación
Dashboards / AppsEjemplo Práctico: MQTT en ESP32
En este ejemplo conectaremos el ESP32 a un broker MQTT y publicaremos valores simulados de temperatura.
#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.