Hacklab ASU logo Hacklab ASUHacer, reparar, aprender juntos
Proyectos

Cómo usar el módulo Bluetooth HC-05 con Arduino paso a paso

Conectaste el módulo, el LED parpadea, el móvil lo encuentra, pero no llega ni un carácter al monitor serie. O peor: llega basura.

A small blue Bluetooth module wired to an Arduino board on a breadboard next to a smartphone

Conectaste el módulo, el LED parpadea, el móvil lo encuentra, pero no llega ni un carácter al monitor serie. O peor: llega basura. Es la experiencia más común la primera vez que alguien usa el módulo Bluetooth HC-05 con Arduino, y casi siempre se debe a tres detalles: la velocidad en baudios, el nivel de voltaje del pin RX y el modo en el que arranca el módulo.

En esta guía vamos paso a paso: cómo conectar el Bluetooth HC-05 con Arduino sin dañarlo, cómo emparejarlo con un móvil Android, cómo escribir un programa sencillo para encender un LED desde el teléfono y cómo cambiar el nombre y la contraseña con comandos AT. En el taller hemos montado unos quince proyectos con este módulo, desde un coche a control remoto hasta un registrador de temperatura, y los errores siempre se repiten.

Qué es el HC-05 y qué necesitas

El HC-05 es un módulo Bluetooth clásico (versión 2.0 con perfil de puerto serie, SPP) que se comporta como un cable serie invisible. Lo que Arduino envía por su puerto serie llega al móvil, y lo que el móvil envía llega a Arduino. Tiene un alcance real de unos 10 metros en interior y cuesta entre 4 y 8 euros.

Un detalle importante antes de comprar: el HC-05 usa Bluetooth clásico, no Bluetooth de baja energía. Funciona con Android y con ordenadores, pero no con iPhone. Si necesitas compatibilidad con iOS, busca un módulo BLE como el HM-10.

Material para esta guía:

  • Arduino Uno o Nano.
  • Módulo HC-05 en placa adaptadora de 6 pines (EN, VCC, GND, TXD, RXD, STATE).
  • Una resistencia de 1 kΩ y otra de 2 kΩ para el divisor de voltaje.
  • Un LED con resistencia de 220 Ω.
  • Protoboard, cables y un móvil Android.

Cómo conectar el Bluetooth HC-05 con Arduino

La placa adaptadora acepta entre 3,6 y 6 V en VCC, así que puedes alimentarla con los 5 V de Arduino. Las líneas de datos son otra historia: el chip trabaja a 3,3 V y su pin RXD no está pensado para recibir 5 V de forma continua.

Pin HC-05Conexión en ArduinoNota
VCC5VLa placa adaptadora regula a 3,3 V
GNDGNDMasa común obligatoria
TXDPin 10Directo, 3,3 V es suficiente para Arduino
RXDPin 11 a través de divisor1 kΩ desde el pin 11, 2 kΩ a GND, el punto medio al RXD
EN o KEYSin conectarSolo para entrar en modo AT

El divisor reduce los 5 V del pin 11 a unos 3,3 V. Muchos tutoriales lo omiten y el módulo funciona durante semanas, pero nosotros hemos visto dos HC-05 dejar de responder por ello. Por dos resistencias de céntimos, merece la pena.

Usamos los pines 10 y 11 con la librería SoftwareSerial para dejar libres los pines 0 y 1, que Arduino usa para cargar programas y para el monitor serie. Si conectas el módulo a 0 y 1, la carga del programa fallará mientras esté conectado.

Programa para encender un LED desde el móvil

La lógica del programa es corta. Explicamos cada parte para que puedas escribirla sin copiar a ciegas:

  1. Incluye la librería SoftwareSerial y crea un puerto llamado bt en los pines 10 (RX) y 11 (TX).
  2. En setup, inicia el monitor serie con Serial.begin(9600), el puerto Bluetooth con bt.begin(9600) y define el pin 13 como salida.
  3. En loop, comprueba si bt.available() es mayor que cero. Si lo es, lee un carácter con bt.read().
  4. Si el carácter es '1', pon el pin 13 en HIGH. Si es '0', ponlo en LOW. Imprime el carácter recibido en el monitor serie para depurar.

La velocidad de 9600 baudios es la configuración de fábrica del HC-05 en modo de datos. Si usas otra, verás símbolos extraños o nada.

Emparejar el HC-05 con Android

  1. Alimenta el circuito. El LED del módulo parpadea rápido, unas dos veces por segundo, lo que indica que espera conexión.
  2. En el móvil, abre Ajustes, Bluetooth, y busca dispositivos. Aparecerá como HC-05.
  3. Introduce el PIN 1234. En algunos módulos es 0000.
  4. Instala una aplicación de terminal Bluetooth serie y conéctate al HC-05. El LED pasará a dos destellos cortos cada pocos segundos.
  5. Envía 1 y el LED del pin 13 se encenderá. Envía 0 y se apagará.

Una vez que esto funciona, puedes cambiar el LED por un relé y controlar una lámpara. Si lo haces, usa un módulo relé con optoacoplador y no toques nunca la parte de 230 V con el circuito enchufado.

