En este proyecto, el objetivo es medir la temperatura y la humedad relatica utilizando arduino y mostrar los resultados en un dispositivo android.
Para medir la temperatura y la humedad relativa utilizo el módulo DHT-11 y para la conexión con el dispositivo Android utilizo el módulo HC-06
Para la programación de mi placa Arduino UNO utilizaré el IDE de Arduino y para programar el dispositivo android utilizaré App Inventor 2.
El esquema que voy a utilizar es el siguiente:
Nota: el módulo DHT11 que utilizo dispone únicamente de 3 pins, VCC-Data-GND.
Las conexiones son sencillas: Los pines de alimentación (VCC) de los módulos HC-06 y DHT-11 se conectan a los pines 3 y 7 de Arduino respectivamente. Los pines TxD y RxD del HC-06 se conectan a los pines 0 y 1 (RxD y TxT) de Arduino. El pin OUT del DHT-11 se conecta al pin 6 de Arduino
El código de Arduino es el siguiente:
//Añadimos la libreria con la cual trabaja nuestro sensor de temperatura/humedad
#include "DHT.h"
//Definimos el pin 3 de arduino para alimentar el módulo Bluetooth HC-06
#define PinVccHC06 3
//Definimos el pin 7 de arduino para alimentar el módulo de Temperatura DHT-11
#define PinVccDHT11 7
//Definimos el pin 6 de ardunino para conectar el pin OUT del módulo DHT
#define PinOutDHT 6
#define TypeDHT DHT11 //Definimos el tipo de sensor de temperatura
//Configura el pin con el que trabajamos y el tipo de sensor
DHT dht(PinOutDHT, TypeDHT);
float h,t; //variables de humedad y temperatura
char dato;
String readString;
void setup(){
//por defecto, el módulo HC-06 viene configurado 9600 N 8 1
Serial.begin(9600);
pinMode(13,OUTPUT);
pinMode(PinVccHC06,OUTPUT);
pinMode(PinVccDHT11,OUTPUT);
//Alimentamos el módulo HC-06 a 0v
digitalWrite(PinVccHC06,LOW);
//Alimentamos el módulo DHT-11 a 0v
digitalWrite(PinVccDHT11,LOW);
digitalWrite(13,HIGH);
delay(1000);
//Activa los sensores
digitalWrite(13,LOW);
//Alimentamos el módulo HC-06 a 5v
digitalWrite(PinVccHC06,HIGH);
//Alimentamos el módulo DHT-11 a 5v
digitalWrite(PinVccDHT11,HIGH);
delay(1000);
dht.begin(); //Inicializamos el módulo DHT
}
//Antes de ejecutar el programa, hay que vincular el dispositivo android con el módulo de bluetooth HC-06
//La clave por defecto del módulo HC-06 es 1234
void loop(){
//Comprobamos que los valores de t y h son´números. Si es un error enviamos un código de error
LeerDato();
if (readString.length() > 0){
if (readString == "Temp"){
EnviarTemperatura();}
if (readString == "Hum"){
EnviarHumedad();}
}
}
void LeerDato(){
readString ="";
while(Serial.available()) {
delay(10);
if (Serial.available() > 0) { //¿Hay datos en el buffer?
dato = Serial.read(); //Lee el dato
readString += dato; //Lo almacena en readString
}
}
}
void EnviarTemperatura(){
t = dht.readTemperature(); //Lee la temperatura
if (isnan(t)){ //Comprueba que el dato es un número
Serial.print("Error");
} else {
Serial.print(t); //Envía el dato por el puerto serie
}
}
void EnviarHumedad()
{
h = dht.readHumidity(); //Lee la humedad
if (isnan(h)){ //Comprueba que el dato es un número
Serial.print("Error");
} else {
Serial.print(h); //Envía el dato por el puerto serie
}
}
De forma resumida, el programa realiza las siguientes tareas:
- Carga la librería para programar el sensor de temperatura.
- Define en que pins y que modelo de sensor de temperatura vamos a utilizar
- En setup inicializamos tanto el puerto serie que se comunicará con el sensor bluetooth como el sensor de temperatura. Además, alimentamos ambos módulos.
- En loop básicamente llamamos al procedimiento de leer un dato por el puerto serie. Si la lectura es correcta comprobamos si nos solicitan la temperatura o la humedad, realizamos la medición y enviamos el dato por el puerto serie.
El diseño de la aplicación es el siguiente:
El código utilizado es el siguiente:
Variables utilizadas:
Nota: MAC es la dirección de mi módulo bluetooth
Inicializamos:
Conexión Bluettooth:
Lectura de los datos (TimeInterval clock 1 : 1000):
La parte más complicada de entender es seguramente la lectura de los datos. Utilizo la variable Enviar para saber cuando debo enviar la orden de lectura de la temperatura o la humedad y cuando debo esperar a recibir la lectura de dichos datos enviada por la placa arduino. Por otra parte, la variable T la utilizo para alternar la lectura de la temperatura y de la humedad.
Recepción del Texto enviado por Arduino:
Desconexión del módulo Bluetooth:
Salir y cerrar el programa:
Para más información sobre programación en app inventor puedes consultar mi blog appinventoramuete. En la entrada Cliente Bluetooth podrás aprender a utilizar este componente.
Descargas:
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.