Todo esta manejado por Bluetooth mediante un app que cree en app inventor.
E estado armando mi proyecto poco a poco, primero fueron las luces, luego un sensor LDR, luego un sensor PIR, esta vez agregue un sensor de temperatura y humedad DTH11 y un ventilador, el cual se active automáticamente dependiendo de la temperatura, pero también poder encenderlo con la app del móvil. Si hay forma de mejorar el codigo, se agradeceria bastante.
Código: Seleccionar todo
#include <DHT.h>
int sensor = 22;
int temp, humedad;
DHT dht (sensor, DHT11);
int led1 = 40; //Luz 1 Comedor
int led2 = 41; //Luz_2_Comedor
int led3 = 42; //Luz_Cocina
int led4 = 43; //Luz_1_Pasillo
int led5 = 44; //Luz_1_Pasillo
int led6 = 45; //Luz_Hab 1
int led7 = 46; //Luz_Hab 1
int led8 = 47; //Luz_Baño
int led9 = 48; //Luz_Garaje
int led10 = 49; //Luz_1_Jardin
int led11 = 50; //Luz_2_Jardin
int led12 = 51; //Luz_3_Jardin
int led13 = 52; //Luz_4_Jardin
int ventilador= 8;
//bluetooth
int estado = 0;
int LDRpin=A1; // define el pin conectado al LDR
int LDRabc=0;
float LDRvoltaje=0; // variable tipo flotante
int alarma=39; //alarma contra intrusos y a la vez de incendios
int piralarma=7; //sensor pir que detecta movimiento
int piralarmaState; //variable para almacenar el valor del sensor pir
void setup(){
Serial.begin(9600);
dht.begin();
pinMode(LDRpin, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(led9, OUTPUT);
pinMode(led10, OUTPUT);
pinMode(led11, OUTPUT);
pinMode(led12, OUTPUT);
pinMode(led13, OUTPUT);
pinMode(alarma, OUTPUT);
pinMode(piralarma, INPUT);
pinMode(ventilador,OUTPUT); //configuracion del ventilador
}
void loop(){
if( Serial.available()>0)
{ estado = Serial.read();
}
if (estado=='s'){ //si estado es igual a "6"
piralarmaState = digitalRead(piralarma); //estado del pir alarma será igual al valor que lea del sensor
if (piralarmaState==HIGH) { //si hay intrusos
digitalWrite(alarma, HIGH); //activa alarma
delay(500);
if (estado=='t'){ //si estado es igual a "7"
digitalWrite(alarma, LOW); //desactiva alarma
}
}
}
switch( estado)
{
case 'a':
digitalWrite(led1, HIGH); // primera luz del interior la casa
break;
case 'b':
digitalWrite(led1, LOW);
break;
case 'c':
digitalWrite(led2, HIGH);
break;
case 'd':
digitalWrite(led2, LOW);
break;
case 'e':
digitalWrite(led3, HIGH);
break;
case 'f':
digitalWrite(led3, LOW);
break;
case 'g':
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH); // luz pasillo ambas encienden a la vez
break;
case 'h':
digitalWrite(led4, LOW);
digitalWrite(led5, LOW); // luz pasillo ambas se apagan a la vez
break;
case 'i':
digitalWrite(led6, HIGH);
break;
case 'j':
digitalWrite(led6, LOW);
break;
case 'k':
digitalWrite(led7, HIGH);
break;
case 'l':
digitalWrite(led7, LOW);
break;
case 'm':
digitalWrite(led8, HIGH);
break;
case 'n':
digitalWrite(led8, LOW);
break;
case 'o':
digitalWrite(led9, HIGH);
break;
case 'p':
digitalWrite(led9, LOW); // ultima luz del interior de la casa
break;
case 'q':
digitalWrite(led10, HIGH);
digitalWrite(led11, HIGH); // lucess del jardin
digitalWrite(led12, HIGH);
digitalWrite(led13, HIGH);
break;
case 'r':
digitalWrite(led10, LOW);
digitalWrite(led11, LOW); //apagamos luces del jardin
digitalWrite(led12, LOW);
digitalWrite(led13, LOW);
break;
case 't':
digitalWrite(alarma, LOW); // ultima luz del interior de la casa
break;
case 'u':
digitalWrite(ventilador, HIGH);
break;
case 'v':
digitalWrite(ventilador, LOW); // encendemos y apagamos ventilador
break;
}
{
LDRabc=analogRead(LDRpin);
LDRvoltaje=LDRabc*(5.0/1023.0);
Serial.print("voltaje LDR: ");
delay(200);
Serial.println(LDRvoltaje);
if(LDRvoltaje<=1.20){
digitalWrite(led10, HIGH);
delay(500);
digitalWrite(led11, HIGH); // luces del jardin encienden de noche
delay(600);
digitalWrite(led12, HIGH);
delay(700);
digitalWrite(led13, HIGH);
delay(800);
}
else {
digitalWrite(led10, LOW);
digitalWrite(led11, LOW); // luces del jardin se apagan de dia
digitalWrite(led12, LOW);
digitalWrite(led13, LOW);
}
}
{
humedad = dht.readHumidity();
temp = dht.readTemperature();
Serial.print("Temperatura:");
Serial.print(temp);
Serial.print("ºC Humedad: ");
Serial.print(humedad);
Serial.println("%");
delay(500);
if (temp < 27){ // si la temp es menor de 27, el ventilador esta apagado
digitalWrite(ventilador, LOW);
}
else
digitalWrite(ventilador,HIGH); // ventilador activado
}
}