Cambiar nombre y contraseña con comandos AT

Para configurar el módulo hay que arrancarlo en modo AT. Mantén pulsado el pequeño botón de la placa (o conecta EN a 3,3 V) mientras le das alimentación. El LED parpadeará lento, una vez cada dos segundos. En este modo la velocidad es 38400 baudios, no 9600, así que cambia bt.begin a 38400 y escribe un programa puente que copie lo que llega del monitor serie al módulo y viceversa.

En el monitor serie, elige "Ambos NL y CR" y prueba estos comandos:

  • AT responde OK si todo va bien.
  • AT+NAME=Taller01 cambia el nombre visible.
  • AT+PSWD="4821" cambia el PIN (en algunas versiones del firmware se escribe sin comillas).
  • AT+UART=9600,0,0 fija la velocidad del modo de datos.

Desconecta y vuelve a alimentar sin pulsar el botón para volver al modo normal.

Lo que muchos tutoriales recomiendan y no conviene

Es habitual leer que basta con conectar TXD y RXD directamente a los pines 0 y 1 porque "es más simple y no necesita librerías". Discrepo. Es más simple solo durante cinco minutos. Después tendrás que desconectar el módulo cada vez que subas el programa, no podrás usar el monitor serie para depurar y, sin divisor, estarás metiendo 5 V en un pin de 3,3 V. Usar SoftwareSerial en dos pines libres te ahorra horas de confusión.

La excepción es si necesitas velocidades altas, por encima de 57600 baudios. SoftwareSerial no es fiable a esas velocidades en un Uno. Para ese caso, una placa con varios puertos serie, como el Arduino Mega, es mejor solución.

Problemas frecuentes y soluciones

  • Llegan caracteres raros: la velocidad no coincide. Prueba 9600 en modo datos y 38400 en modo AT.
  • Los comandos AT no responden: el monitor serie no envía fin de línea, o el módulo no arrancó en modo AT.
  • El móvil no encuentra el módulo: comprueba que el LED parpadea rápido y que no está ya conectado a otro dispositivo.
  • Se desconecta al activar un motor: caída de tensión. Alimenta los motores aparte y une las masas.

Si te gustan estos montajes, prueba a combinar el HC-05 con la estación meteorológica casera o con el sensor ultrasónico HC-SR04 con Arduino para enviar medidas al móvil.

Preguntas frecuentes

¿Cuál es la contraseña por defecto del HC-05?

La contraseña de fábrica suele ser 1234, aunque algunos módulos vienen con 0000. Puedes cambiarla en modo AT con el comando AT+PSWD. Anota la nueva antes de desconectar.

¿El HC-05 funciona con iPhone?

No. El HC-05 usa Bluetooth clásico con perfil serie, que iOS no permite a aplicaciones normales. Para iPhone necesitas un módulo Bluetooth de baja energía, como el HM-10. Con Android y ordenadores funciona sin problema.

¿Qué diferencia hay entre el HC-05 y el HC-06?

El HC-05 puede funcionar como maestro o esclavo, mientras que el HC-06 solo funciona como esclavo. El HC-05 tiene más comandos AT y un pin para entrar en modo de configuración. Para controlar un proyecto desde el móvil, cualquiera de los dos sirve.

LB
Lucía Benítez

Lucía empezó reparando radios viejas en la mesa de la cocina y hoy escribe sobre circuitos, Arduino y radiofrecuencia sin dar nada por sabido.

More posts by Lucía

More in Proyectos

01doorganico 084goad 3hot8 4465456 after5internprogram ahandfulofblessings ahmadpc ahomcybersecurity allodialresources annodex antiquesandperiodcollectibles aotc asianworldkashmir beedlectrics bloggertemplatefree bluefeatheragency bodyweightsolution campaign08blog carfixadvisor catstreetcollective cbstvsports cnfanspurchasing committeeof500yearsofdignityandresistance covertopsdjs cs-kaiyuangame cuestacomunicaciontotal cxoutlet dancebetgame deskgearhub destinyvillastay detectmagazine di33 diamondsteelbuildings donmo dyanadropship emarsysfinance emimattl escapechan eskitarih evautoplay everythingweddings-orlando farmzone feedviewerapp foxstudiosscratch gamevui123 gleasongrade greetingsday haskell iw-kaiyun jagoanproperti jilidskripsi joltbusinessfinance juegodepokergratis juegospucca kaeru-festival latestmehndidesigns lestanzediottaviano litemagazines localcommunityhero lustrsazan mariashebets menswheels newwebstechs1 nikkit ootheday oxigenvpn plurfitness prefetial probudgetcarpetcleaning psychicmrsmartin pyaten qvantor rejoignezlogis rexzbot riselayouts ruchin rwxqsgd5 sakaltime shibiaowang shop-bot skrtips strcoding tetapatrium topselller uneplanteartificielle vipertechcr webtech1223411 wo-kygaming yamaha-mekar yeknava yoybuysheets zenunwa yamaha-mekar jilidskripsi ankertoto ankertoto ankertoto ankertoto