Guías · 16 min de lectura

Controlar ESP32 desde el móvil: BlueGrays IoT en 5 pasos

Guía para controlar ESP32 desde el móvil con BlueGrays IoT: conexión de relé y DHT22, código generado por Ohmi, 5 pasos, gráficas y solución de errores.

Controlar un ESP32 desde el móvil significa encender y apagar un relé, un LED o un motor conectado a la placa desde el teléfono que llevas en el bolsillo, y ver en él los valores de los sensores. Es el primer paso más divertido para aprender IoT. Como el ESP32 integra Wi-Fi de 2,4 GHz y Bluetooth, no necesitas ningún módulo adicional. La verdadera pregunta es qué camino elegir. Para controlar el ESP32 con una app puedes programar tu propio servidor web, conectarte por Bluetooth o crear un bot de Telegram. Los paneles en la nube como Blynk y Arduino IoT Cloud también son una opción. Cada método tiene un tiempo de configuración, un alcance y unas limitaciones distintas.

En esta guía vas a montar paso a paso el camino más corto: la función BlueGrays IoT de la app BlueGrays. Ohmi prepara el código por ti. Tú solo montas el circuito y cargas el código en el ESP32 desde el Arduino IDE. La placa se conecta al servidor de BlueGrays mediante una conexión cifrada, así que el móvil y la placa no tienen que estar en la misma red. Puedes encender la lámpara de casa desde el trabajo usando datos móviles. Primero harás un interruptor de lámpara con un relé. Después añadirás un DHT22 al circuito y llevarás la temperatura y la humedad a tu móvil como valores en vivo y gráficas. Al final del artículo encontrarás también una comparativa con otros métodos y una tabla con las soluciones a los errores más comunes.

Placa de desarrollo ESP32 que se controlará desde el móvil
El ESP32 se conecta directamente a internet gracias a su Wi-Fi de 2,4 GHz integrado; no necesitas ningún módulo inalámbrico extra para controlarlo desde el móvil.

5 formas de controlar un ESP32 desde el móvil

  • Servidor web local: el ESP32 sirve una página web y tú accedes a la dirección IP de la placa desde el navegador del móvil. No necesitas ninguna cuenta, pero normalmente solo funciona desde la misma red Wi-Fi. Tienes los detalles en el artículo ESP32 Async Web Server.
  • Bluetooth Classic y BLE: no necesitas internet ni router; el móvil se conecta directamente a la placa. En interiores, el alcance suele rondar los 10 metros. Explicamos ambos tipos en la guía ESP32 Bluetooth.
  • Bot de Telegram: envías comandos a la placa por mensaje y recibes notificaciones de ella. Funciona también fuera de casa, pero no ofrece un panel con gráficas o deslizadores. Para configurarlo, consulta el artículo ESP32 Telegram Bot.
  • Paneles en la nube (Blynk, Arduino IoT Cloud): defines plantillas y variables en la consola web, escribes el código tú mismo y diseñas tu propio panel en el móvil. Es un camino flexible, pero tendrás que aprender varias pantallas y conceptos distintos. Para Blynk tienes lista la Guía de Blynk con ESP32.
  • BlueGrays IoT: en la app eliges una de las 8 plantillas disponibles. Ohmi prepara el código con tu configuración de pines y tu clave de dispositivo. En el móvil aparecen automáticamente, según la plantilla, el interruptor, el deslizador, el selector de color y las gráficas. No tienes que diseñar ningún panel ni montar un servidor.

Qué necesitas: lista de materiales y software

Material¿Para qué sirve?Nota
Placa de desarrollo ESP32Microcontrolador con Wi-FiCompatible con ESP32 Dev Module, WROOM, S3 y C3
Cable USB de datosCargar el código y alimentar la placaCon un cable solo de carga, el puerto no aparece
Módulo de relé de 5 VConmutar la lámparaElige uno con optoacoplador que se active con una señal de 3,3 V
LED + resistencia de 220 ΩPrimera prueba segura en lugar del reléEn el código se pone RELAY_ACTIVE_LOW = false
DHT22 (opcional)Medir temperatura y humedadPara la plantilla Estación de habitación
Protoboard y cables jumperHacer las conexionesLos cables macho-hembra son prácticos para los módulos
Red Wi-Fi de 2,4 GHzSalida a internet de la placaLa placa no se conecta a redes de 5 GHz
Arduino IDECargar el código en la placaNecesitas el paquete esp32 de Espressif versión 3.x
App BlueGraysConfiguración y control desde el móviliOS y Android; tu primer dispositivo es gratis

