Icono del sitio AranaCorp

Tu Arduino se comunica con el módulo HC-05

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

Presentacion del modulo Bluetooth HC-05

El módulo Bluetooth HC-05 tiene 6 pines para realizar la conexió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:

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:

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.

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

Diagrama de cableado para la comunicación

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

Cuidado:

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:

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

Salir de la versión móvil