Ir al contenido principal

Encender un LED por Bluetooth con ESP32: Control local sin Wi-Fi

Encender un LED por Bluetooth con ESP32

Control local sin necesidad de Wi-Fi ni router

🏷️ ESP32-IOT
Encender un LED por Bluetooth con ESP32: Control local sin Wi-Fi

Introducción

En el tutorial anterior encendimos un LED creando un Servidor Web Wi-Fi. Es una solución fantástica, pero requiere que el ESP32 y tu móvil estén conectados al mismo router de casa. ¿Qué pasa si quieres controlar tu proyecto en el campo, en un coche, o sin red Wi-Fi? Aquí entra el Bluetooth.

El ESP32 incluye Bluetooth Classic (el mismo tipo que usan los altavoces o los cascos) que permite una conexión peer-to-peer directa entre tu móvil y la placa. En este proyecto crearemos un control remoto de LED ultra-simple usando una aplicación de Terminal Bluetooth.

⚠️ App Requerida en tu Móvil

No puedes controlar el Bluetooth desde un navegador web. Necesitas una app en tu Android o iPhone que envíe "mensajes de texto" por Bluetooth. La mejor y más usada por la comunidad Maker es "Serial Bluetooth Terminal" (por Kai Morich). Es gratis y robusta. Descárgala antes de empezar.

El Concepto: Terminal vs Servidor Web

En el post de Wi-Fi, el móvil enviaba una URL (/on). En Bluetooth, el móvil envía cadenas de texto simples (como si estuvieras chateando con el ESP32). Si le envías la palabra "ON", el ESP32 enciende el LED y te responde "LED Encendido".

Código de Arduino: Control por Bluetooth Classic

El ESP32 tiene una librería nativa llamada BluetoothSerial que funciona exactamente igual que Serial, pero enviando los datos por el aire en lugar del cable USB.

Usaremos el LED integrado (Pin 2) para no necesitar cableado extra.

sketch.ino
// Incluimos la librería nativa de Bluetooth del ESP32
#include "BluetoothSerial.h"

// Creamos el objeto de Bluetooth
BluetoothSerial SerialBT;

// Pin del LED integrado en ESP32
const int ledPin = 2;

void setup() {
  // Iniciamos el LED apagado
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  
  // Iniciamos comunicación USB para ver en el PC
  Serial.begin(115200);
  
  // Iniciamos Bluetooth con el nombre que verás en tu móvil
  SerialBT.begin("ESP32_LED_Control"); 
  Serial.println("Bluetooth iniciado. Empareja tu móvil y abre la App.");
}

void loop() {
  // Si el móvil nos envía un mensaje por Bluetooth...
  if (SerialBT.available()) {
    // Leemos el mensaje completo
    String message = SerialBT.readString();
    
    // TRUCO PRO: La App envía un salto de línea (\n) al final de cada mensaje.
    // Si comparamos "ON" con "ON\n", nunca coincidirán. Lo solucionamos así:
    if (message.indexOf("ON") >= 0) {
      digitalWrite(ledPin, HIGH); // Enciende LED
      SerialBT.println("LED ENCENDIDO"); // Respondemos al móvil
      Serial.println("Comando recibido: ON");
    }
    else if (message.indexOf("OFF") >= 0) {
      digitalWrite(ledPin, LOW); // Apaga LED
      SerialBT.println("LED APAGADO"); // Respondemos al móvil
      Serial.println("Comando recibido: OFF");
    }
  }
  
  delay(20); // Pequeña pausa para estabilidad
}

Explicación del Código: El Bug Oculto Resuelto

Este código es muy simple, pero hay un problema técnico que frustra a todos los principiantes y que he solucionado directamente en el código:

  1. SerialBT.begin("ESP32_LED_Control"): Este es el nombre que aparecerá cuando busques dispositivos Bluetooth en tu móvil. Ponle el que quieras.
  2. SerialBT.readString(): Lee todo lo que le envías desde la App del móvil.
  3. El Bug del Salto de Línea (\n): Cuando tú tecleas "ON" en la app y pulsas Enter, la app envía "ON" seguido de un carácter oculto de salto de línea (\n). Si en tu código pusieras if (message == "ON"), fallaría siempre, porque el ESP32 compara "ON" con "ON\n" y no son iguales. Solucionar esto usando .indexOf("ON") (que busca la palabra dentro del texto completo, ignorando el salto de línea) es el truco profesional que diferencia un blog experto de un blog amateur.
  4. SerialBT.println("LED ENCENDIDO"): El ESP32 no solo recibe, también envía. Esto hará que en la app del móvil veas un mensaje de confirmación, creando una experiencia de chat bidireccional muy satisfactoria.

Cómo probarlo paso a paso

  1. Sube el código a tu ESP32.
  2. En tu móvil Android/iOS, ve a Configuración > Bluetooth. Busca el dispositivo "ESP32_LED_Control" y empareja con él (No requiere contraseña, o pone 1234/pin genérico).
  3. Abre la App "Serial Bluetooth Terminal".
  4. En la app, haz clic en el icono de Conexión (símbolo de link) y selecciona "ESP32_LED_Control". Deberás escuchar un sonido de conexión.
  5. En la barra de texto de la app, teclea ON y pulsa el botón de enviar. El LED azul de la placa se encenderá y en la app aparecerá "LED ENCENDIDO".
  6. Teclea OFF y pulsa enviar. El LED se apagará.

Wi-Fi vs Bluetooth: ¿Cuándo usar cada uno?