¿Cómo funciona el control del ESP32 con la app?

En BlueGrays IoT, el móvil y el ESP32 no se conectan directamente entre sí. Al encenderse, la placa se conecta primero a la red Wi-Fi de 2,4 GHz de tu casa. Después abre una conexión WebSocket cifrada (TLS) con el servidor de BlueGrays por el puerto 443 y la mantiene abierta todo el tiempo. La app del móvil se conecta a ese mismo servidor. Cuando tocas el interruptor de la lámpara, el comando va del móvil al servidor y del servidor a la placa. Como la conexión ya está abierta, el comando llega sin esperas. El valor de temperatura que envía la placa recorre el mismo camino en sentido contrario. El 443 es el mismo puerto que usan las páginas web, así que no tienes que redirigir puertos en el router, montar tu propio servidor ni conocer la IP de la placa.

Lo que identifica a la placa ante el servidor es la clave de dispositivo. Es un texto secreto que empieza por bgd_ y que genera la app al crear el dispositivo. La placa envía la clave en la cabecera de la conexión al abrirla, y así el servidor sabe a qué placa entregar los comandos del móvil. La clave no se imprime en el Monitor Serie. Si se pierde la conexión, la librería BlueGraysIoT vuelve a intentarlo sola con intervalos cada vez mayores. Los valores medidos mientras estaba desconectada los envía al reconectarse, y cuando se va y vuelve la luz restaura el último estado de los interruptores. Basta con que la placa y el móvil tengan acceso a internet: la placa puede estar en el Wi-Fi de casa y el móvil con datos móviles en otra ciudad.

El circuito: conectar el módulo de relé al ESP32

En las plantillas de interruptor de lámpara y estación de habitación, los pines por defecto son estos: el pin IN del relé va a GPIO26 y el pin de datos del DHT22 a GPIO4. Puedes cambiar estos pines en el paso 3 de la configuración. Comprueba el patillaje de tu placa con la herramienta Pinout. En algunas placas el pin de 5 V aparece rotulado como VIN y en otras como 5V.

ComponentePin del componentePin del ESP32Nota
Módulo de reléVCC5V (VIN)La bobina necesita 5 V; con la placa alimentada por USB este pin da unos 5 V
Módulo de reléGNDGNDTierra común
Módulo de reléINGPIO26Señal de control de 3,3 V
LED (para pruebas)Pata larga (+)GPIO26Con resistencia de 220 Ω; pata corta a GND, en el código RELAY_ACTIVE_LOW = false
DHT22VCC3V3Para la estación de habitación
DHT22DATAGPIO4El sensor suelto necesita una resistencia pull-up de 10 kΩ; en los módulos ya viene en la placa
DHT22GNDGNDTierra común
Conmutar con un relé una lámpara o un enchufe de 220 V de la red eléctrica es peligroso. Hazlo con alguien que sepa y monta las conexiones con la clavija desenchufada. No dejes cables al aire y mete el circuito en una caja cerrada. La app muestra la misma advertencia en las plantillas con relé: prueba primero con un LED. El ESP32 trabaja con lógica de 3,3 V. La mayoría de los módulos de relé de 5 V se activan con esta señal, pero no todos; por eso conviene elegir un módulo con optoacoplador. Tienes más detalles en el artículo ¿Qué es un módulo de relé?.

Configurar BlueGrays IoT: los 5 pasos en la app

En la app, ve a Taller › Mis dispositivos › Añadir dispositivo. En la parte superior de la pantalla verás un contador del tipo "Paso 1 de 5". Los tres primeros pasos se hacen en el móvil, el cuarto en el ordenador y el quinto de nuevo en el móvil.

  1. Placa y plantilla: en la pregunta "¿Qué placa tienes?" elige ESP32 y en "¿Qué va a hacer?" marca una de las 8 plantillas. Para la primera prueba, "Lámpara con relé" o la "Estación de habitación" con sensor son un buen comienzo. Ponle al dispositivo un nombre fácil de reconocer, como "Lámpara del salón".
  2. Componentes y circuito: la lista "Prepara los componentes" muestra las piezas que necesita la plantilla. El esquema "Conecta los cables" dibuja qué terminal va a cada pin. En las plantillas con relé verás el aviso "Si vas a trabajar con 220 V, hazlo con alguien que sepa. Prueba primero con un LED.".
  3. Wi-Fi y código: introduce el nombre y la contraseña de tu red Wi-Fi. El nombre de la red debe ser exactamente igual y pertenecer a la banda de 2,4 GHz. Si quieres, en la sección "Pines de conexión" puedes cambiar GPIO26 y GPIO4 por otros pines. Después pulsa el botón "Crear dispositivo y preparar código". Ohmi prepara el código con tu clave de dispositivo; pásalo a tu ordenador con "Copiar código" o "Compartir".
  4. Cargar en el Arduino IDE: cargas el código en el ESP32. Explicamos uno a uno los subpasos de la app en la siguiente sección.
  5. Conexión: la pantalla "Esperando a tu placa" avanza sola en cuanto la placa se conecta al servidor.

