TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: johenrod en 19 de Enero de 2021, 01:10:00

Título: problema con string en bluetooth JDY-31
Publicado por: johenrod en 19 de Enero de 2021, 01:10:00
Cordial saludo, estoy realizando un proyecto con App inventor y un pic, el enlace es un bluettoth "JDY-31" básicamente lo que hace es enviar un carácter y activar un rele, cuando lo hago con un bluettoth HC-05 o HC-06 todo va bien pero, al hacerlo con un JDY-31 cuando se establece la  comunicación o se termina, el bluetooth me envía una serie de datos que me disparan erróneamente el rele (asumo que son string) obviamente no deseo ese disparo erróneo, desearía poder identificar cuando se conecta y desconecta para que esos datos no afecten mi programa. dejo a continuación los datos entrantes al conectar y desconectar, gracias de antemano.

Código: C
  1. +CONNECTING<<A4:CA:A0:74:B2:CB         
  2. CONNECTED              
  3. DECIMAL HEX
  4. 43      2B
  5. 67      43
  6. 79      4F
  7. 78      4E
  8. 78      4E
  9. 69      45
  10. 67      43
  11. 84      54
  12. 73      49
  13. 78      4E
  14. 71      47
  15. 60      3C
  16. 60      3C
  17. 65      41
  18. 52      34
  19. 58      3A
  20. 67      43
  21. 65      41
  22. 58      3A
  23. 65      41
  24. 48      30
  25. 58      3A
  26. 55      37
  27. 52      34
  28. 58      3A
  29. 66      42
  30. 50      32
  31. 58      3A
  32. 67      43
  33. 66      42
  34. 13      0D
  35. 10      0A
  36. 67      43
  37. 79      4F
  38. 78      4E
  39. 78      4E
  40. 69      45
  41. 67      43
  42. 84      54
  43. 69      45
  44. 68      44
  45. 13      0D
  46. 13      0D
  47. 10      0A

Código: C
  1. +DISC:SUCCESS  
  2.        
  3. DECIMAL HEX
  4. 43      2B
  5. 68      44
  6. 73      49
  7. 83      53
  8. 67      43
  9. 58      3A
  10. 83      53
  11. 85      55
  12. 67      43
  13. 67      43
  14. 69      45
  15. 83      53
  16. 83      53
  17. 13      0D
  18. 13      0D
  19. 10      0A
Título: Re:problema con string en bluetooth JDY-31
Publicado por: Eduardo2 en 19 de Enero de 2021, 02:17:36
El primer mensaje es: 
+CONNECTING<<A4:CA:ACONNECTED
0:74:B2:CB

y el segundo:
+DISC:SUCCESS


Una manera es que uses un caracter especial para activación, por ejemplo 0xFF (o el que te guste)
Cuando se recibe un "+" se descartan los caracteres siguientes hasta que se recibe un 0xFF.

Si "+" fuera uno de los caracteres a transmitir se complica un poco, una manera de actuar sería que cada caracter hacia los relays vaya precedido de un 0xFF.


Título: Re:problema con string en bluetooth JDY-31
Publicado por: johenrod en 19 de Enero de 2021, 02:47:26
Gracias Eduardo, no se si te equivocaste en el orden de los datos...
tu me colocaste lo siguiente..
Código: [Seleccionar]
El primer mensaje es:
+CONNECTING<<A4:CA:ACONNECTED
0:74:B2:CB

pero lo que me llega es esto, en ese orden.
Código: [Seleccionar]
+CONNECTING<<A4:CA:A0:74:B2:CB         
CONNECTED
apenas estoy aprendiendo a manejar cadenas y strings, de pronto me puedes dirigir a algún post para hacer lo que me dices? gracias.
Título: Re:problema con string en bluetooth JDY-31
Publicado por: Eduardo2 en 19 de Enero de 2021, 03:22:33
Gracias Eduardo, no se si te equivocaste en el orden de los datos...

Hice un copypaste pero evidentemente me temblaron los dedos  :oops:

Para lo que te digo no necesitás manejar strings, simplemente que cuando tu rutina de recepción reciba un "+" ignore el resto hasta recibir un caracter de activación o ahora que lo pienso, pasados x milisegundos, dado que son mensajes cortos.
Obviamente el "+" (0x2B) no puede formar parte del conjunto de caracteres que normalmente se transmite.

Eso implica una ligera modificación en la rutina de recepción, subí al menos esa parte del código.
Título: Re:problema con string en bluetooth JDY-31
Publicado por: KILLERJC en 19 de Enero de 2021, 08:23:23
Mejor que directametne use un caracter especial como le nombraste.

Es decir use el 0xFF y luego envie lo suyo.

De esa forma solo busca por este caracter y todo lo demas es omitido.