Con esto, dominas las dos formas de comunicación inalámbrica del ESP32:

  • Wi-Fi (Servidor Web): Ideal si quieres controlar desde cualquier lugar del mundo (si tu red tiene acceso externo), si quieres una interfaz gráfica bonita con botones en pantalla, o si muchos dispositivos van a conectarse a la vez.
  • Bluetooth Classic (Terminal): Ideal para control rápido en la misma habitación sin configurar redes, para depurar proyectos (enviar comandos de prueba), o para proyectos que no tienen acceso a Wi-Fi.

🛒 Materiales para este proyecto

COMPONENTE DESCRIPCIÓN ENLACE
ESP32 DevKit V1 Placa con Bluetooth Classic integrado, usa su LED azul en este proyecto. VER EN AMAZON

🎥 Vídeo relacionado

❓ Preguntas frecuentes

Con matices. Bluetooth Classic (el que usa este proyecto) tiene soporte limitado en iOS para apps genéricas como "Serial Bluetooth Terminal", ya que Apple restringe el acceso a este tipo de conexión. Funciona sin problema en Android. Si necesitas compatibilidad con iPhone, la alternativa es usar Bluetooth Low Energy (BLE), que sí soportan ambos sistemas, aunque requiere un código algo más complejo.

En condiciones normales, entre 10 y 15 metros en espacio abierto, algo menos si hay paredes de por medio. Es más que suficiente para controlar un proyecto dentro de la misma habitación o casa, pero no sirve para control a distancia como sí permite el Wi-Fi con acceso a internet.

Sí, el ESP32 permite usar ambos radios simultáneamente, aunque comparten la misma antena y hay cierta penalización de rendimiento si usas los dos a máxima intensidad al mismo tiempo. Para proyectos sencillos como encender un LED, no notarás ningún problema combinando ambas conexiones.

Conclusión

El ESP32 es una navaja suiza: Wi-Fi, Bluetooth, Dual-Core y pines por montones. Dominar sus comunicaciones inalámbricas te abre las puertas al Smart Home, la robótica avanzada y la domótica industrial. Desde encender un LED por red local hasta controlarlo por Bluetooth, ya tienes las bases sólidas para construir proyectos complejos.

Si quieres comparar las características hardware de este chip con el clásico Arduino, te recomendamos nuestro artículo Arduino vs ESP32: ¿Qué placa debes elegir? (⚠️ URL estimada — confírmame la real). ¡Sigue experimentando!

Comentarios

Entradas populares de este blog

Cómo evitar que Windows apague la pantalla o el disco duro (con gpedit)

Introducción Uno de los problemas más frecuentes en Windows es la suspensión automática del sistema, el apagado de la pantalla o la desactivación del disco duro tras unos minutos de inactividad. Aunque esto busca ahorrar energía, puede resultar frustrante si utilizas tu PC como servidor doméstico, servidor Plex, máquina de descargas o para tareas de larga duración . Si bien es posible cambiar estos ajustes desde la configuración tradicional de energía, muchas veces Windows ignora nuestras preferencias debido a directivas internas. La solución definitiva para evitar que tu ordenador se apague o suspenda es utilizar el Editor de Directivas de Grupo Local (gpedit.msc) . ⚠️ Advertencia sobre la versión de Windows El comando gpedit.msc solo está disponible de forma nativa en las ediciones Windows Pro, Enterprise y Education . Si utilizas Windows Home , esta herramienta no estará presente por defecto y deberás recurrir a la configuración convencional del Panel de Control. Paso 1...

Encender un LED con un Pulsador en Arduino (Tutorial Completo y sin fallos)

Introducción Controlar un LED mediante un pulsador es el primer proyecto práctico que se realiza al iniciarse con Arduino. Aunque parece un ejercicio sencillo, es fundamental entenderlo bien , ya que en él se esconde uno de los errores más comunes en electrónica digital: el problema del "estado flotante" . En este tutorial analizamos la lógica, el esquema y el código, explicando por qué un LED puede parpadear de forma errática sin las conexiones adecuadas y cómo solucionarlo mediante una resistencia Pull-Down o utilizando la función interna INPUT_PULLUP . Materiales necesarios Para realizar este montaje en tu banco de pruebas vas a necesitar los siguientes componentes básicos: 1 Placa Arduino UNO, Nano o Mega 1 LED (5mm, cualquier color) 1 Pulsador o botón push-button (4 pines) 1 Resistencia de 220Ω (protección para el LED) 1 Resistencia de 10kΩ (para el circuito Pull-Down) Cables Dupont / jumpers de conexión 1 Protoboard (placa de prueba...

Alarma con Arduino y Sensor Ultrasónico HC-SR04 (Tutorial paso a paso)

Introducción Crear un sistema de seguridad o detección de movimiento no tiene que ser complicado ni caro. En este tutorial vamos a construir una alarma con Arduino y un sensor de ultrasonidos (el famoso HC-SR04). Este proyecto es ideal para principiantes porque aprendes a leer sensores externos y a generar una respuesta física (encender un LED y hacer sonar un buzzer) cuando alguien se acerca demasiado. A continuación, te explico cómo funciona el sensor, qué materiales necesitas, cómo montar el circuito y te desgloso el código línea por línea para que realmente entiendas lo que estás programando. ¿Cómo funciona el Sensor Ultrasónico HC-SR04? Este sensor funciona igual que un sonar o los delfines: emite un sonido imperceptible para el humano (ultrasonido) y espera a que ese sonido choque contra un objeto y regrese (eco). Pin Trig (Trigger - Disparo): Le dice al sensor que debe "gritar" y emitir el pulso de ultrasonido. Pin Echo (Eco - Recepción): Se queda escuchando...