Pasos 4 y 5: cargar el código y comprobar la conexión

  1. Si no tienes instalado el Arduino IDE, instálalo. Tienes los pasos en el artículo Instalación del Arduino IDE.
  2. En el Gestor de placas, busca "esp32" e instala el paquete esp32 de Espressif. Necesitas la versión 3.x de este paquete; si tienes instalada la antigua 2.x, actualízala. La instalación del paquete también está explicada en el artículo ¿Qué es el ESP32?.
  3. Conecta la placa con un cable USB que transmita datos. En el menú Herramientas › Placa elige ESP32 Dev Module (o el modelo de tu placa) y en Herramientas › Puerto elige el puerto nuevo que aparezca. Si no aparece ningún puerto, cambia el cable. Después instala el driver CP210x o CH340, según el chip USB de tu placa.
  4. En el Gestor de bibliotecas, busca BlueGraysIoT y pulsa Instalar. Cuando te pregunte por las dependencias, elige "Instalar todo"; así se instalan también WebSockets, ArduinoJson y DHT sensor library. Si te atascas, consulta la guía Cómo añadir librerías en Arduino.
  5. Abre un sketch nuevo, borra su contenido, pega el código que copiaste de la app y pulsa Subir. Si en la ventana inferior se queda atascado en "Connecting…", mantén pulsado el botón BOOT de la placa. Suelta el botón cuando empiecen a aparecer los porcentajes de escritura.
  6. Abre el Monitor Serie y ajusta la velocidad a 115200. Primero deberías ver la línea "Wi-Fi connected" y unos segundos después "BlueGrays IoT: connected".

En cuanto aparece el mensaje de conectado en el monitor serie, la pantalla "Esperando a tu placa" del móvil pasa a "Conectado: los valores ya llegan en tiempo real.". Ahora toca el interruptor de la lámpara: deberías oír el clic del relé o ver cómo se enciende el LED. Si la placa no se conecta en 2 minutos, la app te pide que compruebes tres cosas. ¿Elegiste la red de 2,4 GHz? ¿Aparece "Wi-Fi connected" en el monitor serie? ¿Están bien las mayúsculas y minúsculas de la contraseña? Si la primera línea no aparece nunca, el problema está en el Wi-Fi. En ese caso te servirá la lista de comprobación del artículo El ESP32 no se conecta al WiFi.

Primer código: encender y apagar una lámpara desde el móvil

El código que prepara la app para la plantilla "Lámpara con relé" es parecido al de abajo. Las tres primeras líneas vienen rellenas con tu clave de dispositivo, el nombre de tu red y tu contraseña; aquí se muestran con marcadores de posición. El resto del código es corto: una función para el relé, la definición de un interruptor y un loop() de una sola línea.

