Módulo BlueTooth HC05 version 3.0 20170601 solo funciona en modo AT

Hola,
Soy nueva en el mundo de Arduino y estoy intentando hacer algo muy sencillo como encender un led a través de Bluetooth. Seguí muchos tutoriales de youtube, leí varios artículos pero no logro dar con la solución. Ya hace 3 días que estoy estancada en este tema.

Tengo un módulo HC 05 version 3.0 20170601 leí en varios sitios que estos suelen traer problemas pero ninguno decía cómo solucionarlo. Aclaro que en modo AT logro ingresar, de hecho verifiqué que ROLE esté asignado en 0 (lo quiero en modo esclavo). El UART es de 9600,0,0.

En modo AT no hay problema alguno pero en modo comunicación no logro que reciba datos desde el móvil (tengo la app Bluetooth serial controller).

El móvil se conecta al módulo HC 05 (la led de este titila de forma espaciada) pero ninguno de los dos recibe los datos que se envían entre ellos.

Este es el último tutorial que seguí y no tuve ningún resultado: Arduino With HC-05 Bluetooth Module in Slave Mode | Martyn Currey

¿Alguna idea acerca de qué puedo hacer?

Tienes que postear el sketch que estas usando(de acuerdo con las normas del foro) y como tienes el modulo conectado al arduino ,para ir descartando cosas,aunque si funciona en modo AT ,se supone que esta bien conectado.

Hola José,
Gracias por contestar. Aquí agrego los datos que faltaban. En modo AT logré hacerlo funcionar con este tutorial:https://cienciaytecno.com/como-conectar-modulo-hc05-version-3-0-20170601-a-arduino/

#include <SoftwareSerial.h>
SoftwareSerial BTserial(10, 11); // RX | TX
 
const long baudRate = 9600; // 9600 para communication mode. 38400 para AT mode
char c=' ';
boolean NL = true;
 
void setup() 
{
    Serial.begin(9600);
    Serial.print("Sketch:   ");   Serial.println(__FILE__);
    Serial.print("Uploaded: ");   Serial.println(__DATE__);
    Serial.println(" ");
 
    BTserial.begin(baudRate);  
    Serial.print("BTserial started at "); Serial.println(baudRate);
    Serial.println(" ");
}
 
void loop()
{
 
    // Read from the Bluetooth module and send to the Arduino Serial Monitor
    if (BTserial.available())
    {
        c = BTserial.read();
        Serial.write(c);
    }
 
 
    // Read from the Serial Monitor and send to the Bluetooth module
    if (Serial.available())
    {
        c = Serial.read();
        BTserial.write(c);   
 
        // Echo the user input to the main window. The ">" character indicates the user entered text.
       // if (NL) { Serial.print(">");  NL = false; }
        //Serial.write(c);
       // if (c==10) { NL = true; }
    }
 
}

El esquema de conexión que estoy usando es este:

En adjuntos dejo una imagen del módulo HC 05 que estoy usando. La verdad es que me sorprende que que no encuentro ninguna imagen de un hc05 que sea igual al mío.

Has probado con la app que usan en el articulo que comentas? https://play.google.com/store/apps/details?id=Qwerty.BluetoothTerminal

Sí, probé con esa apps y otras varias. Ninguna funcionó. De todo esto me llama mucho la atención que funcione sin problemas en modo AT pero en comunicación no.
Estuve leyendo casos de módulos que tienen el mismo firmware que el mío que son vendidos como HC05 pero en realidad no lo son.
Comparando imágenes no veo que mi módulo se parezca mucho a los HC 05. Voy a seguir intentando

Hola! yo compré dos modulos "compatibles" HC5 y HC6 y resultaron que no sirven ni para pisapapeles... solo consegui que aceptaran comandos AT pero de enviar y recibir nada de nada. Probé a comprar otro HC05 y me pasa exactamente lo mismo que a ti. se levanta, acepta AT pero cuando recibe datos escribe basura, he probado todas las velocidades, he probado de todo, he leido todo lo que he encontrado, ya casi entiendo chino...

A ver si hay suerte y algun alma caritativa nos da una solución.

SAlu2

Está pasando algo raro, acaba de empezar a funcionar y para mi no tiene mucha logica, cuando inicio el modulo en modo AT llevando KEY a HIGH consigo hablar con el modulo a 38400… y como dije antes, en cuanto empareja ni envia ni recibe… pero trasteando, despues de revisar y configurar los comandos AT…

haciendo un AT+UART? me devuelve 9600… cuando he iniciado el puerto en 38400…

Termino de revisar los AT, modifico la velocidad del puerto en el sketck…

y voilá… conecto con el telefono y funciona… el modulo me pasa por serial el texto que envio desde el telefono… pero cuando envio desde arduino hacia el telefono solo llega una parte de los datos:

Si mando “hola” al telefono llega “hol”

y si mando esto “12345678901234567890” llega “12345”

He probado con varias modificaciones de sketches y varias app consiguiendo el mismo resultado.

encontré este datasheet que coincide con la version de nuestro HC05:

Y este es el codigo:

#include <SoftwareSerial.h>

SoftwareSerial BT1(10, 11); // RX | TX

void setup()
{ pinMode(8, OUTPUT);
pinMode(9, OUTPUT); // Al poner en HIGH forzaremos el modo AT
digitalWrite(9, HIGH); // cuando se alimente de aqui
delay (500) ; // Espera antes de encender el modulo
Serial.begin(115200);

Serial.println(“Levantando el modulo HC-06”);
digitalWrite (8, HIGH); //Enciende el modulo
BT1.begin(9600);
Serial.println(“Esperando comandos AT:”);

}

void loop()
{

// Keep reading from HC-05 and send to Arduino Serial Monitor
if (BT1.available())
Serial.write(BT1.read());

// Keep reading from Arduino Serial Monitor and send to HC-05
if (Serial.available())
BT1.write(Serial.read());
}

Hola Estef23

En tu sketch tienes que tener sólo Tx, Rx, Vcc y GND, es decir, como si fuese un HC-06, no necesitas de controlar otro pin de tu módulo

Es probable que tengas las terminales de Tx y Rx invertidas en la conexión, ahora explico el porque.

Para configurarlo con comandos AT, es decir cuando cambias el nombre el módulo, la velocidad, etc, la terminales se conectan Rx->Rx y Tx->Tx.

Ya cuando lo has configurado, ahora conecta las terminales
Rx->Tx
Tx->Rx