Módulo Bluetooth HC-06: Pinout, Características, Código Arduino y Aplicaciones
El HC-06 es un módulo Bluetooth 2.0/2.1 + EDR esclavo (slave), clase 2 (∼10 m), comunicación serie transparente (SPP - Serial Port Profile) vía UART. Bajo coste, fácil integración con Arduino/ESP32/STM32, ideal para control remoto, telemetría, datalogging y puentes serie inalámbricos.
Pinout y Descripción
| Pin | Nombre | Función | Nivel Lógico |
|---|---|---|---|
| 1 | KEY / EN | Modo AT (HIGH) / Normal (LOW/NC). Algunas versiones: EN (enable, activo alto). | 3.3 V |
| 2 | VCC | Alimentación 3.6–6 V (regulador onboard a 3.3 V). Típ. 5 V. | 5 V entrada |
| 3 | GND | Tierra común | 0 V |
| 4 | TXD | Salida serie del módulo → RX del MCU | 3.3 V (TTL) |
| 5 | RXD | Entrada serie del módulo ← TX del MCU | 3.3 V (requiere divisor tensión si MCU 5 V) |
| 6 | STATE | Estado conexión: HIGH=conectado, LOW=desconectado (algunas versiones) | 3.3 V |
Características Eléctricas y RF
| Parámetro | Valor |
|---|---|
| Estándar Bluetooth | 2.0 + EDR (Enhanced Data Rate) |
| Perfil | SPP (Serial Port Profile) — esclavo |
| Frecuencia | 2.402–2.480 GHz (ISM, FHSS 79 canales) |
| Potencia TX | ≤ +4 dBm (Clase 2) |
| Sensibilidad RX | ≤ −84 dBm @ 0.1 % BER |
| Alcance típico | 10 m (línea vista), hasta 20–30 m en abierto |
| Baud rate por defecto | 9600 bps (8N1, sin flow control) |
| Baud rates soportados | 1200–1382400 bps (configurable AT) |
| Tensión trabajo | 3.6–6 V (regulador 3.3 V onboard) |
| Corriente trabajo | ∼30–50 mA (conectado), ∼25 mA (inquiry), ∼8 mA (sleep) |
| Temp. trabajo | −20 °C a +55 °C (algunas versiones −40 a +85 °C) |
| Dimensiones | ∼36 × 16 × 5 mm (módulo stamp), 54 × 27 mm (breakout con pines) |
| Antena | PCB integrada (meandro) o conector U.FL (versiones) |
| Certificaciones | FCC, CE, RoHS (ver versión) |
Modos de Operación
Modo Transparente (Data Mode) — Por Defecto
Todo lo que entra por UART TXD sale por Bluetooth SPP al maestro emparejado, y viceversa. Sin procesamiento. Transparente para el MCU.
Modo AT Command (Configuración)
- Activado poniendo KEY/EN = HIGH (3.3 V) antes de encender (power-on).
- Baud rate fijo en modo AT: 9600 bps (independiente del baud rate configurado para data mode).
- Comandos terminados en
\r\n(CR+LF). RespuestasOK/ERROR.
Comandos AT Principales
| Comando | Función | Ejemplo Respuesta |
|---|---|---|
AT | Test comunicación | OK |
AT+VERSION | Versión firmware | OKlinvorV1.8 |
AT+NAME<nombre> | Cambiar nombre Bluetooth | OKsetname |
AT+PIN<xxxx> | Cambiar PIN emparejamiento (def. 1234) | OKsetPIN |
AT+BAUD<1-8> | Cambiar baud rate data mode | OK9600 (1=1200...8=115200) |
AT+PARI<N/E/O> | Paridad (None/Even/Odd) | OKNONE |
AT+POLAR<0/1> | Polaridad LED estado | OK |
AT+RESET | Reiniciar módulo | OK |
AT+ORGL | Restaurar defaults fábrica | OK |
Conexión a Arduino (5 V) — Divisor de Tensión Obligatorio
HC-06 trabaja a 3.3 V. Arduino UNO/Nano/Mega son 5 V. TX Arduino (5 V) → RXD HC-06 (3.3 V) REQUIERE divisor resistivo. RX Arduino ← TXD HC-06 (3.3 V) es seguro (3.3 V > VIH Arduino).
// Divisor tensión para RXD HC-06 (5 V → 3.3 V)
// Arduino TX (D1) --[1.8k]--+--[3.3k]-- GND
// |
// HC-06 RXD
// Arduino RX (D0) ← HC-06 TXD (directo, 3.3 V OK)
Código Arduino: Puente Serie (Serial Passthrough)
#include
const uint8_t BT_RX = 2; // Arduino D2 ← HC-06 TXD
const uint8_t BT_TX = 3; // Arduino D3 → HC-06 RXD (via divisor)
SoftwareSerial btSerial(BT_RX, BT_TX); // RX, TX
void setup() {
Serial.begin(115200); // USB Serial Monitor
btSerial.begin(9600); // HC-06 default baud
Serial.println("HC-06 listo. Escribe en Serial Monitor para enviar por BT.");
}
void loop() {
if (btSerial.available()) {
Serial.write(btSerial.read()); // BT → USB
}
if (Serial.available()) {
btSerial.write(Serial.read()); // USB → BT
}
}
Código Arduino: Control LED por Bluetooth (App Serial Bluetooth Terminal)
const uint8_t LED_PIN = 13;
const uint8_t BT_RX = 2, BT_TX = 3;
SoftwareSerial btSerial(BT_RX, BT_TX);
void setup() {
pinMode(LED_PIN, OUTPUT);
btSerial.begin(9600);
}
void loop() {
if (btSerial.available()) {
char c = btSerial.read();
if (c == '1') digitalWrite(LED_PIN, HIGH);
else if (c == '0') digitalWrite(LED_PIN, LOW);
btSerial.print("LED: "); btSerial.println(c == '1' ? "ON" : "OFF");
}
}
Emparejamiento y Uso con Smartphone
- Alimenta HC-06 → LED parpadea rápido (modo pairing).
- Android: Ajustes → Bluetooth → Buscar dispositivos → "HC-06" / "linvor" / nombre configurado.
- PIN: 1234 (default) o el configurado con
AT+PIN. - App recomendada: Serial Bluetooth Terminal (Kai Morich) — envía/recibe texto, macros, timestamps.
- iOS: No compatible con SPP clásico (HC-06). Usa HM-10 / HC-08 (BLE) para iOS.
Aplicaciones Comunes
- Control remoto robots, coches RC, brazos robóticos.
- Telemetría sensores (temperatura, humedad, GPS) → móvil/PC.
- Datalogging inalámbrico a tarjeta SD remota.
- Puente serie inalámbrico (reemplaza cable USB/FTDI).
- Domótica DIY: interruptores, sensores, actuadores.
- Diagnóstico OBD-II (con adaptador ELM327 basado en HC-06).
- Impresoras 3D: control/monitor via OctoPrint + BT.
Limitaciones y Alternativas Modernas
| Limitación HC-06 | Alternativa Recomendada |
|---|---|
| Solo esclavo (slave), no inicia conexiones | HC-05 (maestro/esclavo), ESP32 (dual role) |
| Bluetooth Classic 2.1, no BLE (Low Energy) | HM-10, HC-08, nRF52840, ESP32 (BLE 4.2/5.x) |
| No iOS (sin SPP en iOS) | HM-10 (BLE), ESP32 (BLE + GATT) |
| Baud rate max ∼1 Mbps real (overhead BT) | ESP32 (WiFi/BT), Nordic nRF52 (hasta 2 Mbps PHY) |
| Un solo enlace simultáneo | ESP32 (múltiples conexiones BLE), nRF52 |
| Sin OTA (actualización firmware por aire) | ESP32 (Arduino OTA, ESP-IDF OTA) |
Conclusión
El HC-06 sigue siendo opción válida para puentes serie simples, bajo coste y compatibilidad Android/Windows/Linux. Para nuevos diseños IoT, ESP32 (WiFi + BT/BLE, dual-core, OTA, Arduino/ESP-IDF, <3€) o Nordic nRF52840 (BLE 5, Thread, Zigbee, USB, bajo consumo) son superiores. Si usas HC-06: respeta 3.3 V, configura baud rate y PIN via AT, y usa divisor tensión con MCU 5 V.
¿Problemas con tu HC-06? Contáctanos para depuración AT, emparejamiento, throughput o migración a BLE/WiFi.
Tecnología Industrial
- Fundición a Presión (Die Casting): Principios, Tipos y Aplicaciones Industriales
- Entendiendo la Impresión 3D: Principios, Tipos y Aplicaciones Clave
- Mecanizado por Chorro de Agua (WJM): Principios, Aplicaciones y Beneficios
- Horno Cupola: Partes, Funcionamiento y Aplicaciones Explicadas
- Mecanizado Fotoquímico (PCM): Guía Completa de Historia, Proceso Paso a Paso y Aplicaciones
- Transistor 2N3771 NPN: Pinout, Características, Aplicaciones y Equivalentes
- Sensor de Temperatura Digital DS18B20 1-Wire: Pinout, Características y Aplicaciones Prácticas
- Sensor de Posición del Acelerador (TPS): Funcionamiento y Por Qué Importa
- Sensor RVG: Funcionamiento y Por Qué Transforma la Imagen Dental
- Sensor de Pulso: Funcionamiento y Aplicaciones Clave para Makers
- Entendiendo Sensores RTD: Principios, Precisión y Aplicaciones Clave