C++ (Arduino IDE)
1/*
2 * Salon lambası · BlueGrays IoT
3 * BlueGrays · bluegrays.com
4 * Bu kodu paylaşma: içinde cihaz anahtarın ve Wi-Fi şifren var.
5 * Do not share this code: it contains your device key and Wi-Fi password.
6 */
7
8#include <BlueGraysIoT.h>
9
10// Uygulama bu üç satırı senin bilgilerinle doldurur / The app fills these three lines with your details
11const char *DEVICE_KEY = "bgd_UYGULAMADAKI_ANAHTARIN";
12const char *WIFI_NAME = "EV_AGI_2_4_GHZ";
13const char *WIFI_PASSWORD = "WIFI_SIFREN";
14
15BlueGraysIoT bg(DEVICE_KEY);
16
17const int RELAY_PIN = 26;
18const bool RELAY_ACTIVE_LOW = true;  // çoğu röle modülü LOW ile çeker / most relay modules switch on LOW
19void setRelay(bool on) { digitalWrite(RELAY_PIN, (on != RELAY_ACTIVE_LOW) ? HIGH : LOW); }
20
21void setup() {
22  Serial.begin(115200);
23  pinMode(RELAY_PIN, OUTPUT);
24  setRelay(false);                  // açılışta lamba kapalı / lamp off at power-up
25  bg.onSwitch("lamba", setRelay);   // uygulamadaki "Lamba" anahtarı / the "Lamba" switch in the app
26  bg.setDebug(Serial);              // durum mesajları Seri Port Ekranı'na / status messages to the Serial Monitor
27  bg.setLanguage(BG_LANG_TR);
28  bg.begin(WIFI_NAME, WIFI_PASSWORD);
29}
30
31void loop() {
32  bg.loop();  // burada uzun delay() kullanma / avoid long delay() calls here
33}
34
LíneaFunción
#include Incluye la librería; ella se encarga del Wi-Fi, la conexión cifrada y la reconexión
DEVICE_KEY, WIFI_NAME, WIFI_PASSWORDClave de dispositivo (empieza por bgd_), nombre de la red de 2,4 GHz y contraseña; los rellena la app
BlueGraysIoT bg(DEVICE_KEY)Crea el objeto bg con la clave; todas las demás órdenes se dan a través de este objeto
RELAY_PIN = 26Pin al que está conectado el IN del relé; si cambiaste el pin en el paso 3, aquí verás otro número
RELAY_ACTIVE_LOW = trueLa mayoría de los módulos de relé se activan con señal LOW; si pruebas con un LED, ponlo en false o funcionará al revés
setRelay(bool on)Cuando on es true, escribe el nivel activo: LOW en un módulo activo a nivel bajo, HIGH en los demás
setRelay(false) (dentro de setup)La lámpara arranca apagada al encender la placa
bg.onSwitch("lamba", setRelay)Cada vez que cambia el interruptor Lámpara de la app, llama a la función setRelay con true o false
bg.setDebug(Serial)Escribe los mensajes de estado de la conexión en el Monitor Serie
bg.setLanguage(BG_LANG_TR)Imprime los mensajes de estado en turco
bg.begin(WIFI_NAME, WIFI_PASSWORD)Inicia la conexión a la red Wi-Fi y al servidor de BlueGrays
bg.loop()Procesa los comandos entrantes y mantiene viva la conexión; hay que llamarlo continuamente dentro de loop()
No uses delay() largos dentro de loop(). Si escribes delay(5000), la placa no podrá llamar a bg.loop() durante 5 segundos. El comando del interruptor que llega del móvil se retrasará y la conexión puede llegar a cortarse. Si necesitas temporizar algo, usa millis() como en el siguiente ejemplo. Explicamos la lógica en el artículo millis() y delay() en Arduino.

Añadir un sensor: Estación de habitación (relé + DHT22)

Ahora vamos a añadir un DHT22 a la misma placa para enviar datos al móvil. Si eliges la plantilla "Estación de habitación" en la app, junto al interruptor de la lámpara aparecen los valores de temperatura (°C) y humedad (%) con sus gráficas. El DHT22 mide entre -40 y 80 °C con una precisión de unos ±0,5 °C. Mide la humedad en el rango del 0 al 100 % y se puede leer como máximo una vez cada 2 segundos. Conecta el pin de datos a GPIO4, VCC a 3V3 y GND a GND. Explicamos de forma comparada cómo funciona la familia DHT en el artículo Sensor de temperatura y humedad DHT11.

C++ (Arduino IDE)
1/*
2 * Oda istasyonu · BlueGrays IoT
3 * BlueGrays · bluegrays.com
4 * Bu kodu paylaşma: içinde cihaz anahtarın ve Wi-Fi şifren var.
5 * Do not share this code: it contains your device key and Wi-Fi password.
6 */
7
8#include <BlueGraysIoT.h>
9#include <DHT.h>
10
11const char *DEVICE_KEY = "bgd_UYGULAMADAKI_ANAHTARIN";
12const char *WIFI_NAME = "EV_AGI_2_4_GHZ";
13const char *WIFI_PASSWORD = "WIFI_SIFREN";
14
15BlueGraysIoT bg(DEVICE_KEY);
16
17const int RELAY_PIN = 26;
18const bool RELAY_ACTIVE_LOW = true;  // çoğu röle modülü LOW ile çeker / most relay modules switch on LOW
19void setRelay(bool on) { digitalWrite(RELAY_PIN, (on != RELAY_ACTIVE_LOW) ? HIGH : LOW); }
20DHT dht(4, DHT22);                   // DHT22 veri ucu GPIO4 / DHT22 data on GPIO4
21unsigned long lastReadMs = 0;
22
23void setup() {
24  Serial.begin(115200);
25  pinMode(RELAY_PIN, OUTPUT);
26  setRelay(false);
27  bg.onSwitch("lamba", setRelay);
28  dht.begin();
29  bg.setDeadband("sicaklik", 0.1);   // 0,1 °C değişmeden gönderme / send only after a 0.1 °C change
30  bg.setDeadband("nem", 1.0);        // %1 değişmeden gönderme / send only after a 1 % change
31  bg.setDebug(Serial);
32  bg.setLanguage(BG_LANG_TR);
33  bg.begin(WIFI_NAME, WIFI_PASSWORD);
34}
35
36void loop() {
37  bg.loop();  // burada uzun delay() kullanma / avoid long delay() calls here
38  if (millis() - lastReadMs >= 2000) {  // DHT22 en fazla 2 saniyede bir okunur / DHT22 reads at most every 2 s
39    lastReadMs = millis();
40    bg.send("sicaklik", dht.readTemperature());
41    bg.send("nem", dht.readHumidity());
42  }
43}
44

