Problemas con el módulo Bluetooth HC-05

Claro que es solo un puerto serie.
Claro que se puede conectar directamente con un celular.
Hace falta un programa en el celular, sin él el módulo desconecta.
 
Hola a todos.
Tengo un módulo HC-05 y he tenido algunos problemas configurándolo.
Al conectarlo a la placa no hay ningún problema, entra en modo de conexión y configuración.
El problema es al conectarse con el teléfono, aparece como dispositivo disponible, pero al conectarse se conecta un par de segundos y se desconecta.
También en el monitor serie cuando yo pongo "AT" debería regresarme "OK" pero no me regresa nada.
Ya intenté invirtiendo TX y RX y nada. Estoy usando un HC-05 con botón.

Estoy intentando con este código:
C++:
#include <SoftwareSerial.h>

SoftwareSerial BTserial(2, 3); // RX | TX
  // CONECTA DESDE EL HC-05 TX AL ARDUINO PIN DIGITAL 2.
  // CONECTA DESDE EL HC-05 RX AL ARDUINO PIN DIGITAL  3

char c = ' ';

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

    Serial.println("ARDUINO ESTA LISTO");  // para agregar comados AT

    Serial.println("TENER PRESENTE EN EL MONITOR SERIAL NL & CR");

    //LA VELOCIDAD DE COMUNICACION DEL  HC-05 POR DEFECTO DEL MODO AT ES 38400 EN ALGUNOS CASOS
    BTserial.begin(38400);
}

void loop()
{
    if (BTserial.available())
    {
        c = BTserial.read();
        Serial.write(c);
    }

    if (Serial.available())
    {
        c =  Serial.read();
        BTserial.write(c);
    }
}
 
Estuve investigando un poco, y descubrí que algunos cables de ese tipo solo sirven para pasar corriente, pero no funcionaban para transmitir datos. Ya compré otro por mercado libre y a ver que tal.
 
El baudrate para entrar en el modo de configuración es de 38400 Bps, pero no suele ser el mismo en estado activo.
Aquí veo lo siguiente:
C++:
    //LA VELOCIDAD DE COMUNICACION DEL  HC-05 POR DEFECTO DEL MODO AT ES 38400 EN ALGUNOS CASOS
    BTserial.begin(38400);
Y eso de "en algunos casos" yo creo que es en raros casos, porque en todos los módulos nuevos que he usado, el baudrate por defecto está en 9600 Bps.
Esto se puede comprobar en modo de configuración con el comando AT+UART?
Que debe regresar algo así: +UART:9600,0,0
Para establecer los parámetros UART se hace con el comando AT+UART=<Param>,<Param2>,<Param3>

La hoja de datos muestra que 9600 Bps es por defecto:
HC-05 Default Baudrate.jpg

Verifica el baudrate de operación o realiza una prueba a 9600 Bps.
Por ahora ya no tengo módulos para probar, pero creo recordar que tras un restablecimiento también quedaba en 9600 Bps.
Comando para restablecimiento: AT+RESET

Edit:
Buscando entre mis cacharros encontré un módulo.
Apliqué el comando AT+UART? para conocer el baurate actual . (Anteriormente este módulo fue configurado)
Me apareció lo siguiente:
HC-05 Configurado.jpg
19200 Bps es la configuración UART que tiene ese módulo. (La que seguramente usé)
O sea: 19200, N, 8, 1
Tras un reset "AT+RESET" me seguía apareciendo el mismo baudrate de 19200, así que usé "AT+ORGL"
Con esto ya quedó en 38400 Bps.
HC-05 AT+ORGL.jpg
Con esta prueba se podría considerar que por defecto también serían 38400 en modo activo.
Lo cual contradice lo que está en la hoja de datos, aunque no es algo que preocupe porque esto se puede configurar.

El problema es al conectarse con el teléfono, aparece como dispositivo disponible, pero al conectarse se conecta un par de segundos y se desconecta.
Con respecto a eso, mira lo que se menciona en estos mensajes:
Post #39
Post #41
 
Consulta. Estoy probando el módulo HC-05
Con el bluetooth serial lcontroller bajo y subo PWM pero lo hace lento.
¿Có
mo puedo variar el código para que corra más rápido?

C:
#include <16F883.h>
#FUSES NOWDT
#FUSES HS
#FUSES MCLR
#use delay(internal=4000000)

//-------------------------------------------------------------------------------
#USE RS232(stream=SERIE, BAUD=9600, PARITY=N, XMIT=PIN_C6, RCV=PIN_C7,BITS=8)


#define LED pin_C0
int16 valor=0;

void main(void)
{


   setup_ccp1(CCP_PWM);
   setup_timer_2(T2_DIV_BY_4,249,1);   // 1000 Hz. @ 4 MHz.
   ;

while(!kbhit()) //Pregunta si hay algun dato recibido
while (TRUE)
 {
       
     
     
       char Caracter = getc (); //Guarda el caracter
       if (Caracter == '0')
       {
          output_low (LED); //Apaga el LED
       
       }

       if (Caracter == '1')
       {
          output_HIGH (LED); //Enciende el LED
         
       }

      if (Caracter == 'a')
       {
       delay_ms(5);
             valor+=10;
     
       if( valor > 249) valor=249;
       
         
       
       }
           
         

          if (Caracter == 'b')
          {
           delay_ms(5);
                 valor-=10;
         
          if( valor <= 10) valor=20;
         
             
         
          }
     
      set_pwm1_duty(valor);
     
  }
}
 
Última edición por un moderador:
..encender el led más rápido cuando sostenes el botón y tarda mucho, raro...

Osea que...

En el presente hilo me ocurre que:
a) Mi pregunta no tiene nada que que ver con la velocidad del PWM
b) Lo que quiero es que el PWM cambie más rápido
c) Copié el código de algún sitio y no tengo ni idea de que hace ni como
d) Todas las anteriores son ciertas

Scooter dijo:
¿Serán los delays?
En realidad Scooter lo estaba afirmando pero bueno, lo dejó como pregunta para que el preguntante pensase un poco.

Pregunta 2, ¿Si quitando los delays sigue funcionando lento que vas a hacer?
a) Dejar los delays porque total no importan
b) Hacer que incremente y decremente de dos en dos
c) Poner más delays, si están ahí será que son buenos para algo
d) Volver a preguntar en el foro


PD el pwm de la pi pico es de 16 bits, si lo pruebas verás...

¡Ostras!
¡Que cabeza la mía!

¿A que velocidad está el autorepeat de tu teclado?

Revisa todo, y lo más lento, ¡Eso es!
 
Última edición:
No se, pero debería encender el led más rápido cuando sostenes el botón y tarda mucho, raro... le baje el tiempo a la app de celular, sumo la variable más 10 para que avance, creo que la comunicación con el bluetooth debe ser lenta!
En programación y cuestiones técnicas, no existen ni sirven COSAS como --> MUCHO ó POCO .
Si algo tarda, tenes que decirnos ¿cuanto tarda? y si es rápido ¿ que tan rápido ? ¿0,5 segundos ó 2 horas?

A mi ese número en el código ( 4 millones DELAY no me gustó)

¿Moño grande pidió la maestra o moño chico ?:rolleyes::unsure:
 
Atrás
Arriba