Empareje dos módulos Bluetooth HC-05 y comparta datos entre ellos

Del proyecto anterior ya aprendiste cómo configurar los parámetros de control de un Módulo Bluetooth. En este proyecto, se demostrará cómo se pueden emparejar dos módulos Bluetooth y permitir compartir datos entre ellos. Para emparejar dos módulos Bluetooth es necesario configurar uno de ellos para la función Master y el otro para la función Slave. Además, ambos módulos deben estar en modo de trabajo de solicitud de respuesta para que se les puedan pasar comandos AT. La velocidad en baudios de los dos módulos también debe ser la misma y se deben iniciar SPP e INQ en ambos módulos. Para comenzar a compartir datos entre módulos, ambos módulos deben tener el modo de comunicación habilitado configurando el parámetro CMODE establecido en 1.
En este proyecto, se utilizan dos módulos Bluetooth. Los módulos Bluetooth interactúan con diferentes placas Arduino Pro Mini que están conectadas a diferentes computadoras que ejecutan la aplicación Arduino Serial Monitor. Se puede utilizar cualquier aplicación de hiperterminal para pasar comandos AT y datos que se compartirán entre módulos. El boceto de Arduino utilizado en este proyecto está diseñado para intercambiar comandos y datos sin problemas. El código Arduino está escrito en el IDE de Arduino y en placas utilizando AVR Dude.

Componentes necesarios –

1.Arduino Pro Mini – 2
2. Módulo Bluetooth HC-05 – 2
3. Computadora de escritorio o portátil – 2
4. Cable USB – 2

Herramientas de software necesarias –

1. ArduinoIDE
2. Cualquier aplicación de escritorio Hyper Terminal como Arduino Serial Monitor

Conexiones de circuito –

Protótipo de emparelhamento Bluetooth baseado em Arduino
Figura 1: Prototipo de emparejamiento Bluetooth basado en Arduino
Las placas Arduino Pro Mini gestionan el intercambio de datos entre la aplicación serie del ordenador de sobremesa y el respectivo módulo Bluetooth. El circuito tanto en el lado maestro como en el esclavo se ensambla de la misma manera, de la siguiente manera:
Fuente de alimentación: el circuito se alimenta de la batería que alimenta directamente la placa Arduino y el módulo Bluetooth.
Módulo Bluetooth HC-05: el módulo Bluetooth HC-05 es un módulo de protocolo de puerto serie. Opera en la banda ISM de 2,4 GHz con V2.0 + EDR (Enhanced Data Rate). Puede funcionar en modo Maestro y Esclavo. El módulo Bluetooth tiene seis pines: Habilitar, VCC, Tierra, Transmitir datos (TxD), Recibir datos (RxD) y Estado. Los pines Enable y State no se utilizan y, por lo tanto, no están conectados al circuito. Los pines VCC y Tierra están conectados a VCC y Tierra comunes. Los pines TxD y RxD del módulo están conectados a los pines 3 y 2 del Arduino Pro Mini respectivamente. Estas conexiones se resumen en la siguiente tabla:
Tabela listando conexões de circuito entre o módulo Bluetooth HC-05 e o Arduino Pro Mini
Fig. 2: Tabla que enumera las conexiones del circuito entre el módulo Bluetooth HC-05 y el Arduino Pro Mini
Además de estas conexiones, el pin 34 del módulo está conectado al pin 9 del Arduino Pro Mini.
Computadora de escritorio: la computadora está conectada a la placa Arduino mediante un cable USB y transfiere datos en serie a la placa a través de una comunicación en serie virtual utilizando una aplicación de hiperterminal.

Cómo funciona el proyecto –