La parte del relé es igual que en el primer código; hay tres novedades. La primera es la línea bg.send("sicaklik", dht.readTemperature()): envía un valor de la placa a la app, y el primer parámetro es el nombre de la variable en la app. La segunda es la línea bg.setDeadband("sicaklik", 0.1). Define el margen mínimo de cambio: la temperatura no se vuelve a enviar hasta que cambia 0,1 °C, y para la humedad ese margen es del 1 %. La tercera es la comprobación millis() - lastReadMs >= 2000 dentro del loop. El sensor se lee cada 2 segundos, pero entretanto bg.loop() sigue ejecutándose sin esperar. La librería solo envía el valor cuando cambia y no supera la frecuencia del plan. Entre dos envíos de la misma variable pasa como mínimo 1 segundo en el plan gratuito y 0,2 segundos en Premium. Estos límites se controlan en el servidor; cambiar los números del código no permite saltárselos. Si la temperatura de la habitación se queda varios minutos en 23,4 °C, la placa no envía ningún valor nuevo; cuando pasa a 23,5 °C se envía un único mensaje. Si un cable está suelto o falta la resistencia pull-up, la lectura es inválida (NaN). Si no llegan valores, comprueba primero la conexión de GPIO4 y la alimentación.

¿Qué ves en el móvil?

  • Estado: en la parte superior de la pantalla del dispositivo pone En línea o Sin conexión, y debajo aparece la información "Último dato hace…". Es lo primero que te dice si la placa está realmente conectada.
  • Controles: en la plantilla de lámpara aparece un interruptor de encendido/apagado. En la de tira RGB tienes un selector de color, brillo del 0 al 100 % y selección de efectos. Y en la de cortina hay un deslizador de ángulo de 0 a 180°.
  • Valores en vivo y gráficas: hay rangos de 1 h, 24 h, 7 días y 30 días. En las vistas de 7 y 30 días se muestra la media por hora. La gráfica indica los valores Mínimo, Máximo y Último. Mientras la placa sigue conectada, se añade un punto nuevo cada minuto.
  • Código y clave: aquí puedes ver más tarde el código completo, la clave de dispositivo y los datos del Wi-Fi. Si necesitas volver a programar la placa, copia el código desde aquí.
  • Renovar clave: úsalo si alguien ha visto tu clave o si has cambiado de placa. La clave antigua deja de ser válida al instante y basta con cargar una vez el nuevo código en la placa.
  • Eliminar dispositivo: se borran el dispositivo y su historial de gráficas, y recuperas el hueco de dispositivo.

Gratis y Premium: ¿cuánto puedes usarlo?

Tu primer dispositivo es gratis. Para montar un interruptor de lámpara o una estación de habitación con un ESP32 no necesitas nada más. En la estación de habitación, la temperatura y la humedad son dos variables distintas. En el plan gratuito te llegan al móvil los valores en vivo de las dos, pero el historial de gráficas solo se guarda para una variable. Abajo tienes las diferencias entre planes; los detalles están en el artículo ¿Qué desbloquea BlueGrays Premium?.

FunciónGratisPremium
Número de dispositivos110
Variables con historial de gráficas120
Duración del historial24 horas30 días
Tiempo mínimo entre dos envíos de la misma variable1 segundo0,2 segundos

Comparativa con otros métodos

