Lo que vas a construir
Un sensor de temperatura y humedad conectado a internet que envia datos a tu computadora cada 5 segundos.
Al terminar tendras:
- Un ESP32 leyendo temperatura y humedad real de tu habitacion
- Los datos viajando por WiFi a un broker MQTT publico
- Un script en tu computadora mostrando los datos en tiempo real
Este es tu primer proyecto IoT real. Hardware + Software + Internet.
Lista de compras (exacta)
Necesitas estos componentes especificos:
| Componente | Modelo exacto | Precio aprox | Donde comprar |
|---|---|---|---|
| Microcontrolador | ESP32 DevKit V1 (30 pines) | $5-8 USD | Amazon, AliExpress, MercadoLibre |
| Sensor | DHT22 (azul) o DHT11 (azul barato) | $2-5 USD | Amazon, AliExpress |
| Cables | Jumper wires hembra-hembra (3 cables) | $2 USD | Cualquier tienda electronica |
| Cable USB | Micro USB (para programar el ESP32) | $2 USD | Probablemente ya tienes uno |
Total: ~$12-15 USD
Nota: El DHT22 es mas preciso que el DHT11. Si puedes, compra el DHT22.
Diagrama de conexiones
Conecta el sensor DHT22 al ESP32 asi:
ESP32 DevKit V1 DHT22
+--------------+ +-------+
| | | |
| 3.3V |------ cable -----| VCC | (pin 1 - izquierda)
| | | |
| GPIO4 |------ cable -----| DATA | (pin 2)
| | | |
| GND |------ cable -----| GND | (pin 4 - derecha)
| | | |
+--------------+ +-------+
Nota: El pin 3 del DHT22 no se usa (dejalo sin conectar)
Tabla de conexiones:
| ESP32 Pin | Cable | DHT22 Pin | Descripcion |
|---|---|---|---|
| 3.3V | Rojo | Pin 1 (VCC) | Alimentacion del sensor |
| GPIO4 | Amarillo | Pin 2 (DATA) | Datos del sensor |
| GND | Negro | Pin 4 (GND) | Tierra |
Importante: Usa 3.3V, NO 5V. El ESP32 trabaja a 3.3V.
Paso 1: Instalar Arduino IDE
- Ve a arduino.cc/en/software
- Descarga Arduino IDE 2.x para tu sistema operativo
- Instala y abre Arduino IDE
Paso 2: Configurar ESP32 en Arduino IDE
El ESP32 no viene preinstalado. Hay que agregarlo:
- Abre Arduino IDE
- Ve a File → Preferences (o Arduino IDE → Settings en Mac)
- En "Additional boards manager URLs" agrega:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json - Click OK
- Ve a Tools → Board → Boards Manager
- Busca "esp32"
- Instala "esp32 by Espressif Systems" (tarda 2-3 minutos)
Paso 3: Instalar librerias
Necesitas 2 librerias:
- Ve a Tools → Manage Libraries
- Busca "DHT sensor library" por Adafruit → Instalar
- Busca "PubSubClient" por Nick O'Leary → Instalar
Si te pregunta por dependencias, acepta instalarlas.
Paso 4: Conectar el ESP32
- Conecta el ESP32 a tu computadora con el cable USB
- Ve a Tools → Board y selecciona "ESP32 Dev Module"
- Ve a Tools → Port y selecciona el puerto (COM3, COM4 en Windows, o /dev/cu.usbserial en Mac)
No aparece el puerto? Necesitas el driver CP210x:
- Windows/Mac: silabs.com/developers/usb-to-uart-bridge-vcp-drivers
Paso 5: El codigo completo
Crea un nuevo sketch y pega este codigo:
// ============================================
// Sensor IoT: ESP32 + DHT22 + MQTT
// luxIA.us - Tutorial completo
// ============================================
#include <WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>
// --- CONFIGURACION: EDITA ESTOS VALORES ---
const char* WIFI_SSID = "TU_NOMBRE_WIFI"; // Nombre de tu WiFi
const char* WIFI_PASS = "TU_PASSWORD_WIFI"; // Password de tu WiFi
const char* MQTT_SERVER = "broker.hivemq.com"; // Broker MQTT publico (gratis)
const int MQTT_PORT = 1883;
const char* MQTT_TOPIC = "luxia/sensor/tuNombre"; // Cambia "tuNombre" por algo unico
// ------------------------------------------
// Configuracion del sensor
#define DHT_PIN 4 // GPIO4 - donde conectaste DATA
#define DHT_TYPE DHT22 // Cambia a DHT11 si usas ese modelo
DHT dht(DHT_PIN, DHT_TYPE);
WiFiClient espClient;
PubSubClient mqtt(espClient);
void setup() {
// Iniciar monitor serial (para ver mensajes en tu computadora)
Serial.begin(115200);
Serial.println();
Serial.println("=== Sensor IoT iniciando ===");
// Iniciar sensor
dht.begin();
Serial.println("Sensor DHT iniciado");
// Conectar WiFi
Serial.print("Conectando a WiFi: ");
Serial.println(WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.print("WiFi conectado! IP: ");
Serial.println(WiFi.localIP());
// Configurar MQTT
mqtt.setServer(MQTT_SERVER, MQTT_PORT);
Serial.println("MQTT configurado");
}
void conectarMQTT() {
while (!mqtt.connected()) {
Serial.print("Conectando a MQTT...");
// Crear ID unico para este dispositivo
String clientId = "ESP32-" + String(random(0xffff), HEX);
if (mqtt.connect(clientId.c_str())) {
Serial.println(" conectado!");
} else {
Serial.print(" fallo, codigo: ");
Serial.print(mqtt.state());
Serial.println(" - reintentando en 5 segundos");
delay(5000);
}
}
}
void loop() {
// Asegurar conexion MQTT
if (!mqtt.connected()) {
conectarMQTT();
}
mqtt.loop();
// Leer sensor
float temperatura = dht.readTemperature();
float humedad = dht.readHumidity();
// Verificar lectura valida
if (isnan(temperatura) || isnan(humedad)) {
Serial.println("Error leyendo el sensor!");
delay(2000);
return;
}
// Crear mensaje JSON
String mensaje = "{\"temp\":" + String(temperatura, 1) +
",\"hum\":" + String(humedad, 1) + "}";
// Enviar por MQTT
mqtt.publish(MQTT_TOPIC, mensaje.c_str());
// Mostrar en Serial Monitor
Serial.print("Enviado: ");
Serial.println(mensaje);
// Esperar 5 segundos
delay(5000);
}
Paso 6: Configurar TU WiFi
En el codigo, cambia estas lineas con tus datos:
const char* WIFI_SSID = "TU_NOMBRE_WIFI"; // El nombre de tu red WiFi
const char* WIFI_PASS = "TU_PASSWORD_WIFI"; // La contraseña de tu WiFi
const char* MQTT_TOPIC = "luxia/sensor/tuNombre"; // Cambia tuNombre
Paso 7: Subir el codigo
- Click en el boton Upload (flecha hacia la derecha) en Arduino IDE
- Espera a que compile (30-60 segundos)
- Espera a que suba al ESP32 (aparece "Connecting..." y luego porcentajes)
- Cuando termine, abre Tools → Serial Monitor
- Selecciona 115200 baud en la esquina inferior derecha
Paso 8: Verificar que funciona
En el Serial Monitor deberias ver:
=== Sensor IoT iniciando ===
Sensor DHT iniciado
Conectando a WiFi: TU_WIFI
....
WiFi conectado! IP: 192.168.1.105
MQTT configurado
Conectando a MQTT... conectado!
Enviado: {"temp":23.5,"hum":45.2}
Enviado: {"temp":23.6,"hum":45.1}
Enviado: {"temp":23.5,"hum":45.3}
Si ves esto, funciona! Tu sensor esta enviando datos a internet.
Paso 9: Ver los datos desde tu computadora
Ahora vamos a recibir esos datos en tu computadora.
Instala un cliente MQTT:
npm install -g mqtt
Suscribete a tu topic:
mqtt sub -h broker.hivemq.com -t "luxia/sensor/tuNombre"
Deberias ver los datos llegando:
{"temp":23.5,"hum":45.2}
{"temp":23.6,"hum":45.1}
Troubleshooting
| Problema | Solucion |
|---|---|
| No aparece puerto COM | Instala driver CP210x (link arriba) |
| "Error leyendo sensor" | Verifica cables: 3.3V a VCC, GPIO4 a DATA, GND a GND |
| No conecta WiFi | Verifica nombre y password exactos (mayusculas/minusculas) |
| No conecta MQTT | Verifica conexion a internet, prueba reiniciar ESP32 |
| Temperatura incorrecta | Espera 2 minutos para que el sensor se estabilice |
Proximo paso
→ Dashboard de Analytics - Muestra estos datos en graficos