Etiquetas: , , , ,
5
(1)

Tu tarjeta electronica Arduino puede comunicarse con otros dispositivos (smartphone, computadora u otros microcontroladores) a través de Bluetooth usando un módulo HC-05 (Maestro / Esclavo). Esto permite conectar la tarjeta Arduino a otro sistema para enviar y recibir datos. La comunicación a través de Bluetooth permite, por ejemplo, controlar un robot a través de una aplicación de smartphone, recuperar las mediciones de un sensor en tu computadora o permitir que dos robots se comuniquen entre ellos.

Materiales

  • Computadora
  • Tarjeta Arduino UNO x2
  • Cable USB para conectar el Arduino a la computadora x2
  • Modulo Bluetooth HC-05 ZS-040 x2 (o 1x HC-06 y 1x HC-05) 
  • Cables Dupont M/F

Presentacion del modulo Bluetooth HC-05

El módulo Bluetooth HC-05 tiene 6 pines para realizar la conexión.

  • Fuente de alimentación VCC pin. Normalmente conectado al pin 5V del Arduino.
  • Masa GND. Normalmente conectado al pin GND del Arduino.
  • Pin de recepción RX. Normalmente conectado al pin de transmisión Arduino (TX)
  • Pin de transmisión TX. Normalmente conectado al pin de recepción Arduino (RX)
  • Estado devuelve 1 cuando el módulo está conectado
  • La llave o la EN deben estar encendidas para ingresar al modo de configuración y no deben estar conectadas para estar en modo de comunicación.