MétodoAcceso desde fuera de casaLo que tienes que hacer túPanel y gráficas¿Cuándo conviene?
Servidor web localNormalmente no, solo desde la misma redProgramar el código del ESP32 y una página HTMLLo diseñas túPanel de control doméstico sin internet
Bluetooth / BLENo, unos 10 mCódigo de la placa y una app en el móvilDepende de la app que usesLugares sin router, control de cerca
Bot de TelegramSíCrear el bot y escribir el códigoMensajes y botones, sin gráficasNotificaciones y comandos sencillos
BlynkSíPlantilla, datastreams, panel y códigoWidgets y gráficas listosQuien quiere diseñar su propio panel
Arduino IoT CloudSíDefinir el Thing y las variables en la cuenta de Arduino y completar el códigoWidgets del dashboardQuien se queda en el ecosistema Arduino
BlueGrays IoTSíMontar el circuito y cargar el códigoControles y gráficas listos según la plantillaEmpezar rápido y usarlo mientras aprendes

La elección correcta depende de lo que necesites. Si no tienes nada de internet, Bluetooth o un servidor web local son la única opción. BlueGrays IoT, Blynk y Arduino IoT Cloud necesitan que la placa y el móvil tengan acceso a internet. Si buscas configuraciones flexibles, como diseñar la interfaz desde cero o integrarte con Home Assistant, ESP32 MQTT y los paneles en la nube ofrecen más opciones. BlueGrays IoT tiene 8 plantillas listas. A cambio, el esquema del circuito, la lista de componentes, el código y la interfaz del móvil vienen preparados y encajan entre sí. Mientras aprendes, hay menos probabilidades de que te equivoques en algún punto.

Seguridad: clave, contraseña del Wi-Fi y código

  • La clave de dispositivo es la identidad de la placa. Quien conozca la clave que empieza por bgd_ puede hacerse pasar por tu placa. Por eso no la compartas en capturas de pantalla, foros ni grupos de mensajería.
  • La contraseña del Wi-Fi se queda en el móvil. La contraseña no se envía al servidor; el nombre de la red sí se guarda con el dispositivo para poder mostrarte el código más tarde. Pero el código que cargas en la placa sí lleva la contraseña escrita.
  • No compartas el código. Como avisa la propia app, el código contiene tu clave de dispositivo y la contraseña de tu Wi-Fi. Si vas a enseñar el código en un foro para pedir ayuda, borra antes las líneas DEVICE_KEY, WIFI_NAME y WIFI_PASSWORD.
  • La conexión está cifrada. El tráfico entre la placa y el servidor va por el puerto 443 con TLS, así que nadie en la misma red puede leer los comandos.
  • Si sospechas algo, renueva la clave. El botón Renovar clave anula la clave antigua al instante. Si vas a darle la placa a otra persona, renueva también la clave o elimina el dispositivo.

Errores frecuentes y soluciones

SíntomaCausa probableSolución
En el monitor serie nunca aparece "Wi-Fi connected"Se eligió una red de 5 GHz o hay un error de mayúsculas/minúsculas en la contraseñaIntroduce el nombre de la red de 2,4 GHz; si en el router las dos bandas tienen el mismo nombre, sepáralas; vuelve a escribir la contraseña con cuidado
No hay ningún puerto en Herramientas › PuertoCable solo de carga o falta el driverUsa un cable de datos; instala el driver CP210x o CH340 según el chip
La carga se queda atascada en "Connecting…"La placa no entra en modo de cargaMantén pulsado BOOT y suéltalo cuando empiece la escritura; más información en el artículo No se sube el código a Arduino
La compilación se detiene con errores del núcleo ESP32Está instalada la antigua versión 2.x del paquete esp32Actualiza a la versión 3.x desde el Gestor de placas
"No such file or directory" (BlueGraysIoT.h, DHT.h, WebSockets)No están instaladas la librería o sus dependenciasReinstala BlueGraysIoT y elige "Instalar todo"; busca por su nombre la que falte
Caracteres sin sentido en el monitor serieLa velocidad no es 115200Ajusta la velocidad del Monitor Serie a 115200
Aparece "Wi-Fi connected" pero no "BlueGrays IoT: connected"La red no tiene salida a internet, una red corporativa lo bloquea o está cargado el código anterior a renovar la clavePrueba con el punto de acceso del móvil; carga el código actualizado de la pantalla Código y clave
La placa se reinicia cuando hace clic el reléAlimentación insuficiente (brownout)Usa un cable de calidad y un cargador potente, alimenta el relé desde 5V; consulta ESP32 Brownout
El LED se enciende con el interruptor apagadoRELAY_ACTIVE_LOW se dejó en true, como para el reléSi usas un LED directamente, pon RELAY_ACTIVE_LOW = false
Un sensor analógico da siempre el mismo valor al activar el Wi-FiEl sensor está conectado a un pin ADC2Usa uno de los pines ADC1 (GPIO32–39); más detalles en el artículo ¿Qué es un ADC?
No llegan los valores de temperatura y humedadEl pin de datos del DHT22 está en el pin equivocado o falta la pull-upConecta DATA a GPIO4 y VCC a 3V3; con el sensor suelto, añade una pull-up de 10 kΩ

