Domotica Final
Domotica Final
Domotica Final
AUTORES:
Tatiana Fajardo
Tatiana Plaza
Bryan Velázquez
Andrés García
32 de Mayo 2018
Introducción:
Los beneficios que aporta la Domótica son múltiples, y en general cada día surgen nuevos. Por
ello creemos conveniente agruparlos en los siguientes apartados:
d) La teleasistencia.
e) La gestión remota (v.gr. vía teléfono, radio, internet, Tablet, consola juegos, etc.) de
instalaciones y equipos domésticos.
f) Como consecuencia de todos los anteriores apartados se consigue un nivel de confort muy
superior. Nuestra calidad de vida aumenta considerablemente.
Se podría decir que las desventajas son realmente pocas con respecto a las ventajas, pero se
pueden mencionar las siguientes:
-Al ser relativamente nueva su aplicación se pueden experimentar fallos en los sistemas, etc.
-Se puede dar un entorpecimiento del usuario, dependiendo del grado de automatización del
sistema
Ventajas de Arduino
Una curva de aprendizaje mucho más rápida. Podemos invertir el tiempo invertido en nuestros
proyectos para desarrollar otras aplicaciones o aprender cosas nuevas. El alcance de un
proyecto en un tiempo delimitado, partiendo de cero, indudablemente con Arduino
llegaremos más lejos. No quiere decir que sea óptimo, sin embargo, completamente funcional
seguramente.
Una gran comunidad con mentalidad “Open Source”. ¿Para qué hacemos algo que alguien más
ya hizo? Recordemos: “Solos llegamos más rápido pero juntos llegamos más lejos”. Y
aprovechamos para sugerir que compartan sus resultados y/o avances, bibliotecas,
programas, ejemplos, etc.
2
Un entorno de desarrollo minimalista no es precisamente una ventaja para un proyecto
profesional o parar analizar miles de líneas de código, sin embargo, si lo es para la mayoría de
los desarrollos a los que está orientado Arduino. Podemos descargar el Arduino IDE y
comenzar a programar en menos de 20 minutos, en algunos IDEs (si no es que en la mayoría)
necesitamos descargar el IDE y además el compilador en C, como el C18 o C30 para los PICs y
dsPICs respectivamente, o el WinAVR para los AVRs. Además del aspecto de licencias que eso
no lo tocaremos como ventaja o desventaja. ¡No necesitas programador! aunque igual puedes
instalar el bootloader con casi cualquier microcontrolador, sin embargo, Arduino lanzo a las
masas el uso del bootloader y sigue siendo una de las cosas más cómodas a la hora de usar
Arduino. Son pocas las tarjetas que hacen uso de esta tecnología, la mayoría de las tarjetas de
desarrollo acoplan un programador ICSP embebidos en sus tarjetas de prueba o desarrollo.
Objetivos
Objetivos Generales
Objetivos Específicos
Los objetivos específicos han sido todo un reto, ya no por la parte de lo q es el desarrollo del
proyecto sino también por parte de solucionar todos los problemas que se han ido sucediendo
a la hora del montaje real.
Por un lado, se ha tenido el reto de compaginar en este proyecto tanto software como
hardware.
3
todo junto al software para que al unísono se pudiese cumplimentar el proyecto en su
totalidad.
Metodología
En este apartado se va a explicar con detenimiento los bloques del proyecto y todos los
elementos requeridos para poder llevarlo a cabo.
Control de iluminación
Cuando presionamos el on de cualquier circuito de estos 3, la placa nos dará una salida high
de 5v la cual llevamos al relé correspondiente para conectar el circuito.
Por otro lado, se tuvo una serie de problemas, ya que la placa al conectarla al módulo de relés
cuando se accionaba uno o varios caía la tensión y se nos bloqueaba el servidor, la forma de
solucionarlo fue aislando el módulo de relés con su propia fuente independiente de la que
alimenta al Arduino Cabe anotar que esto lo realizamos en todos los circuitos.
Automatización de persianas
Este bloque es uno más que se controla a través de la interface del servidor que hemos creado,
lo que sí que se tuvo que preinstalar fue una persiana con motor.
La salida correspondiente para cada caso está conectada a su relé el cual la parte de fuerza
trabaja a 12v, la peculiaridad en este circuito es que para evitar problemas si se accionan los
dos botones de subir y bajar a la vez y poder llegar a quemar el motor lo que se hizo fue lo
siguiente:
4
De esta forma se evita tener cualquier accidente en nuestra instalación.
Arduino Uno
5
El Arduino Uno R3 utiliza el microcontrolador ATmega328. En adición a todas las
características de las tarjetas anteriores, el Arduino Uno utiliza el ATmega16U2 para el manejo
de USB en lugar del 8U2 (o del FTDI encontrado en generaciones previas). Esto permite ratios
de transferencia más rápidos y más memoria. No se necesitan drivers para Linux o Mac (el
archivo inf para Windows es necesario y está incluido en el IDE de Arduino).
El Arduino es una plataforma computacional física open-source basada en una simple tarjeta
de I/O y un entorno de desarrollo que implementa el lenguaje Processing/Wiring. El Arduino
Uno R3 puede ser utilizado para desarrollar objetos interactivos o puede ser conectado a
software de tu computadora (por ejemplo, Flash, Processing, MaxMSP). El IDE open-source
puede ser descargado gratuitamente (actualmente para Mac OS X, Windows y Linux).
Nota: Esta plataforma requiere la carpeta de drivers Arduino 1.0 para poder instalarlo de
forma apropiada en algunos computadores. Hemos testeado y confirmado que el Arduino Uno
R3 puede ser programado en versiones anteriores del IDE. Sin embargo, la primera vez que
uses el Arduino en una nueva computadora deberás tener el Arduino 1.0 instalado en la
máquina. Si estás interesado en leer más acerca de los cambios en el IDE, revisa las notas
oficiales de Arduino 1.0.
Características principales:
Microcontrolador ATmega328.
6 entradas análogas.
Entorno de programación
IDE Arduino
Dado que el Arduino es como un pequeño ordenador que ejecuta una serie de códigos que
previamente le hemos introducido, necesitaremos un programa para poder meter estos
códigos a la propia placa. Este programa se llama IDE, que significa "Integrated Development
Environment" ("Entorno de Desarrollo Integrado")
6
Este IDE estará instalado en nuestro PC, es un entorno muy sencillo de usar y en él
escribiremos el programa que queramos que el Arduino ejecute. Una vez escrito, lo
cargaremos a través del USB y Arduino comenzará a trabajar de forma autónoma.
El siguiente paso que realizaremos será configurar nuestro IDE para que se comunique con
nuestra placa Arduino. Para ello conectaremos nuestro Arduino mediante el cable USB al PC y
después de que el sistema operativo haya reconocido e instalado la tarjeta automáticamente,
nos dirigimos a la zona de menú, pulsamos en Herramientas y después en Tarjeta. Ahí
seleccionamos el modelo de tarjeta Arduino que tengamos, en nuestro caso "Arduino Uno".
7
Después vamos a la opción Puerto Serial y elegimos el COM en el que tenemos conectado nuestro Arduino.
8
Si nos aparecieran varios COM activos, porque estemos usando otros dispositivos serial o por
otro motivo, el cual suele pasar muy a menudo para saber cuál de ellos es el que se comunica
con nuestra placa, solo tenemos que irnos al Panel de control/Hardware/Administrador de
dispositivos. Miramos la pestaña (Puertos COM y LPT)y ahí nos aparecerá nuestro Arduino y
el COM en el que está conectado. Con esto, ya podemos empezar a programar nuestro
Arduino.
Métodos de conexionado
Mediante cableado
Este método empleado en nuestra instalación entre emisores y receptores es mediante cable,
por el cual transmiten estos una señal (voltaje).
En nuestro caso cada señal emitida o recibida tiene una acción o reacción concreta.
9
En la instalación real se ha utilizado cable normalizado de 1.5 mm para alumbrado y de 2.5
mm para persianas y otros elementos.
Para la comunicación con el servidor y los relés y para la instalación de la parte del tanque y la
descalcificadora, se han usado cables multifilares apantallados para evitar los corrientes
parasitas generadas por los campos magnéticos en el caso d la descalcificadora, por el motor
del grupo de presión que hay junto a ella y en el caso de la vivienda por la instalación de la
vivienda ya que no estaba acondicionada desde obra para una ampliación de domótica.
Inalámbrico
10
Bluetooth
Bluetooth funciona en las frecuencias entre 2.402 y 2.480 MHz o 2400 y 2483,5 MHz
incluyendo las bandas de guarda de 2 MHz de ancho en el extremo inferior y 3,5 MHz de ancho
en la parte superior. Esto es en el nivel global sin licencia (pero no reglamentada) Industrial,
Científica y médica ( ISM ) banda de frecuencia de radio de corto alcance a 2,4 GHz. Bluetooth
utiliza una tecnología de radio llamada espectro ensanchado por salto de frecuencia.
Bluetooth divide en paquetes de datos transmitidos, y transmite cada paquete en uno de los
79 canales designados Bluetooth. Cada canal tiene un ancho de banda de 1 MHz. Por lo general
lleva a cabo a 800 saltos por segundo, con adaptativo salto de frecuencia (AFH) habilitado.
baja energía Bluetooth utiliza espaciado 2 MHz, que tiene capacidad para 40 canales.
Sensores
Sensor de ultrasonidos
11
El sensor de ultrasonidos se enmarca en los sensores para medir distancias o superar
obstáculos, entre otras posibles funciones.
En este caso vamos a utilizarlo para la medición de distancias. Esto lo consigue enviando un
ultrasonido (inaudible para el oído humano por su alta frecuencia) a través de uno de la pareja
de cilindros que compone el sensor (un transductor) y espera a que dicho sonido rebote sobre
un objeto y vuelva, retorno captado por el otro cilindro.
Este sensor en concreto tiene un rango de distancias sensible entre 3cm y 3m con una
precisión de 3mm.
Posee 4 patilla, 2 de alimentación (5v y gnd) y luego ping y eco, por la de eco es la que emite
el ultrasonido y por la de eco la recibe, entonces dependiendo del tiempo en que tarda en
llegar la onda se calcula la distancia a medir.
12
Otros sensores útiles en domótica
Se puede utilizar para cuando tengamos poca luz en el balcón, que se recoja el toldo, o en el
interior de la vivienda para cuando se haga de noche se conecte una escena con las luces que
deseemos.
13
Indicada especialmente para su aplicación como interruptor crepuscular, baliza de encendido
automático, dimmers, barreras fotoeléctricas, etc.
Este sensor, se puede utilizar para mandar la información a una pantalla lcd o tft y hacerla
funcionar como una estación meteorológica para el exterior de la vivienda e incluso para el
interior también.
Alimentación: 3-5V
Consumo máximo de corriente 2.5mA
Humedad: 20-80% con precisión del 5%
Temperatura: 0-50ºC precisión +/-2ºC
Tamaño: 15.5mm x 12mm x 5.5mm 4
pines con separación 2.54mm. –
14
-Sensor de consumo eléctrico
Puede ser útil para saber el consumo real de nuestro hogar almacenando los datos en un sd
cada cierto tiempo y hacer nosotros un algoritmo con el código para que nos muestre el
consumo real que tenemos en nuestra vivienda en ese mes.
Para evitar fugas de gas y posibles incendios conectándolo a una electroválvula a través de un
relé para que si el sensor se acciona nos corte el suministro de gas.
15
Debido a que Arduino está muy extendido en todo el planeta la lista de sensores sería
prácticamente interminable, ya que existen sensores para casi todas las necesidades de una
vivienda y volvemos a hacer hincapié de que son muy económicos de ahí su gran éxito entre
los aficionados a la electrónica, informática, mecánica etc.…
Presupuesto
Total 349.53
16
Como se puede apreciar, el presupuesto total es de 349.53 dólares, es un precio un poco
elevado ya que, aunque la materia es relativamente barata, se han utilizado una gran cantidad
de horas para el desarrollo y el montaje de este proyecto, cabe añadir que si se tuviese que
instalar en una vivienda su precio bajaría considerablemente ya que todo el código necesario
que es en la parte que más horas se han dedicado ya está creado.
El costo de horas es de 5 dólares por cada hora empleando 6 horas diarias durante 8 días tiene
un costo de 240 dólares.
int izqA = 5;
int izqB = 6;
int derA = 9;
int retardo=100;
int analogo=0;
int T = 1000;
int U = 50;
void setup() {
17
Serial.begin(9600); // inicia el puerto serial para comunicacion con el Bluetooth
servo1.attach(4);
pinMode(derA, OUTPUT);
pinMode(derB, OUTPUT);
pinMode(izqA, OUTPUT);
pinMode(izqB, OUTPUT);
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
pinMode(8,OUTPUT);
pinMode(7,OUTPUT);
pinMode(4,OUTPUT);
pinMode(3,OUTPUT);
pinMode(2,OUTPUT);
delay(100);
void loop() {
if(estado== 'o' ){
digitalWrite(8, HIGH);
delay(T);
18
digitalWrite(8, LOW);
delay(T);
if(estado== 'k' ){
digitalWrite(8, LOW);
estado = Serial.read();
digitalWrite(13,HIGH);
if(estado== 'e' ){
digitalWrite(13,LOW);
if(estado== 'f'){
digitalWrite(12,HIGH);
if(estado== 'g' ){
digitalWrite(12,LOW);
if(estado== 'h'){
digitalWrite(11,HIGH);
if(estado== 'i' ){
19
digitalWrite(11,LOW);
if(estado== 'l' ){
digitalWrite(7,HIGH);
if(estado== 'm' ){
digitalWrite(7,LOW);
if(estado== 'n' ){
digitalWrite(2,HIGH);
if(estado== 'p' ){
digitalWrite(2,LOW);
analogWrite(3,0);
if(estado=='2'){
analogWrite(3,3);
if(estado=='3'){
analogWrite(3,8);
20
if(estado=='4'){
analogWrite(3,20);
if(estado=='5'){
analogWrite(3,30);
if(estado=='6'){
analogWrite(3,60);
if(estado=='7'){
analogWrite(3,125);
if(estado=='8'){
analogWrite(3,255);
servo1.write(0);
if(estado== 'B' ){
servo1.write(90);
if(estado== 'C' ){
servo1.write(180);
analogWrite(derB, 0);
21
analogWrite(derA, vel);
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
analogWrite(derA, 0);
analogWrite(derB, vel);
analogWrite(izqB, 0);
analogWrite(izqA, vel);
analogWrite(izqA, 0);
analogWrite(izqB, vel);
if(estado== 'T' ){
22
digitalWrite(13, HIGH);
digitalWrite(12, HIGH);
digitalWrite(11, HIGH);
digitalWrite(8, HIGH);
digitalWrite(7, HIGH);
digitalWrite(3, HIGH);
digitalWrite(2, HIGH);
delay(U);
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(8, LOW);
digitalWrite(7, LOW);
digitalWrite(3, LOW);
digitalWrite(2, LOW);
delay(U);
if(estado== 'U' ){
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(8, LOW);
digitalWrite(7, LOW);
digitalWrite(3, LOW);
digitalWrite(2, LOW);
23
}
analogo=analogRead(A0);
Serial.print(analogo);
Serial.println("°C");
delay (retardo);
estado=0;
delay(retardo);
24
Radar
#include <Servo.h> // Añade la libreria Servo
// CONFIGURACIÓN:
int trigPin = 9;
int servoMin = 700; // Anchura del pulso, en microsegundos, correspondiente al mínimo (0 grados) ángulo
en del servo (por defecto 544)
int servoMax = 2700; // Anchura del pulso, en microsegundos, correspondiente al máximo (180 grados)
ángulo en del servo (por defecto 2400)
void setup() {
25
}
void loop() {
leftRightServo.write(leftRightPos);
for (index = 0; index<numReadings; index++) { // Repite tantas veces como número de lecturas en cada
posicion
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH, 17400); // Devuelve la longitud del pulso del pin Echo en us (3metros
maximo)
if (!duration){ // Si la duracción es 0
26
Serial.print(leftRightPos); // Posición del servo
leftRightServo.write(leftRightPos);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
if (!duration){
duration = 17400;
distance = duration/58;
delay(10);
//average es el promedio
average = total/numReadings;
total = 0;
Serial.print("X");
Serial.print(leftRightPos);
27
Serial.print("V");
Serial.println(average);
Referencias
En este apartado , se quiere hacer referencia y agradecer a todas las webs, blogs, chats,
libros etc.,,las cuales se han consultado y que gracias a ellas se ha podido concluir este
proyecto.
- www.arduinodhtics.weebly.com
- www.domoactualidad.bogspot.com.es
- www.hetpro-store.com
- www.electronica-teoriaypractica.com
- www.Arduino.cl//Arduino.cc
- www.openwebinaris.net
- www.wikipwdia.org
- www.Raulcarretero.com
- www.latiendadomotica.com
- www.Prometec.net
28