Subido por francisco plaza molina

PrácticaFINAL F.PLAZA

Anuncio
PRÁCTICA FINAL
2019
DOMÓTICA
Francisco Plaza Molina
DNI. 08893258D
1254326
1. MEMORIA.
Se nos ha planteado dar solución al control domótico de un edificio. El edificio deberá
tener como función básica la seguridad, que se resume en que no se puede establecer
ninguna actividad en la vivienda si no esta habilitada mediante un código de seguridad,
y que permanecerá en el estado habilitado hasta que de manera similar se deshabilite.
También deberán existir funcionalidades de confort :
–
–
Control de luminosidad, debe permitir el encendido apagado de luces de manera
total o selectiva, cuando se habilita la seguridad del edificio se apagaran todas.
Control de temperatura debe permitir activar y desactivar los elementos
necesarios para calentar o enfriar la vivienda.
Para la realización del problema se nos pide además que usemos el protocolo KNX, por
lo que a la hora de colocar los distintos elementos domóticos así como a la hora del
cableada habrá que tener en cuenta este protocolo y sus características.
2. DESARROLLO.
2.1 Determinación de las características de funcionamiento de cada una de las
funcionalidades deseadas.
Las distintas funcionalidades definidas en el enunciado del problema son las siguientes:
1. Establecimiento de un sistema de seguridad resumido en que no se puede
realizar ninguna actividad en la vivienda si no está habilitada mediante un
código de seguridad.
Para conseguir establecer esta funcionalidad se ha utilizado un teclado matricial
conectado al bus principal y mediante lenguaje informático el objetivo ha sido conseguir
que hasta la correcta introducción de una clave determinada no funcione nada en el
hogar salvo el detector de intrusión, que al revés que todo lo demás deberá desactivarse
mientras el sistema de seguridad esté activo.
2. Detección de intrusión.
Para esta funcionalidad hemos utilizado distintos sensores de movimiento PIR
colocados en distintos puntos del hogar con la clara idea de cubrir todo los espacios del
mismo, en el punto anterior ya se ha explicado cual es el funcionamiento de este
detector de intrusión.
3. Control de luminosidad.
Esta funcionalidad ha sido sencilla de implementar colocando un sensor fotosensible
LDR en el exterior que dará un voltaje alto siempre el que el valor leído desde el mismo
esté por debajo de un determinado valor.
4. Control de temperatura.
Esta funcionalidad también ha sido sencilla de implemetar, al igual que en el caso
anterior se ha colocado un sensor térmico, en este caso en el interior del hogar, y en el
momento que la temperatura medida está por debajo del valor que consideremos
nosotros la calefacción se encenderá.
2.2 Pseudolenguaje la lógica de funcionamiento del sistema.
Con el siguiente código de arduino funcionarían las cuatro funcionalidades descritas en
el apartado 2.1.
#include <Keypad.h>
const byte rowsCount = 4;
const byte columsCount = 4;
char *clave="1234";
char *introducida="xxxx";
int indiceTeclado=0;
char keys[rowsCount][columsCount] = {
{ '1','2','3', 'A' },
{ '4','5','6', 'B' },
{ '7','8','9', 'C' },
{ '*','0','#', 'D' }
};
const byte rowPins[rowsCount] = { 11, 10, 9, 8 };
const byte columnPins[columsCount] = { 7, 6, 5, 4 };
Keypad keypad = Keypad(makeKeymap(tecla), rowPins, columnPins, rowsCount,
columsCount);
//Hasta aquí todo son variables para el correcto funcionamiento del teclado y su
activación con la contraseña
float tempC;
float temp;
int pinLM35=0;
int Tdeseada=25;
int Calefaccion= x
//variables para el sensor tértmico
int LUZ = x;
int ldrPin = A5;
int luzmedida=0;
int umbralLUZ=100;
//Variables para el sensor fotosensible
int ALARMA = x;
// pin activación sistema aviso detección intruso
int PIRPin = x;
int estadoMov=0;
// pin de entrada (PIR sensor)
int acierto=1;//Esta variable se actualiza cada vez que introducimos la clave de forma
correcta, de forma que si el valor es impar la seguridad estará activada y si es par
estará desactivada
void setup() {
Serial.begin(9600);
pinMode(Calefaccion,OUTPUT);
digitalWrite(Calefaccion,LOW);//pin para activar calefacción
pinMode(Luces, OUTPUT);
pinMode(LdrPin, INPUT);
digitalWrite(Luces,LOW);//pin para luces
pinMode(ALARMA, OUTPUT);
pinMode(PIRPin, INPUT);
}
void loop() {
tempC = analogRead (pinLM35);//lectura sensor
temp= (5.0*tempC*100.0)/1024.0;//conversión a ºC
if (temp<Tdeseada){
digitalWrite(Calefaccion,HIGH);
}
else{
digitalWrite(Calefaccion,LOW);
}//Con este sencillo if else ya tenemos diseñada nuestra calefacción
//INICIO CODIGO SEGURIDAD
tecla=teclado.getKey();
if (tecla != NO_KEY)//si se presionó una tecla
{
if (tecla == '#')//si tecleamos el caracter "#" del KeyPad comprobaremos si
abrir la puerta, y reiniciaremos clave introducida
{
if (indiceTeclado==4) // Si no hemos introducido cuatro caracteres, ni
comprobamos
{
bool coincide=true;
for (int i=0;i<4;i++){
if (clave[i]!=introducida[i])
{
coincide=false;
Serial.println(" ");
Serial.println("Clave INCORRECTA");
Serial.println(" ");
break; //si uno de los caracteres no coincide, salimos del bucle
}
}
if (coincide)
{
Serial.println(" ");
Serial.println("Usuario Autorizado. Bienvenido");
Serial.println(" ");
acierto++;
}
}
Serial.println();
indiceTeclado=0; // Siempre que se pulse # "borramos" la clave
}
else
// Si la tecla no es #
{
if (indiceTeclado < 4) // Cuando existan ya cuatro caracteres "pasamos de
recibir más"
{
introducida[indiceTeclado]=tecla;
indiceTeclado++;
Serial.print(tecla);
}
}
}
if (acierto % 2== 0){//si es par significa que hemos introducido la contraseña,
por lo que hemos de activar las luces
acierto=acierto/2; // dividimos para que no se nos llene la memoria al
aumentar el valor de acierto
luzmedida = analogRead(ldrPin);
if(luzmedida<umbralLUZ){//si estamos por debajo del humbral encendemos
luces
digitalWrite(LUZ,HIGH);
}
else{
digitalWrite(LUZ,LOW);
val = digitalRead(PIRPin);
if ( estadoMov == HIGH) //si está activado
{
digitalWrite(ALARMA, HIGH); //Se activa la alrma
if (estadoMov == LOW) //si previamente estaba apagado
{
estadoMov = HIGH;
}
}
else //si esta desactivado
{
digitalWrite(ALARMA, LOW); // Alarma OFF
if (estadoMov == HIGH) //si previamente estaba encendido
{
estadoMov = LOW;
}
}
else{//si no es par significa que la seguridad está activada y tenemos que
desactivar el sensor de mov
digitalWrite(LUZ,LOW) ;
digitalWrite(ALARMA,LOW)
}
}
A algunos pines se les ha dado valor, a otros se les ha asignado una “x”, ya que no es
importante en este caso donde conectamos los pines sino el funcionamiento en sí del
programa.
2.3 Planos del edificio.
Los planos del edificio se adjuntan en la carpeta comprimida comprimido.
2.4 Material y presupuesto.
Célula fotoconductora LDR GL05AP02
MAX7219-MAX7221 Datasheet
Sensor de movimiento PIR SE-10
Teclado matricial C-5235 (12 teclas)
Sensor temperatura TMP35
Nº
Unidades
Elemento
Precio €
(Unidad)
Total €
1
1
Celula
fotoconductora
1,9
1,9
2
1
MAX7219MAX7221
Datasheet
5,9
5,9
3
4
Sensor de
movimiento PIR
SE-10
13,79
55,16
4
1
Teclado
matricial C5235 (12 teclas)
5,2
5,2
5
1
Sensor
temperatura
TMP35
2,7
2,7
6
10
Bombilla
1,9
19
7
6
Radiador
119,9
719,4
8
150
Cableado (m)
2,5
375
9
32
Mano de obra
20
640
TOTAL
1824,26
Descargar