- Materiales necesarios
- Diagrama de circuito
- Configuración inicial de los módulos HC05
- Prueba de comunicación de Arduino a Arduino Bluetooth
Los módulos Bluetooth HC-05 son los módulos Bluetooth de referencia para cualquier proyecto de Arduino. Es fácil de conectar y codificar en el IDE de Arduino. En la mayoría de los proyectos, generalmente nos conectamos al HC05 a un Arduino y lo usamos para comunicarnos de forma inalámbrica con otro dispositivo inteligente como un teléfono móvil. Esto es bastante simple y hemos creado muchos proyectos interesantes con él, como Robot controlado por Bluetooth, Control de voz por Bluetooth, Automatización del hogar por Bluetooth, etc. Sin embargo, ¿alguna vez ha necesitado conectar dos HC-05 juntos? No es tan sencillo conectar un HC05 a un teléfono inteligente, hay algunos pasos adicionales involucrados. Este tutorial lo guiará a través de este proceso. ¡Saltemos de inmediato!
Materiales necesarios
- 2x Arduino (cualquier modelo servirá; estoy usando un Arduino Uno R3 y un Arduino Nano)
- 2x módulos Bluetooth HC05
- Tablero de circuitos
- Cables de puente
- Resistencia 2x 1kΩ
- 2x resistencia de 2,2 kΩ
Diagrama de circuito
Este es el diagrama de circuito básico. Conecte 2 de estos circuitos, uno para el maestro y otro para el esclavo. Para las conexiones, todo lo que estamos haciendo aquí es conectar el HC05 al Arduino. El pin del receptor (Rx) del HC05 opera en el rango de 0V a 3.3V y el Arduino opera en el rango de 0V a 5V. Entonces, usaremos resistencias (R1 y R2) para crear un divisor de voltaje para reducir la salida de 5V del Arduino a 3.3V, para no dañar el módulo HC05.
Estoy usando 1kΩ para R1 y 2.2KΩ para R2, pero puede usar cualquier valor de resistencia siempre que R2 sea aproximadamente el doble del valor de R1 (R2 ≈ 2R1). Del mismo modo, repita el circuito tanto para el maestro como para el esclavo, a continuación se muestran el circuito Bluetooth maestro de Arduino y el circuito Bluetooth esclavo de Arduino.
Configuración inicial de los módulos HC05
Este es el paso adicional necesario para conectar dos módulos HC05 juntos. Necesitamos cambiar algunas configuraciones dentro del Módulo Bluetooth HC05, para hacer esto, tenemos que ir al Modo de Comando AT del módulo HC05 y enviarle comandos a través del monitor serial del Arduino IDE. Para hacer esto, necesitamos escribir un código Arduino para enviar comandos a través del monitor serial al HC05.
El código para configurar el módulo HC05 se puede encontrar en la parte inferior de esta página, la explicación del código es la siguiente
Agregue la biblioteca SoftwareSerial a este código.
#include < SoftwareSerial.h>
Defina los números de pin de transmisión (Tx) y recepción (Rx). Estoy usando el pin 2 para Tx y el pin 3 para Rx.
#define tx 2 #define rx 3
Dé un nombre a la conexión Bluetooth (aquí estoy usando configBt), luego dígale a la biblioteca SoftwareSerial qué pin es Tx y qué pin es Rx. La sintaxis es bluetoothName (Rx, Tx);
SoftwareSerial configBt (rx, tx); // RX, TX
Para configurar el módulo Bluetooth, el Arduino necesita enviarle comandos a una velocidad de 38400 baudios. De manera similar, también configuramos la velocidad en baudios de la conexión Bluetooth en 38400 baudios. Establezca la transmisión (Tx) en el pin de salida y la recepción (Rx) en el pin de entrada
configuración vacía () { Serial.begin (38400); configBt.begin (38400); pinMode (tx, SALIDA); pinMode (rx, ENTRADA); }
Dentro del ciclo forever, tenemos la parte principal del código. La idea aquí es enviar lo que esté escrito en el cuadro de texto en el monitor serial al HC05 a través del pin Tx de Arduino. Luego, muestre lo que emite el HC05 en el monitor en serie.
void loop () {if (configBt.available ()) // si el HC05 está enviando algo… { Serial.print (configBt.readString ()); // imprimir en el monitor de serie} if (Serial.available ()) // si el monitor de serie está generando algo… {configBt.write (Serial.read ()); // escribe en el pin Tx de Arduino}}
Cargue este código en el Arduino conectado al módulo maestro HC05 primero. Después de cargar el código, desconecte el cable de alimentación Arduino. Mantenga pulsado el botón del HC05. Ahora conecte el cable de alimentación Arduino mientras mantiene presionado el botón en el HC05. Muy bien, ahora puede soltar el botón del HC05. Así es como entra en el modo AT del HC05. Para comprobar si ha hecho esto correctamente, asegúrese de que la luz roja del HC05 parpadee aproximadamente cada segundo (¡parpadea lentamente!). Normalmente, antes de conectar el HC05 a cualquier dispositivo Bluetooth, su luz roja parpadea a una frecuencia muy alta (¡parpadea rápidamente!).
A continuación, abra el monitor en serie (el botón del monitor en serie se encuentra en la parte superior derecha del IDE de Arduino). En la esquina inferior derecha de la ventana del monitor en serie, si aún no lo ha hecho, asegúrese de establecer la configuración del final de línea en “Ambos NL y CL” y la velocidad en baudios en 38400. Ahora, escriba AT en el monitor en serie, si todo va bien, obtendrá un "OK" del HC05 que se muestra en la ventana del monitor en serie. ¡Felicidades! Ha iniciado sesión correctamente en el modo de comando AT del módulo HC05.
Ahora, ingrese los siguientes comandos en la tabla a continuación para configurar el módulo maestro HC05:
COMANDO (ingrese esto en el monitor serial y presione enter) |
RESPUESTA (respuesta del HC05, que se muestra en el monitor en serie) |
Función (¿Qué hace este comando?) |
A |
Okay |
Prueba |
EN + CMODE? |
Okay |
Compruebe el CMODE o el modo de conexión ----------------------------- CMODE: 0 es el esclavo 1 es maestro |
AT + CMODE = 1 |
Okay |
Establezca el CMODE en 1 mientras configuramos el HC05 maestro |
AT + ADDR? |
+ DIRECCIÓN: FCA8: 9A: 58D5 Okay * Esta es la dirección de mi maestro HC05. ¡Tu dirección será diferente! |
Devuelve la dirección de la HC05, tenga en cuenta esto abajo a medida que lo necesitaremos más adelante! |
A continuación, conecte su computadora a su otro HC05, el esclavo:
COMANDO (ingrese esto en el monitor serial y presione enter) |
RESPUESTA (respuesta del HC05, que se muestra en el monitor en serie) |
Función (¿Qué hace este comando?) |
A |
Okay |
Prueba |
EN + CMODE? |
Okay |
Compruebe el CMODE o el modo de conexión ----------------------------- CMODE: 0 es un esclavo 1 es maestro |
AT + CMODE = 0 |
Okay |
Establezca el CMODE en 0 mientras configuramos el esclavo HC05 |
AT + BIND = FCA8,9A, 58D5 * Reemplace ":" en la dirección del HC05 maestro por "," * Aquí estoy usando la dirección del maestro HC05 que anoté de la tabla anterior. ¡Debería utilizar la dirección de su maestro HC05! |
Okay |
Configuración de la dirección del HC05 maestro al que este HC05 esclavo se conectará automáticamente al arrancar |
AT + BIND? |
+ VINCULAR: FCA8: 9A: 58D5 Okay * Esta es la dirección de mi maestro HC05. ¡Tu dirección será diferente! |
Verifique la dirección vinculante de su esclavo. Si coincide con la dirección de su HC05 maestro, ¡ya está listo! |
Prueba de comunicación de Arduino a Arduino Bluetooth
En primer lugar, alimente los módulos HC05 maestro y esclavo. Una vez encendido y hayan pasado unos segundos, observe la luz roja de los módulos HC05.
Velocidad intermitente de la luz roja |
Lo que significa |
Parpadeo a una frecuencia muy alta (¡parpadeo rápido!) |
¡No está bien! ¡Significa que sus módulos HC05 no se conectan entre sí! ¡Es hora de solucionar problemas! |
Parpadeo a baja frecuencia (¡parpadeo lento!) |
¡Agradable! ¡Lo has hecho! ¡Pero aún tenemos que hacer una verificación más para estar muy seguros de que esta configuración funciona! ¡Siga adelante! |
Una vez que las luces rojas parpadean a baja frecuencia (¡parpadean lentamente!), Puede estar seguro de que ambos HC05 están conectados entre sí, pero no hemos probado si los datos se pueden enviar y recibir entre el maestro y el esclavo. Después de todo, ese es el propósito principal aquí.
Sube el siguiente código a uno de los Arduinos, este es el código para probar el transmisor (Tx), nuevamente el código completo tanto para el transmisor como para el receptor se puede encontrar en la parte inferior de esta página.
Siguiendo el código anterior, agregamos la biblioteca SoftwareSerial a este código y definimos los números de pin de transmisión (Tx) y Recepción (Rx). Luego nombramos la conexión Bluetooth y pasamos los números de pin Tx y Rx a la biblioteca.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
En la función de configuración, estamos configurando la velocidad en baudios para el monitor serial Arduino y el Bluetooth nuevamente. ¿Ves la diferencia aquí en comparación con el código anterior? Estamos usando una velocidad en baudios de 9600 baudios. Esta es la velocidad en baudios de comunicación predeterminada del módulo Bluetooth HC05 cuando se comunica con otros dispositivos Bluetooth. Por lo tanto, tenga en cuenta que 38400 baudios es para configurar el HC05 con comandos AT y 9600 baudios es la velocidad en baudios predeterminada del módulo HC05. Por último, al igual que antes, configuramos el pin Tx como salida y el pin Rx como entrada.
configuración vacía () { Serial.begin (9600); bt.begin (9600); pinMode (tx, SALIDA); pinMode (rx, ENTRADA); }
Dentro del ciclo forever, todo lo que estamos haciendo es transmitir un valor aleatorio de "123" a través del HC05.
bucle vacío () {bt.write (123); }
Sube este código al otro Arduino, este es el código para probar la recepción (Rx):
Exactamente igual que los códigos anteriores, configuramos la biblioteca SoftwareSerial.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
El código en la función de configuración es exactamente el mismo que el código para probar la transmisión (Tx).
configuración vacía () { Serial.begin (9600); bt.begin (9600); pinMode (tx, SALIDA); pinMode (rx, ENTRADA); }
En el ciclo forever, solo necesitamos recibir lo que estamos enviando desde el Arduino transmisor. Si el búfer de recepción ha recibido algunos datos del HC05, muestre lo que se reciba en el monitor en serie.
bucle vacío () {if (bt.available ()> 0) { Serial.println (bt.read ()); }}
Después de haber cargado los códigos respectivos a cada Arduino, abra el monitor serial al Arduino receptor. Asegúrese de elegir la velocidad en baudios como 9600 y la línea que termina como Newline en el monitor en serie. Si todo funciona bien, debería ver 123.
Nota: Si ha conectado tanto el Arduino transmisor como el receptor a la misma computadora portátil, asegúrese de elegir el puerto COM correcto en TOOLS> PORT. Debería estar conectado al puerto COM del Arduino receptor.
Si todo va bien, cambie los módulos HC05 para asegurarse de que la comunicación pueda ocurrir en ambas direcciones y ¡TERMINAMOS!