Ideas de proyectos IoT que puedes hacer con un ESP32

Una vez montado el camino entre la placa, el servidor y el móvil, añadir un dispositivo nuevo te lleva unos minutos. Empieza con el interruptor de lámpara, luego comprueba con el DHT22 cómo llegan los datos al móvil y después pasa a proyectos más grandes como el riego o la cortina. En la app BlueGrays puedes ver estos proyectos IoT con ESP32 paso a paso, con su esquema del circuito y su código. Usa el filtro de proyectos IoT de Explorar y, con la tarjeta "Configurar como dispositivo IoT" de la página del proyecto, conecta el mismo circuito directamente a tu móvil.

Preguntas frecuentes

¿Cómo se controla un ESP32 desde el móvil?

Un ESP32 se puede controlar desde el móvil con un servidor web local, Bluetooth, un bot de Telegram o paneles en la nube. Con BlueGrays IoT vas a Taller › Mis dispositivos › Añadir dispositivo, eliges la placa y la plantilla, introduces los datos del Wi-Fi y cargas con el Arduino IDE el código que prepara Ohmi. Cuando la placa se conecta, los interruptores y los valores aparecen en el móvil.

¿Se puede controlar un ESP32 desde el móvil sin internet?

Con BlueGrays IoT no; tanto la placa como el móvil tienen que estar conectados a internet, porque los comandos pasan por el servidor. Para controlarlo sin internet puedes usar Bluetooth (BLE) o un servidor web en el ESP32 que funcione en la misma red.

¿Puedo controlar mi ESP32 desde otra ciudad?

Sí. Como la placa y el móvil se conectan al mismo servidor, no necesitan estar en la misma red. La placa puede estar en el Wi-Fi de 2,4 GHz de casa y el móvil con datos móviles. No hace falta redirigir puertos, tener IP fija ni montar tu propio servidor.

¿BlueGrays IoT es de pago?

Tu primer dispositivo es gratis. El plan gratuito incluye 1 dispositivo, historial de gráficas para 1 variable y 24 horas de historial. Premium desbloquea 10 dispositivos, historial de gráficas para 20 variables y hasta 30 días de historial.

¿Es mejor controlar el ESP32 por Bluetooth o por Wi-Fi?

El Bluetooth no necesita internet ni router, pero en interiores su alcance suele rondar los 10 metros. Con Wi-Fi y un servidor puedes manejar la placa desde cualquier parte del mundo y además se guardan gráficas e historial. Si siempre estás en casa y no tienes router, conviene Bluetooth; si quieres acceso remoto, Wi-Fi.

¿Cuántos dispositivos puedo conectar a BlueGrays IoT?

Puedes añadir 1 dispositivo en el plan gratuito y 10 en Premium. Las placas compatibles son ESP32 (Dev Module, WROOM, S3, C3) y Raspberry Pi Pico W. Cuando eliminas un dispositivo, recuperas ese hueco.

Ver todos los proyectos
ESP32 Interruptor IoT de Lámpara (Relé)
#372Principiante
IoT

ESP32 Interruptor IoT de Lámpara (Relé)

Enciende y apaga tu lámpara desde el móvil, estés donde estés. Este proyecto es la guía paso a paso de la plantilla IoT Lámpara con relé de la app, montada con un ESP32 y un módulo de relé y probada primero con un LED. Ve a Taller › Dispositivos › Añadir dispositivo y elige Lámpara con relé; Ohmi prepara el código con tu propia clave de dispositivo. El código de esta página es un ejemplo: la clave y los datos del Wi-Fi son de relleno.

0.0(0)
ESP32 Estación IoT de Habitación (Relé + DHT22)
#371Intermedio
IoT

ESP32 Estación IoT de Habitación (Relé + DHT22)

