¿Te imaginas prender y apagar una luz desde tu celular, sin tocar ningún interruptor? Ese es el primer gran "momento maker" de mucha gente, y se logra con dos cosas baratas: una placa Arduino y un módulo Bluetooth HC-06. En este tutorial vas a armar exactamente eso. Mandas un 1 desde una app en tu teléfono y se enciende el LED de la placa; mandas un 0 y se apaga. Al terminar vas a entender cómo viaja un dato por Bluetooth hasta el Arduino y cómo leerlo en tu código, que es la base para controlar motores, relés, luces RGB o lo que se te ocurra después.

Módulo Bluetooth HC-06 conectado a un Arduino para encender un LED

Qué es el HC-06 y por qué se usa tanto

El HC-06 es un módulo Bluetooth clásico (SPP, perfil de puerto serie) que convierte una conexión inalámbrica en una comunicación serial común y corriente. Para el Arduino es como hablar por el puerto serie de siempre: no necesita librerías raras, solo Serial.

Tres razones lo hicieron el favorito de los makers:

  • Consumo bajísimo: alrededor de 8 mA en transmisión o recepción activa, y todavía menos en espera. Eso lo hace ideal para proyectos a batería que tienen que durar horas.
  • Memoria de emparejamiento: una vez que se vincula con tu celular, lo recuerda y no vuelve a pedir validación. La clave por defecto es 1234 o 0000.
  • Lógica de 3,3 V: trabaja a la misma tensión que muchos microcontroladores, lo que simplifica el cableado.

Una aclaración técnica importante que conviene tener clara desde el principio: el HC-06 es esclavo (slave). Solo puede aceptar conexiones, no iniciarlas. Por eso el que "busca y se conecta" siempre es tu teléfono. Si más adelante quieres que dos Arduinos hablen entre sí, vas a necesitar un HC-05, que sí puede actuar como maestro.

Materiales

Para este proyecto necesitas poco y nada:

  • Módulo Bluetooth HC-06 (el protagonista).
  • Arduino (sirve un Uno R3, que es el más común para empezar).
  • Cables jumper macho a hembra, para conectar los pines del módulo a la placa.
  • Un teléfono Android con Bluetooth y una app de comunicación serial (más abajo te explico cuál).

No necesitas LED externo ni resistencia: vamos a usar el LED que ya viene soldado en la placa, conectado al pin 13. Eso baja la barrera de entrada a cero.

Conexiones: respeta el cruce TX y RX

Esta es la parte donde más gente se equivoca, así que vamos despacio. El módulo tiene cuatro pines que nos interesan: VCC, GND, TX y RX. La conexión al Arduino queda así:

  • VCC del HC-06 va a 3,3 V del Arduino.
  • GND del HC-06 va a GND del Arduino.
  • TX del HC-06 va a RX del Arduino (pin 0).
  • RX del HC-06 va a TX del Arduino (pin 1).

Diagrama de conexión del HC-06 al Arduino con el LED en el pin 13

El detalle clave es el cruce de TX y RX. En comunicación serial, lo que uno transmite (TX) el otro lo tiene que recibir (RX). Si conectas TX con TX, ambos quedan "hablando" al mismo tiempo y nadie escucha: no funciona. Por eso el TX del módulo siempre va al RX de la placa, y viceversa.

Un punto de cuidado real: el HC-06 trabaja con lógica de 3,3 V en su pin RX, mientras que el Arduino Uno transmite a 5 V por su TX. Para un primer proyecto de prueba suele andar sin problemas, pero si lo vas a dejar funcionando de forma permanente, lo correcto es bajar esos 5 V con un divisor de tensión (por ejemplo, una resistencia de 1 kΩ y otra de 2 kΩ) o un conversor de niveles lógicos, para no estresar la entrada del módulo a largo plazo.

El código: cárgalo ANTES de conectar el módulo

Acá hay una regla de oro que evita el error más típico del HC-06. Los pines TX y RX del Arduino Uno (0 y 1) son los mismos que usa el cable USB para programar la placa. Eso significa que no puedes cargar código y tener el Bluetooth conectado al mismo tiempo: chocan en el mismo canal.

El flujo correcto es:

  1. Desconecta el módulo HC-06 de los pines 0 y 1.
  2. Carga el código al Arduino por USB.
  3. Recién ahí vuelve a conectar el HC-06.

Cada vez que quieras subir un código nuevo, repite el paso de desconectar el módulo primero.

Este es el sketch completo. Cárgalo tal cual a tu Arduino:

