Go Down

Topic: Mostrar datos de sensor LM35 y ultrasónico por Bluetooth en android (Read 292 times) previous topic - next topic

juan_1087

May 21, 2019, 08:13 pm Last Edit: May 21, 2019, 11:44 pm by surbyte Reason: Titulo editado
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.

Code: [Select]
#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);

}



Kike_GL

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

Según circuito
Code: [Select]

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


Según código:
Code: [Select]

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 ?
Saludos, Kike_GL

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? Es decir, se ve la distancia y la temperatura?

juan_1087

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!

juan_1087

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.

Kike_GL

Quote from: 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.
Saludos, Kike_GL

juan_1087

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.

juan_1087

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:

Code: [Select]
#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.

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.


juan_1087

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.

Go Up