La característica especial del módulo Bluetooth HC-05 es que se puede usar en modo esclavo (en este caso es equivalente a un módulo HC-06 y se usa de la misma manera o en modo maestro, lo que significa que puede conectarse de manera autónoma a otro módulo Bluetooth (HC-06, HC-05 en modo esclavo u otro) sin acción externa.

Diagrama de cableado para la configuración


CUIDADO:

  • usamos los pin 2 y 3 de Arduino Uno. Dependiendo del microcontrolador, algunos pines pueden no ser compatibles con la comunicación SoftwareSerial. Especialmente, Arduino Mega, Micro y Leonardo. Consultar la documentacion.
  • La lógica del módulo Bluetooth es 3.3V, se recomienda usar un puente divisor de voltaje para reducir el voltaje de 5V Arduino

Configuracion del modulo HC-05

La configuración del módulo Bluetooth puede ser interesante para verificar el funcionamiento correcto del módulo y para modificar sus parámetros, especialmente cuando se quiere usar el módulo en modo maestro. El módulo debe estar encendido pero no emparejado, y el pin Clave / EN debe recibir alimentación a 3 V cuando el módulo está encendido. Cuando el módulo está en modo de configuración, el LED se ilumina durante dos segundos cada dos segundos.

Abra el monitor de serie de Arduino y asegúrese de que la opción de final de línea muestre «Nueva linea» y que la velocidad en baudios esté establecida en 9600.

Tenga en cuenta que el módulo Bluetooth HC-05 ingresa al modo AT con una velocidad de comunicación (velocidad en baudios) de 38400 bps.

Codigo de configuracion

El siguiente código se utiliza para modificar los parámetros del módulo HC-05 (nombre, código PIN, velocidad de comunicación (velocidad en baudios), etc.) y para encontrar información como el número de versión del firmware.

#include <SoftwareSerial.h>
#define rxPin 2
#define txPin 3
#define baudrate 38400

String msg;

SoftwareSerial hc05(rxPin ,txPin);

void setup(){
  pinMode(rxPin,INPUT);
  pinMode(txPin,OUTPUT);
  
  Serial.begin(9600);
  Serial.println("ENTER AT Commands:");
  hc05.begin(baudrate);
}

void loop(){
    readSerialPort();
    if(msg!="") hc05.println(msg);
    
    if (hc05.available()>0){
      Serial.write(hc05.read());
    }
}

void readSerialPort(){
  msg="";
 while (Serial.available()) {
   delay(10);  
   if (Serial.available() >0) {
     char c = Serial.read();  //gets one byte from serial buffer
     msg += c; //makes the string readString
   }
 }
}

Comandos de configuracion

Además del hecho de que se puede utilizar en modo maestro, el módulo Bluetooth HC-05 también le permite conocer sus parámetros guardados.

En general, si escribe en el monitor serie AT+<command>?, obtiene el valor guardado en el módulo (por ejemplo, AT + PSWD? para conocer el código PIN del módulo). Si entras en la linea AT+<command>=<Param>, Usted establece el valor del modulo (ej: AT+PWSD=0000 para modificar el codigo PIN en 0000).

Aquí hay algunos comandos básicos de AT:

  • Para probar la comunicación, escribeAT En la serie monitor del IDE de Arduino. Si todo está bien, el módulo debe responder OK.
  • Para cambiar el nombre del módulo, escribe AT+NAME=<Param> modulo. El módulo debe responder OK. (Ej: Para cambiar el nombre del módulo a tipo BTM1 escribe AT+NAME=BTM1)
  • Para cambiar el código PIN del módulo, escribe AT+PSWD=<Param> . El módulo debe responder OK. (Ej: si quieres cambiar el PIN en 0000 escribe AT+PSWD=0000)
  • AT+ROLE=<Param> para modificar la función del módulo esclavo o maestro (por ejemplo, para pasar el módulo a master AT + ROLE = 1).
  • Para cambiar la velocidad de comunicación del módulo (solo si es necesario), escriba AT+UART=<Param1>,<Param2>,<Param3>
    202/5000
    con Param1, 2 y 3 los parámetros de comunicación en serie: la velocidad de transmisión, el bit de parada y el bit de paridad respectivamente. (Por defecto, 9600,0,0 Ej .: si desea cambiar la velocidad en baudios en el tipo 115200 escribe AT+UART=115200,0,0).

Existen otros comandos AT del módulo Bluetooth HC-05 que puedes encontrar siguiendo el enlace.

PRECAUCIÓN: Existen diferentes versiones del módulo HC-05 y la lista de comandos AT y el procedimiento pueden variar. Verifique el número de serie escrito en el módulo y la versión del firmware escribiendo AT + VERSION? En nuestro caso, el módulo HC-05 está etiquetado como ZS-040 y la versión es 2.0-20100601.

N.B .: Si no funciona, compruebe la conexión, la conductividad de los cables y la velocidad de comunicación (velocidad en baudios).

No dude en dejar un comentario si tiene problemas para configurar su módulo Bluetooth HC-05.

Configuración del módulo esclavo

Para el modo esclavo, puede cambiar el nombre escribiendo AT + NAME = HC05-Slave y elegir los parámetros de comunicación y la contraseña que desee. Deberá asegurarse de que sean iguales a los del módulo maestro.

  • AT retourne OK
  • AT+NAME=HC05-Slave
  • AT+UART=9600,0,0
  • AT+ROLE=0
  • Ingrese AT + ADDR para obtener la dirección del módulo esclavo (en nuestro caso, +ADDR:98d3:32:21450e)

Para el módulo esclavo, también puedes usar un módulo HC-06.

Configuracion del Modulo Maestro

Para el modo maestro, se debe cambiar la función del módulo y elegir los mismos parámetros de comunicación que para el módulo esclavo

  • AT retorno OK
  • AT+NAME=HC05-Master
  • AT+UART=9600,0,0
  • AT+ROLE=1
  • Se debe registrar la dirección del módulo esclavo para que el módulo maestro pueda emparejarse: AT + BIND = 98d3,32,21450e (reemplace los dos puntos «:» con comas «,»)

Diagrama de cableado para la comunicación

En el modo de comunicación, el pin Clave / EN no debe estar encendido.

Cuidado:

  • Utilizamos los pines 2 y 3 de Arduino Uno. Dependiendo del microcontrolador, algunos pines pueden no soportar la comunicación en serie. Especialmente, Arduino Mega, Micro y Leonardo. Consulta la documentación.
  • Dado que el módulo Bluetooth utiliza la lógica de 3,3V, se aconseja añadir un divisor de tensión para reducir la tensión de 5V de Arduino. (resistencia 1k entre pin3 y Rx; 2k Ohm entre Rx y GND).

Codigo de comunicacion

Cuando los módulos están configurados, puede desenchufar la llave de contacto o EN, cargar los siguientes códigos en dos placas Arduino y encender su HC-05 para ingresar al modo de comunicación.

En cuanto al módulo HC-06, usamos la biblioteca SoftwareSerial.h que aquí tiene algunas funciones:

  • SoftwareSerial hc05(Rx,Tx) Para definir el puerto serie y los pines para la comunicación
  • hc05.begin()para establecer la velocidad de comunicación
  • hc05.available()para probar si los datos están disponibles en el búfer del puerto serie
  • hc05.read()para leer datos de puerto serie, un byte a la vez
  • hc05.print()para enviar una cadena en ASCII
  • hc05.write()para enviar datos, un byte a la vez.
  • hc05.flush()para vaciar los datos del buffer

Codigo Maestro

#include <SoftwareSerial.h>

SoftwareSerial ArduinoSlave(2,3);
String answer;
String msg;

void setup(){

  Serial.begin(9600);
  Serial.println(F("ENTER Commands:"));
  ArduinoSlave.begin(9600);
                
}

void loop(){
  //Read command from monitor
  readSerialPort();
  
  //Read answer from slave
   while (ArduinoSlave.available()) {
   delay(10);  
   if (ArduinoSlave.available() >0) {
     char c = ArduinoSlave.read();  //gets one byte from serial buffer
     answer += c; //makes the string readString
   }
 }
  //Send data to slave
  if(msg!=""){
    Serial.print(F("Master sent : "));
    Serial.println(msg);
    ArduinoSlave.print(msg);
    msg="";
  }
  //Send answer to monitor
  if(answer!=""){
    Serial.print(F("Slave recieved : "));
    Serial.println(answer);
    answer="";
  }
}

void readSerialPort(){
 while (Serial.available()) {
   delay(10);  
   if (Serial.available() >0) {
     char c = Serial.read();  //gets one byte from serial buffer
     msg += c; //makes the string readString
   }
 }
 Serial.flush();
}

Code Esclave

#include <SoftwareSerial.h>

SoftwareSerial ArduinoMaster(2,3);
String msg;

void setup(){
  Serial.begin(9600);
  ArduinoMaster.begin(9600);    
}

void loop(){
  readSerialPort();
  
  // Send answer to master
  if(msg!=""){
    Serial.print(F("Master sent : ") );
    Serial.println(msg);
    ArduinoMaster.print(msg);
    msg=""; 
  }
}

void readSerialPort(){
 while (ArduinoMaster.available()) {
   delay(10); 
   if (ArduinoMaster.available() >0) {
     char c = ArduinoMaster.read();  //gets one byte from serial buffer
     msg += c; //makes the string readString
   }
 }
 ArduinoMaster.flush();
}

Si abre los dos monitores en serie correspondientes y escribe un comando en el monitor de la tarjeta maestra, puede ver el siguiente resultado: la tarjeta maestra envía una cadena de caracteres que la tarjeta esclavo recibe y devuelve. Esto asegura que la comunicación vaya bien en ambas direcciones.

Si tiene problemas para configurar o comunicarse con su módulo Bluetooth HC-05, no dude en contactarnos o dejar un comentario.

Application

¿Y qué harías si tu placa Arduino pudiera comunicarse con otros sistemas? No dudes en respondernos en el comentario.

Source

Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 5 / 5. Recuento de votos: 1

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en los medios sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?