0xFF LargoMensaje Mensaje

Por ejemplo

0xFF 0x01 0x10
0xFF 0x03 0x11 0x45 0x38
Título: Re:problema con string en bluetooth JDY-31
Publicado por: johenrod en 19 de Enero de 2021, 11:42:37
cordial saludo, gracias por sus respuestas...
soy muy novato en esto de la comunicación serial, buscando seguir las sugerencias tome un ejemplo de código de este foro para realizar la comparación, dejo el código, (ademas de esto podrían explicarme por favor por que al recibir los datos aparece una basura en forma de cuadritos),tambien dejo la imagen.
Código: [Seleccionar]
#include <12F675.h>
#include <string.h>
//#device ADC=16

#FUSES NOWDT
#FUSES NOMCLR
//#FUSES NOBROWNOUT
//#FUSES NOLVP
#FUSES PROTECT
#use standard_io(a)
//# use fast_io(b)
#byte portb= 6
#use delay(internal=4MHz)
//#use RS232 (baud = 9600, bits = 8,xmit = pin_b0, rcv = pin_b1,parity = N)
#use RS232 (baud = 9600, bits = 8,xmit = pin_a0, rcv = pin_a1,parity = N,)

char string[10];
char pass[10]="entrar";


void main()
{
/*#asm
   movlw (0B11000000); GPWU = 1, GPPU = 1, T0CS, T0SE, PSA, PS2, PS1, PS0 = 0
   option
   #endasm
*/

SET_TRIS_a(0B000010);

portb=0x00;


 while(true)
 {
  printf("Password: \n\r"); // el password es: entrar
  gets(string);
  if(!strcmp(string, pass))  // cuando la comparación NO es igual, retorna 1
   printf("Password correcto\n\r");
  else
   printf("Error, intente de nuevo\n\r");
 }

}


  - Tienes que ingresar para ver archivos adjuntos -  
Título: Re:problema con string en bluetooth JDY-31
Publicado por: Eduardo2 en 19 de Enero de 2021, 15:30:26
cordial saludo, gracias por sus respuestas...
soy muy novato en esto de la comunicación serial, buscando seguir las sugerencias tome un ejemplo de código de este foro para realizar la comparación, dejo el código, (ademas de esto podrían explicarme por favor por que al recibir los datos aparece una basura en forma de cuadritos),tambien dejo la imagen.
....

 :?: Pero eso es un ejemplo de cualquier otra cosa, no lo que estabas usando.

Ahi tenés un solo error que es que el GPIO no está en la dirección 0x06 sino en la 0x05
Es decir, en lugar de  #byte portb= 6  debe ir  #byte portb= 5   

Los caracteres extraños no es problema del programa sino de configuracion del terminal.
  - Tienes que ingresar para ver archivos adjuntos -  

Título: Re:problema con string en bluetooth JDY-31
Publicado por: johenrod en 19 de Enero de 2021, 16:08:37
Citar
:?: Pero eso es un ejemplo de cualquier otra cosa, no lo que estabas usando.

Ahi tenés un solo error que es que el GPIO no está en la dirección 0x06 sino en la 0x05
Es decir, en lugar de  #byte portb= 6  debe ir  #byte portb= 5   

Los caracteres extraños no es problema del programa sino de configuracion del terminal.

 si , se que al parecer no tiene nada que ver con lo que busco, solo estoy tratando de buscar una solución basada en sus respuestas, y los caracteres raros aun siguen saliendo, me salen con  la terminal de arduino, con realterm y también con terminal v1.93 y en todas muestra esos caracteres raros,
gracias por la paciencia.
Título: Re:problema con string en bluetooth JDY-31
Publicado por: KILLERJC en 19 de Enero de 2021, 16:51:44
Algun problema de configuracion/velocidad de la UART, fijate en el valor hexadecimal de lo que esperas recibir y lo que recibis
Título: Re:problema con string en bluetooth JDY-31
Publicado por: Eduardo2 en 19 de Enero de 2021, 17:42:53
Primero hacelo funcionar en el simulador. Una vez que marcha, por lo menos sabés que el software está bien. 
Después cargalo en el PIC y ves.  Si no, no sabés si el problema es de software, hardware o comunicacion y es mas engorroso debuguear.
Título: Re:problema con string en bluetooth JDY-31
Publicado por: johenrod en 08 de Marzo de 2021, 15:15:35
cordial saludo, luego de cacharear un poco logre eliminar los datos erroneos.
al parecer este bluetooth esta montado en una tajeta generica y le faltan algunas cosas que no se ajustan con la tarjeta donde la montan.
logre quitar el error colocando 2 resistencias de 2,7 k entre las lineas TX y RX a 5 voltios.