Buenas, que tal, tengo un problema, necesito enviar datos desde mi componente maestro HC05 (Bluetooth) a un componente esclavo HC06 (Bluetooth). Hasta el momento pude hacer que los datos sean recibidos, en lo que se podria decir "correcto". Ahora, mi problema surge por el lado de que se vuelve basura, quiero decir, inicialmente primero recibe "bien los datos" aunque a veces cambie algun caracter que otro, pero bien... pero despues de un tiempo (creo que cuando configuro los baudios de mi hc06) empieza a mandar los datos pero ya todo con basura, a veces envia la cadena cambiando muchos caracteres, otra veces hace saltos de lineas dejando espacios en blanco y/o imprime dos cadenas una al lado de la otra.
Estuve intentando e investigando y asi llegue a lo que tengo, pero aun asi no logro solucionar el problema de la basura, muchos dicen que es temas de baudios y otros no se, estan peor que yo creo.
Como van a ver, yo configuro el HC06 en el proceso de su ejecucion, esto debido a un problema con la configuracion ya que no me deja modificar con comandos AT en monitor serial los valores (toque algo y quedo asi jeje) pero funciona si hago las sentencias directas desde el setup.
CODIGO MAESTRO
#include <SoftwareSerial.h>
SoftwareSerial miBlue(10, 11);
void setup(){
Serial.begin(9600);
miBlue.begin(9600);
delay(100);
}
void loop(){
if(miBlue.available()){
Serial.write(miBlue.read());
}
if(Serial.available()){
miBlue.write(Serial.read());
}
miBlue.print(" (1,2,3,4,5,6,7,8,9,10,11,12)\t\n");
delay(1000);
}
CODIGO ESCLAVO
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(10, 11); // RX, TX
String datos = "";
String mostrar = "";
int index = 0;
char recived;
void setup() {
Serial.begin(9600);
bluetooth.begin(115200); // Intenta primero con 115200
// Comandos para configurar el módulo
Serial.println("Configurando HC-06...");
sendATCommand("AT+NAMEAutito");
sendATCommand("AT+PIN2305");
sendATCommand("AT+BAUD4"); // Cambiar a 9600 bps
delay(1000);
}
void loop() {
while(bluetooth.available() && recived != '\t'){
recived = bluetooth.read();
if(recived == '(' || recived == ')'){
concatenarDatos(char(recived));
} else {
concatenarDatos(recived);
}
}
if(datos != '\0'){
mostrar = datos;
Serial.println(mostrar);
}
datos = "\0";
recived = "a";
delay(100);
}
void concatenarDatos(char inputData) {
datos += inputData; // Concatenar el carácter al String
}
void sendATCommand(String command) {
Serial.print("Enviando: ");
Serial.println(command);
bluetooth.println(command);
delay(1000);
}
DATOS DE CONFIGURACION DE CADA COMPONENTE POR COMANDO AT
HC-05:
Nombre: BLUE
UART: 9600 baudios
Modo de acceso (CMODE): 0
Direccion bluetooth vinculante: (Direccion MAC del HC06)
PAIR: (Direccion MAC del HC06 con 10 segundos de vinculacion).
HC-06:
Nombre
Codigo vinculacion (PIN)
Baudios: 9600 baudios.
En la imagen pueden ver como esta cargando los datos, los carga bien de la nada, es decir, uno atras del otro (a veces solo voltea los parentesis) y luego comienza a dar saltos de linea y cuando finaliza hace todo ese desastre con basura. No entiendo ya el por que
y aca otro ejemplo de como lo manda, es muy aleatorio esto



