Go Down

Topic: Problema con datos al emparejar bluetooth (Read 78 times) previous topic - next topic

abraham_mlg

Mar 14, 2019, 04:46 pm Last Edit: Mar 14, 2019, 09:52 pm by abraham_mlg
Hola! tengo un sketck corriendo en arduino nano que recoge datos de temperatura y humedad.

Tengo configurado el Modulo HC06 por SoftwareSerial funcionando, Me conecto con el movil usando la APP "serial bluetooth terminal" y recibo las lecturas.

Hasta ahi todo bien...

El problema ha llegado en el momento que he querido enviar datos desde el movil al arduino y que este modifique parametros.

Al emparejarse el movil con el HC06 recibo por el serial del HC06 esto:


+DISC:SUCCESS

+DISC:SUCCESS+CONNECTING<<74:EB:80:3A:E4:C1

+DISC:SUCCESS+CONNECTING<<74:EB:80:3A:E4:C1CONNECTED


Me duele la cabeza de leer resultados en google, foros y datasheets para que el modulo HC06 no me envie esto cuando emparejo.

Estoy bloqueado, por favor ayuda!!!!!


Codigo:

Code: [Select]


#include <SoftwareSerial.h>
#include <DHT11.h>   // Libreria sensor humedad y temperatura
#include <math.h>
#define LIGHT_SENSOR A0  //Conectar el sensor luminico a A0 del Arduino
float Rsensor; //Resistencia del sensor in K ohmios
SoftwareSerial BT1(7,8);

unsigned long tiempo, tiempo2; //PARA HACER EL DELAY POR MILLIS()
int pin=2;    // entrada de datos del DHT11
DHT11 dht11(pin);
int sensorValue=analogRead(LIGHT_SENSOR);  // Hago global la variable del sensor luminico
int luz=sensorValue;                       // asigna el valor de la foto resistencia
int relehumid=4;                           // rele 2 de la placa
int reledeshum=5;                          // rele 3 de la placa
String control="";
unsigned long lapso=120000;                // asigno el intervalo de tiempo entre lecturas
float temp, hum;
int una;

void setup() {
  
 // Configuro puertos
  BT1.begin(9600);
  delay(1005);
  Serial.begin(115200);
  
  
  pinMode(relehumid,OUTPUT);
  digitalWrite(relehumid,HIGH);
  pinMode(reledeshum,OUTPUT);
  digitalWrite(reledeshum,HIGH);
  una=0;  // doy valor 0 para que se ejecute la primera vez
  tiempo=millis();


}



void loop() {

if (BT1.available()){
 
  while (BT1.available())
  {
     char caracter = BT1.read();
     if (caracter != '\n')
     {
        control.concat(caracter);
     }
     else
     {
       Serial.println(control);    // como falla lo uso para ver lo que interpreto al recibir
         envdatos();
     }
  }
 }
  tiempo2=millis();
  if (tiempo2>(tiempo+lapso)){
  lectura();
  }
  else {
   for (una; una<1;){   // aqui fuerzo la primera lectura
      lectura();
   }
}

}


void lectura() {

   // leo sensores

dht11.read(hum, temp);
int sensorValue = analogRead(LIGHT_SENSOR);  // Fotocelula
      luz=sensorValue;

if (hum > 55 && hum < 65){                
  digitalWrite(relehumid,HIGH);
  digitalWrite(reledeshum,HIGH);
}
else if(hum <= 55){
digitalWrite(relehumid,LOW);
}
else if(hum > 65){
digitalWrite(reledeshum,LOW);
}


tiempo=tiempo2;
una=1;

}

void envdatos(){

  if (control=="Lee"){                    //si recibe Lee envia los datos por BT

  BT1.print("temperatura: ");BT1.println(temp);
  BT1.print("humedad: ");BT1.println(hum);
  BT1.print("luz: ");BT1.println(luz);
  BT1.flush();

  control="";

  delay(1000);

    }
}




Muchas gracias de antemano

SAlu2



Swift

Hola, en primer lugar lee las normas del foro en el cual se indica que debes colocar el código usando las etiquetas correspondientes, ademas el código esta incompleto, falta el voidsetup() y algunas otras funciones.

abraham_mlg

#2
Mar 14, 2019, 09:20 pm Last Edit: Mar 14, 2019, 09:29 pm by abraham_mlg
Gracias por contestar, modificado.
Antes no he dicho que el texto de la conexion no ha aparecido de repente, me he dado cuenta de que como usaba .read(), leia byte a byte y solo gestionaba una letra cada vez y para recibir las lecturas necesitaba enviar "L", como esa letra no aparece en el texto maldito pues no habia problema. Se me ha ocurrido usar letras que no aparezcan en el texto (ningun numero, de la A a la F, la D, I, etc... pero no me parece muy elegante. estoy seguro de que tiene que haber una forma de hacerlo.

SAlu2

Go Up