Enciende tu lámpara desde el móvil y mira la temperatura y la humedad de tu habitación en directo, estés donde estés. Este proyecto es la guía paso a paso de la plantilla IoT Estación de habitación de la app, con un ESP32, un módulo de relé y un DHT22. Ve a Taller › Dispositivos › Añadir dispositivo y elige Estación de habitación; Ohmi prepara el código con tu clave de dispositivo. El código de aquí es un ejemplo: la clave y el Wi-Fi son de relleno.

0.0(0)
1
ESP32 Riego IoT de Plantas (Sensor + Bomba)
#376Intermedio
IoT

ESP32 Riego IoT de Plantas (Sensor + Bomba)

Que la bomba arranque sola cuando la tierra de la maceta se seque, y mira la humedad del suelo en directo en el móvil. Este proyecto es la guía paso a paso de la plantilla IoT Humedad del suelo + bomba de la app, con un ESP32, un sensor de humedad del suelo, un relé y una mini bomba de agua. Ve a Taller › Dispositivos › Añadir dispositivo; Ohmi prepara el código con tu clave de dispositivo. El código de aquí es un ejemplo: la clave y el Wi-Fi son de relleno.

0.0(0)
ESP32 Tira LED RGB IoT (WS2812B)
#374Intermedio
IoT

ESP32 Tira LED RGB IoT (WS2812B)

Controla la luz de tu habitación desde el móvil: elige el color, ajusta el brillo, activa el efecto arcoíris o respiración. Esta es la guía paso a paso de la plantilla IoT Tira LED RGB de la app, montada con un ESP32 y una tira WS2812B de 30 LED con tres cables. Ve a Taller › Dispositivos › Añadir dispositivo y elige Tira LED RGB; Ohmi prepara el código con tu propia clave de dispositivo. El código de esta página es un ejemplo: la clave y los datos del Wi-Fi son de relleno.

0.0(0)
1
ESP32 Abridor de Cortinas IoT (Servo SG90)
#378Intermedio
IoT

ESP32 Abridor de Cortinas IoT (Servo SG90)

Toca + o − en el móvil y el servo gira a ese ángulo en el mismo instante: abre y cierra una cortina de maqueta, la varilla de una persiana o una tapa pequeña estés donde estés. Este proyecto es la guía paso a paso de la plantilla IoT Cortina con servo de la app, con un ESP32 y un servo SG90, con solo 3 cables. Ve a Taller › Dispositivos › Añadir dispositivo; Ohmi prepara el código con tu clave de dispositivo. El código de aquí es un ejemplo: la clave y el Wi-Fi son de relleno.

0.0(0)
1
Pico W Temperatura y Humedad IoT (DHT22)
#373Principiante
IoT

Pico W Temperatura y Humedad IoT (DHT22)

Mira en directo en el móvil la temperatura y la humedad de tu habitación. Este proyecto es la guía paso a paso de la plantilla IoT Temperatura y humedad de la app, montada con una Raspberry Pi Pico W y un DHT22. Ve a Taller › Dispositivos › Añadir dispositivo, elige Pico W como placa y Temperatura y humedad como plantilla; Ohmi prepara el código con tu propia clave de dispositivo. El código de esta página es un ejemplo: la clave y los datos del Wi-Fi son de relleno.

0.0(0)
1
Pico W Sensor IoT de Puerta (Reed)
#375Principiante
IoT

Pico W Sensor IoT de Puerta (Reed)

¿Se te quedó abierta la puerta o la ventana? Míralo en el móvil. Este proyecto es la guía paso a paso de la plantilla IoT Puerta / ventana de la app, montada con una Raspberry Pi Pico W, un interruptor reed y un pequeño imán. Ve a Taller › Dispositivos › Añadir dispositivo, elige Pico W como placa y Puerta / ventana como plantilla; Ohmi prepara el código con tu propia clave de dispositivo. El código de esta página es un ejemplo: la clave y los datos del Wi-Fi son de relleno.

0.0(0)
Pico W Contador de Movimiento IoT (PIR)
#377Principiante
IoT

Pico W Contador de Movimiento IoT (PIR)

Cuenta cuántas veces pasa alguien por una puerta o un pasillo y mira el momento del movimiento en directo en el móvil. Este proyecto es la guía paso a paso de la plantilla IoT Detector de movimiento de la app, con una Raspberry Pi Pico W y un sensor de movimiento PIR, con solo 3 cables. Ve a Taller › Dispositivos › Añadir dispositivo; Ohmi prepara el código con tu clave de dispositivo. El código de aquí es un ejemplo: la clave y el Wi-Fi son de relleno.

0.0(0)