C++
/*ElectroCrea.com
Modulo Bluetooth HC-06    Arduino
---------------------------------
 VCC                      3.3V
 GND                      GND
 TX                       RX
 RX                       TX              
*/
int led = 13;
int state = 0;
int flag = 0;        
////////////////////////////////////////////////////////////////////VOID SETUP
void setup() {
    pinMode(led, OUTPUT);
    digitalWrite(led, LOW);//Iniciamos con el led apagado
    Serial.begin(9600); 
    flag=0;
}
////////////////////////////////////////////////////////////////////VOID LOOP
void loop() {
if(Serial.available() > 0){
    state = Serial.read();
    flag=0;
    }
    
if (state == '1') {//Envíe el el numero uno para encender el led
    digitalWrite(led, HIGH);
    if(flag==0){
    Serial.println("LED: Encendido");
    flag=1;
    }
    }
    
else if (state == '0') {//Envíe el el numero cero para apagar el led
    digitalWrite(led, LOW);
    if(flag==0){
    Serial.println("LED: Apagado");
    flag=1;
    }
    }
}
//Mas información en ElectroCrea.com

¿Qué hace el programa, en simple? En setup() configura el pin 13 como salida y arranca el puerto serie a 9600 baudios (la velocidad por defecto del HC-06, importante que coincida). En loop() revisa si llegó algún dato con Serial.available(). Si llega el carácter '1', enciende el LED y manda por serial el texto LED: Encendido. Si llega '0', lo apaga y avisa LED: Apagado.

La variable flag es un detalle elegante: evita que el mensaje de texto se repita en bucle mientras mantienes presionado el botón. Solo se imprime una vez por cambio de estado. Ojo con un punto: el código compara contra los caracteres '1' y '0' (con comillas simples), no contra los números 1 y 0. Esto importa porque la app envía texto, no valores numéricos crudos.

La app: ArduinoRC en modo Terminal

Para mandar los datos desde el celular vamos a usar la app ArduinoRC (el nombre puede variar según la tienda de apps). Sirve cualquier app de comunicación serial Bluetooth; esta se recomienda por lo simple y completa que es. Si prefieres otra, funciona igual mientras pueda enviar caracteres.

Con todo conectado, activa el Bluetooth en tu teléfono y empareja el módulo (clave 1234 o 0000). Abre la app, dale a "proceed" y selecciona tu módulo HC-06 desde la lista.

Pantalla de la app ArduinoRC mostrando los modos Vehicle, Fader, Controller y Terminal

ArduinoRC trae varios modos para enviar datos. Para este proyecto el que nos sirve es Terminal Mode, que te deja escribir y enviar caracteres a mano. Ahí mandas un 1 para encender el LED y un 0 para apagarlo.

Modo Terminal de ArduinoRC enviando los caracteres 1 y 0 al Arduino

Si quieres comprobar que el Arduino está recibiendo bien, la propia app (o el monitor serial cuando lo tengas conectado por USB sin el módulo) te va a mostrar las respuestas LED: Encendido y LED: Apagado. Ese eco es la confirmación de que el dato cruzó por Bluetooth y el código lo interpretó.

Variantes y mejoras

Una vez que tengas el LED respondiendo, este proyecto es un trampolín. Algunas ideas para llevarlo más lejos:

  • Controla algo de verdad: cambia el LED del pin 13 por un módulo relé. Con eso enciendes una ampolleta de 220 V, un ventilador o una bomba de agua desde el celular. El código casi no cambia: el relé se maneja con el mismo digitalWrite.
  • Libera los pines 0 y 1 con SoftwareSerial: para no pelear con el USB cada vez que programas, conecta el HC-06 a otros dos pines digitales (por ejemplo D10 y D11) y usa la librería SoftwareSerial. Así puedes dejar el módulo enchufado y seguir subiendo código sin desconectar nada.
  • Manda comandos en vez de un solo carácter: en lugar de 1 y 0, puedes leer palabras completas (ON, OFF, ROJO, VERDE) con Serial.readStringUntil('\n') y controlar varios dispositivos o una tira de LEDs RGB con la misma conexión.
  • Recibe datos de vuelta: como la comunicación es bidireccional, puedes leer un sensor (temperatura, humedad) y enviar el valor al teléfono para mostrarlo en pantalla. Tendrías un mini panel de monitoreo inalámbrico.

Personalización para Chile

Lo bueno de este proyecto es que todo se consigue en stock local, sin esperar importaciones. En MechatronicStore tienes los componentes principales:

  • Módulo Bluetooth HC-06 (SKU GR3-2) por $7.990 CLP. Es exactamente el del tutorial, con sus pines VCC, GND, TX y RX.
  • Arduino Uno R3 (SKU X4-8) por $9.990 CLP. La placa estándar para arrancar, con su LED integrado en el pin 13 ya listo para usar.

Para el cableado vas a necesitar cables jumper macho a hembra (el extremo macho entra en los pines del módulo y el hembra calza en los headers del Arduino). Si en algún tutorial en inglés ves que recomiendan un "Arduino Genuino" o una placa de otra marca, el Arduino Uno R3 compatible cumple la misma función para este proyecto y es la opción más económica para partir.

Recursos

Tutorial basado en el trabajo original de ElectroCrea, reescrito y ampliado con contexto técnico y componentes en stock local en MechatronicStore.