Ambos módulos reciben comandos AT ingresados ​​por el usuario de la aplicación hiperterminal en sus respectivas computadoras. Los comandos se leen en serie mediante comunicación en serie virtual y se pasan a módulos Bluetooth. Los módulos Bluetooth responden a los comandos AT y las respuestas se leen nuevamente en serie y se transfieren a la aplicación de escritorio.
Primero, uno de los módulos debe configurarse para la función Maestro, para lo cual se deben realizar los siguientes pasos:
Paso 1: Ingrese al modo de comando AT.
Paso 2: inicie SPP.
Paso 3: Verifique los dispositivos disponibles.
Paso 4: Si la dirección está disponible en la lista, emparéjela.
Paso 5: Después del emparejamiento, establezca un enlace de comunicación.
Paso 6: envíe datos para compartir.
Imagem do emparelhamento Bluetooth baseado em Arduino
Fig. 3: Imagen del emparejamiento Bluetooth basado en Arduino
Estos pasos se pueden implementar ejecutando los comandos AT y cambiando los siguientes parámetros de configuración:
Tabela listando comandos AT do Módulo Bluetooth HC-05
Fig. 4: Tabla que enumera los comandos AT del módulo Bluetooth HC-05
El otro módulo debe configurarse como esclavo. Para configurar el otro módulo como esclavo, se deben realizar los siguientes pasos:
Paso 1: Ingrese al modo de comando AT.
Paso 2: inicie SPP.
Paso 3: Verifique los dispositivos disponibles.
Paso 4: Verifique el estado de emparejamiento o no.
Paso 5: Después de establecer el enlace de comunicación Reciba los datos del maestro y, si es necesario, envíe los datos para compartir.
Imagem do módulo Bluetooth escravo baseado em Arduino
Fig. 5: Imagen del módulo esclavo Bluetooth basado en Arduino
Estos pasos se pueden implementar ejecutando los comandos AT y cambiando los siguientes parámetros de configuración:
Tabela listando comandos AT e seus parâmetros de configuração
Fig. 6: Tabla que enumera los comandos AT y sus parámetros de configuración
Por lo tanto, para emparejar los dos módulos, se deben cambiar y anotar los siguientes parámetros de configuración.
– Ambos módulos deben estar en modo comando AT.
– El nombre, la contraseña y la dirección de los módulos deben estar definidos de forma única y ser bien conocidos. La velocidad en baudios de ambos módulos debe ser la misma, establecida en 9600, 0, 0 en la demostración del proyecto.
– El modo SPP debe inicializarse en ambos módulos mediante el comando AT+STATE.
– Uno de los módulos debe estar definido como maestro y el otro como esclavo. Para configurar un módulo para el rol maestro, AT+ROLE debe establecerse en 1 en uno de los módulos. La función predeterminada a es un esclavo con un valor de 0 que no necesita cambiarse en el otro módulo.
– El modo de comunicación debe habilitarse en ambos módulos configurando CMODE en 1.
– En el módulo maestro, el modo de consulta debe establecerse en 0, 5, 5, donde el primer parámetro es el modo de acceso a la consulta que, si se establece en 0, configura el modo default_query y si se establece en 1, configura el modo query_rssi, el segundo parámetro es el número de respuestas permitidas del dispositivo Bluetooth y el tercer parámetro es el tiempo máximo de consulta limitado en segundos.
– El módulo configurado como esclavo debe estar libre al que se le debe pasar el comando RMAAD. Ahora el módulo esclavo podrá emparejarse con el módulo maestro.
– El módulo maestro debe configurarse para consultar los dispositivos disponibles para emparejamiento configurando el modo de consulta y si la dirección del esclavo se muestra como disponible, el nombre del módulo esclavo debe verificarse mediante el comando RNAM.
– Si el nombre del dispositivo esclavo disponible es el mismo que el del módulo esclavo configurado, se puede emparejar enviando el comando AT+PAIR= . Después de un emparejamiento exitoso con el módulo esclavo, el módulo maestro responderá con OK. ¿Se puede verificar el estado de emparejamiento pasando AT+STATE? comando en ambos módulos.
– ¿Se puede definir la conexión entre módulos pasando AT+LINK? dominio.
– Si ambos módulos envían una respuesta OK, los módulos están listos para compartir datos.
– Si los dos módulos no están emparejados, es posible que se haya descuidado la inicialización de SPP e INQ en el esclavo o que el módulo esclavo no esté en modo AT. Es posible que la velocidad en baudios de ambos módulos no sea la misma o que se haya ingresado un PIN incorrecto. También puede existir la posibilidad de que el módulo esclavo no haya sido configurado para la función esclava y haya establecido el parámetro de función en 1 por error. Estas configuraciones deberían haberse verificado antes de intentar emparejar los dispositivos.
Configure ambos módulos con la configuración adecuada, comience a emparejar e intente compartir algunos datos.

