Mostrar datos de sensor LM35 y ultrasónico por Bluetooth en android

Buenas tardes, antes que nada les saludo y agradezco cualquier tipo de ayuda.

Les explico estoy realizando junto con mis alumnos un sistema que mida la temperatura y nivel del agua de un sistema acuapónico, el sistema ya funciona pero quiero que me muestre los resultados de estos sensores en una app en android, he intentado hacerlo con un chip BT HC 05 y multiples terminales y aplicaciones que he descargado de la playStore y no me muestra nada, si hace la conexión pero no me muestra datos, les dejo el código y la imagen del circuito.

#include <LiquidCrystal.h>
#include <SoftwareSerial.h>

SoftwareSerial BT(13,12);
LiquidCrystal lcd(6 , 7, 5, 4, 3, 2);
float tempC; // Variable para almacenar el valor obtenido del sensor (0 a 1023)
int pinLM35 = 0; // Variable del pin de entrada del sensor (A0)
const int trigPin = 11;
const int echoPin = 10;
long duracion;
int distancCm, distancPul;

void setup() {
BT.begin(9600);
Serial.begin(9600);
lcd.begin(16,2); // Inicializamos la pantalla LCD especificando las dimenciones en este caso 16 x 2
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
BT.println("Hola");

}

void loop() {

   tempC = analogRead(pinLM35); 
   tempC = (5.0 * tempC * 100.0)/1024.0;
  
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

duracion = pulseIn(echoPin, HIGH);
distancCm= duracion*0.034/2;
distancPul = duracion*0.0133/2;

lcd.setCursor(0,0); // Posicion inicial del cursor a mostrar en la pantalla
lcd.print("Dist: "); // Imprimimos el texto distancia que se mostrara en la posicion especificada arriba
lcd.print(distancCm); // Imprimimos la distancia leida desde el sensor
lcd.print(" cm");
delay(1000);
lcd.setCursor(0,1);
lcd.print("Temp: ");
lcd.print(tempC);
lcd.print("  C");
delay(1000);
BT.print(tempC);
delay(10);

}

Profe, en el circuito esta al revés que el código los pines del HC-SR04.

Según circuito

const int trigPin = 10;     //Magenta
const int echoPin = 11;   //Marron

Según código:

const int trigPin = 11;
const int echoPin = 10;
  • El modulo HC-05 esta como maestro o esclavo ?
  • Como se llama la App que pretendes usar ?

Estas enviando un solo dato, que es tempC

NO envias la distancia.

Ahora que leo la respuesta de Kike, me pregunto, no lees los datos en el LCD? Es decir, se ve la distancia y la temperatura?

Cierto... en la práctica si lo solucionamos se me olvidó cambiarlo en el circuito, mis alumnos y yo solos nuevos en arduino, el HC 05 está como esclavo y la app que pretendo usar se llama "Arduino Serial Monitor" de BlueCore tech.... muchas gracias!

surbyte:
Estas enviando un solo dato, que es tempC

NO envias la distancia.

Ahora que leo la respuesta de Kike, me pregunto, no lees los datos en el LCD?

Si solo estamos enviando tempC, lo dejé hasta ahí hasta solucionar como puedo enviar esos datos al BT para leerlos en la app. ¿Esto puede estar causando el error?

Si leemos los datos en la LCD, en la práctica si solucionamos lo de los pines al revés. Saludos.

P.D: mis alumnos y yo somos nuevos en arduino.

juan_1087:
el HC 05 está como esclavo

Pero en el primer mensaje decias que quieres conectar "multiples terminales" y un bluetooth esclavo solo podra conectarse con un maestro.

Logras emparejar desde la App el HC-05 ?
Imagino que hay una forma de seleccionar el HC-05 y luego te debería decir que se logro conectar.

Kike_GL:
Pero en el primer mensaje decias que quieres conectar "multiples terminales" y un bluetooth esclavo solo podra conectarse con un maestro.

Logras emparejar desde la App el HC-05 ?
Imagino que hay una forma de seleccionar el HC-05 y luego te debería decir que se logro conectar.

Quise decir que he probado múltiples apps de terminales bluetooth para android, si logro hacer la conexión correctamente con el HC 05, me sale en la lista para emparejar y si se empareja, pero no me arroja ningún resultado en la terminal.

Buenas tardes nuevamente, logré hacer que funcionara pero solo conectando el sensor de temperatura LM35 y el HC 05 el código es el siguiente:

#include <SoftwareSerial.h>
SoftwareSerial BTserial(10,11); // RX / TX
float tempC;
int pinLM35 = 0;

void setup(){
  BTserial.begin(9600);
  
  }
  void loop(){
    tempC = analogRead(pinLM35);
    tempC = (5.0 * tempC * 100.0)/1024.0;

    BTserial.print("Temperatura");
    BTserial.print(tempC);
    delay(1000);
    }

De esta manera si funciona correctamente a como lo queremos, según nosotros estamos utlizando la misma lógica que con el código anterior, inclusive cambiamos los pines RX y TX al pin 10 y 11 respectivamente ya que en varios tutoriales vimos que utilizaban estos pines para el HC 05. No hemos logrado saber cual es el error en el código anterior. Saludos! espero puedan ayudarnos.

Cualquier par de pines desde 2 a 13 pueden usarse asi que no importa si viste 1000 tutos que usen 10 y 11, no es asi. Yo uso 2/3 y 7/8 para GPS y los modulos SIM8XX o SIM9XX para comunicaciones GPRS.

surbyte:
Cualquier par de pines desde 2 a 13 pueden usarse asi que no importa si viste 1000 tutos que usen 10 y 11, no es asi. Yo uso 2/3 y 7/8 para GPS y los modulos SIM8XX o SIM9XX para comunicaciones GPRS.

Gracias, siempre se aprende algo nuevo.