Guía de programación –

El boceto Arduino gestiona la comunicación de datos entre la computadora y el módulo Bluetooth. Después del emparejamiento, los módulos Bluetooth podrán compartir datos. En el dispositivo maestro, para habilitar la comunicación serie virtual, es necesario importar SoftwareSerial.h. Se crea una instancia de un objeto serie de software y se asigna a los pines 2 y 3 del Arduino. Se declara una variable para almacenar los datos a compartir.
#incluir 0
SoftwareSerial BTserial(2, 3); //RX Texas
carácter c = ' ';
Se llama a la función de configuración y la velocidad en baudios para comunicarse con la PC se establece en 9600 bits por segundo. Algunos mensajes iniciales se envían en serie a la aplicación del hiperterminal y la velocidad en baudios del puerto serie del software se establece en 38.400 bits por segundo para la comunicación con el módulo Bluetooth.
Se llama a la función de bucle en la que se comprueba la disponibilidad de los datos del módulo esclavo y, si están disponibles, se leen y se escriben en el puerto serie. De manera similar, si se verifica la disponibilidad de algún dato de computadora y, si está disponible, se almacenará en la variable y se pasará al módulo maestro para su transmisión.
Esto completa el Arduino Sketch para el lado Maestro.
En el lado esclavo, nuevamente es necesario importar SoftwareSerial.h. Se crea una instancia de un objeto serie de software y se asigna a los pines 2 y 3 del Arduino.
Se llama a la función de configuración y la velocidad en baudios para comunicarse con la PC se establece en 9600 bits por segundo. Algunos mensajes iniciales se envían en serie a la aplicación del hiperterminal y la velocidad en baudios del puerto serie del software se establece en 38.400 bits por segundo para la comunicación con el módulo Bluetooth.
Se llama a la función de bucle en la que se verifica la disponibilidad de los datos del módulo maestro y, si están disponibles, se leen y se escriben en el puerto serie. De manera similar, si se verifica la disponibilidad de algún dato de la computadora y, si está disponible, se pasa al módulo esclavo para su transmisión.
Esto completa el boceto de Arduino para el lado esclavo. Puede obtener los detalles completos de la programación en la sección de códigos.

Código fuente del proyecto

###

 //Programa para
 #incluir 0

 SoftwareSerial BTserial(2, 3); // RX TX

 char c=" ";

 configuración vacía

 {

 Serie.begin(9600);

 Serial.println("__________Garaje de ingenieros______________");
 
Serial.println("--------------Maestro------------------");

 // La velocidad serial predeterminada del HC-05 para el modo AT es 38400

 BTserial.begin(38400);

 }

 bucle vacío

 {

 // Sigue leyendo desde HC-05 y envíalo al Arduino Serial Monitor

 si (BTserial.disponible)

 {

 c = BTserial.leer;

 Serie.write(c);

 }

 // Sigue leyendo desde Arduino Serial Monitor y envíalo a HC-05

 si (Serie.disponible)

 {

 c = Serie.lectura;

 BTserial.write(c);

 }

 }

 #incluir

 SoftwareSerial BTSerial(2, 3); // RX TX

 configuración vacía

 {

 Serie.begin(9600);

 Serial.println("__________Garaje de ingenieros______________");

 Serial.println("--------------Esclavo------------------");

 // La velocidad serial predeterminada del HC-05 para el modo AT es 38400

 BTserial.begin(38400);

 }

 bucle vacío

 {

 // Sigue leyendo desde HC-06 y envíalo al Arduino Serial Monitor

 si (BTSerial.disponible)

 Serie.write(BTSerial.read);

 // Sigue leyendo desde Arduino Serial Monitor y envíalo a HC-06

 si (Serie.disponible)

 BTSerial.write(Serial.read);

 }

###

Vídeo del proyecto

Volver al blog

Deja un comentario

Los comentarios deben ser aprobados antes de su publicación.