EG-1966-Quisbert Condori, Milenka Liliana PDF
EG-1966-Quisbert Condori, Milenka Liliana PDF
FACULTAD DE TECNOLOGÍA
CARRERA DE ELECTRÓNICA Y
TELECOMUNICACIONES
La Paz – Bolivia
Gestión 2017
Índice
RESUMEN ....................................................................................................................................iv
CAPITULO I ................................................................................................................................. 1
1. PLANTEAMIENTO DEL PROBLEMA .............................................................................. 1
2. JUSTIFICACIÓN DEL TRABAJO....................................................................................... 2
3. OBJETIVOS .......................................................................................................................... 3
3.1. Objetivo General:........................................................................................................... 3
3.2. Objetivos Específicos: .................................................................................................... 3
CAPITULO II ................................................................................................................................ 4
4. FUNDAMENTACION TEORICA........................................................................................ 4
4.1. Domótica........................................................................................................................ 4
4.1.1. Ventajas y desventajas ........................................................................................... 5
4.1.2. Aplicaciones de la domótica .................................................................................. 6
4.1.3. Arquitectura ........................................................................................................... 8
4.1.4. Elementos............................................................................................................... 8
4.1.5. Protocolos .............................................................................................................. 9
4.2. Arduino: ....................................................................................................................... 10
4.2.1. Bibliotecas en Arduino......................................................................................... 11
4.2.2. Hardware.............................................................................................................. 13
4.2.3. Arduino MEGA 2560........................................................................................... 13
4.3. Ethernet Shield W5100: ............................................................................................... 15
4.3.1. Características ...................................................................................................... 16
4.3.2. WIZnet W5100 .................................................................................................... 16
4.3.3. Librería Ethernet .................................................................................................. 17
4.4. TCP/IP........................................................................................................................... 19
4.4.1. Conexión y desconexión ...................................................................................... 20
4.4.2. Direccionamiento IP ............................................................................................ 21
4.4.3. Dirección MAC.................................................................................................... 23
4.5. Protocolo HTTP ............................................................................................................ 23
4.5.1. Métodos de Petición HTTP.................................................................................. 25
ii
CAPITULO III............................................................................................................................. 27
5. DESARROLLO DEL TRABAJO ....................................................................................... 27
5.1. Descripción del sistema ............................................................................................... 27
5.1.1. Áreas a automatizar.............................................................................................. 27
5.2. Elementos del sistema ................................................................................................. 29
5.3. Diseño del Sistema....................................................................................................... 30
5.3.1. Código.................................................................................................................. 33
5.3.2. Circuito final ........................................................................................................ 47
5.3.3. Funcionamiento.................................................................................................... 47
CAPITULO IV............................................................................................................................. 48
6. CONCLUSIONES ............................................................................................................... 48
7. RECOMENDACIONES...................................................................................................... 49
8. BIBLIOGRAFÍA ................................................................................................................. 50
Indice de Figuras
iii
RESUMEN
En la actualidad una de las aplicaciones con mayor auge en la electrónica es la
Domótica. Los alcances de la domótica usando diversas tecnologías nos permiten contar
dentro de una casa, oficina, hospitales, fábricas o cualquier tipo de edificación, con una
amplia variedad de dispositivos electrónicos interconectados entre sí, capaces de
automatizar diversos procesos y brindar el control de estos con mayor facilidad.
En el presente trabajo se describe el diseño e implementación de una maqueta para
simular una casa inteligente, con algunos componentes automatizados, mediante el uso
de una placa Arduino y un Ethernet Shield.
Los escenarios a simular son: la activación de la iluminación en diferentes ambientes,
activación de ventilación cuando se incremente la temperatura, control de apertura y
cierre de puerta, alarma contra fuga de gas e incendios.
También se necesitara algunos conocimientos en programación HTML para el diseño de
la página web, esta página mostrará una interfaz visual, por donde se podrá controlar los
diversos dispositivos que tendrá la vivienda.
El diseño del sistema considera ofrecer una solución de bajo costo, implementable con
elementos comunes en el mercado e integrando el uso de software y hardware libres, los
cuales permiten su adquisición a precios económicos, como es el caso de Arduino. Al
mismo tiempo, este tipo de herramientas permite su modificación para adecuarse en caso
necesario a necesidades específicas, por estar disponibles bajo licencias Open-Source.
Es posible ampliar el alcance de este proyecto; por ejemplo, la comunicación de los
datos desde la placa Arduino hacia la computadora puede realizarse también a través de
internet, de esta manera, la computadora puede localizarse físicamente lejos de la casa,
en cualquier parte donde se juzgue conveniente, para mostrar el estado de los sensores
en tiempo real.
El funcionamiento detallado del sistema se explica en el desarrollo del trabajo, donde se
describirá individualmente cada componente utilizado, así como el funcionamiento del
programa desarrollado para Arduino y la aplicación grafica desarrollada con lenguaje
HTML.
iv
CAPITULO I
1. PLANTEAMIENTO DEL PROBLEMA
En la actualidad estamos viviendo una era de cambio, tanto tecnológico como cultural, el
uso de dispositivos electrónicos debe cambiar para estar a la vanguardia de la tecnología.
La tecnología nos facilita la vida, tanto que las actividades de la cotidianidad pasan a ser
algo más sencillo e intuitivo.
La incertidumbre que existe sobre la evolución de las nuevas tecnologías exige el control
sobre sus efectos sociales y políticos, lo que motiva a estudiar los efectos de estas
nuevas tecnologías como en este caso la domótica. La automatización ha sido muy
importante para la evolución tecnológica que se vino experimentando en los últimos
años, debido a la demanda en las áreas de seguridad y productos inteligentes.
En la actualidad la dinámica productiva enfrenta a las personas e instituciones al desafío
de la eficiencia, la velocidad y la ubicuidad; en el mundo moderno cualquier actividad
que no pueda ser realizada en forma eficiente mediante herramientas remotas representa
una enorme desventaja, tanto competitivamente como de calidad de vida.
Dentro de esta perspectiva, la automatización de los espacios y su dinamización con la
incorporación de herramientas y tecnologías de la información y las telecomunicaciones,
es más que un capricho frívolo gusto superficial, una necesidad inminente; tareas tan
simples como controlar el acceso en entornos con elevados requerimientos de seguridad
se convierte en la vertiginosa dinámica global en un problema, para aquellas
instituciones y personas que no están preparadas. Son múltiples los factores que pueden
caracterizar las formas de vida de las personas hoy en día, como ejemplo, adultos
mayores que viven solos, población con algún tipo de discapacidad y que viven de forma
independiente, incluso los mismos avatares de la modernidad que requieren todo con
prontitud y ahorro del tiempo que no les permite siquiera descender del vehículo. Es así
como, labores tan comunes como abrir o cerrar una ventana o una puerta se convierten
en un problema; pero con la implementación de la domótica en el hogar se disminuye el
grado de dificultad para realizar estas tareas. En el mercado actual se cuenta con un gran
número de aplicaciones de muy alto nivel sobre el tema, las cuales en su mayoría tienen
costos elevados y están pensadas más en generar una experiencia de lujo al cliente que
1
en facilitar el desarrollo de una actividad específica a las personas, por ejemplo para un
departamento de 70 m2 la inversión para obtener la tecnología domótica será entre 5 a 6
mil dólares.
En el país solo existen 50 casas inteligentes, de las cuales Santa Cruz cuenta con el 70%
y el restante 30% están ubicadas en la zona sur de La Paz y la ciudad de Cochabamba.
En comparación de otras ciudades metropolitanas como Sao Paulo (40% de las
viviendas) o Santiago (20%), que incluso han ingresado a la tecnología inalámbrica, con
la premisa de ahorrar energía eléctrica.
2
3. OBJETIVOS
3.1. Objetivo General:
Diseñar de un sistema domótico que mediante una conexión a Ethernet permita
el monitoreo, gestión, control de los diferentes componentes asociados al
sistema.
3
CAPITULO II
4. FUNDAMENTACION TEORICA
4.1.Domótica
Es el conjunto de técnicas que sirven para automatizar viviendas o edificaciones de
cualquier estilo. Integran la tecnología en los sistemas de seguridad, gestión energética,
bienestar o comunicaciones.
El término domótica viene de la unión de las palabras domus (que significa
casa en latín) y tica (de automática, palabra en griego, ‘que funciona por sí sola’).
La domótica se inicia a comienzos de la década del 70, cuando aparecieron los
primeros dispositivos de automatización en edificios, a base de prueba piloto.
Pero fue en la década del 80 cuando los sistemas integrados se utilizaron a nivel
comercial, para luego desarrollarse en el aspecto doméstico de las casas urbanas.
Allí es cuando la domótica consigue integrar dos sistemas (el eléctrico y el electrónico)
en pos de la comunicación integral de los dispositivos del hogar.
El desarrollo de la tecnología informática permite la expansión del sistema, sobre todo
en países de vanguardia como Estados Unidos, Alemania y Japón.
Acorde a los cambios, el auge de la informática hogareña permite incorporar en los
edificios el Sistema de Cableado Estructurado (SCE) que facilita la conexión de
terminales y redes. Así, estos edificios reciben el nombre de “inteligentes”, por su
automatismo al servicio del propietario.
El boom de estos rascacielos de oficinas comerciales fue de gran impacto.
La domótica permitía lograr una eficiencia inédita para el servicio de dispositivos.
El primer programa que utilizó la domótica fue el Save. Creado en Estados Unidos en
1984, que permitió lograr eficiencia y bajo consumo de energía en los sistemas de
control de edificios inteligentes.
Estas instalaciones se regían bajo el sistema X-10, protocolo de comunicaciones que
operaba a través del accionar de un control remoto, desarrollado en 1976 por Pico
Electronics (Escocia), sigue siendo la tecnología más utilizada dentro de la domótica.
Al transmitir datos por líneas de baja tensión, la relación costo-beneficio sigue siendo
la mejor opción en el rubro.
Implantada desde hace más de treinta años, la domótica ha progresado a gran escala
4
desde que se desarrollaron las redes informáticas de comunicación, ya sea por sistema
cableado o vía Wi-Fi.
El avance tecnológico vino a suplir las falencias de los comienzos, hoy en día la
domótica aporta soluciones dirigidas a todo tipo de viviendas, además, se ofrecen más
funcionalidades por menos dinero, más variedad de producto, que gracias a la
evolución tecnológica, son más fáciles de usar y de instalar. En definitiva, la oferta es
mejor y de mayor calidad, y su utilización es ahora más intuitiva y perfectamente
manejable por cualquier usuario. Paralelamente, los instaladores de domótica han
incrementado su nivel de formación y los modelos de implantación se han
perfeccionado.
En definitiva, la domótica de hoy contribuye a aumentar la calidad de vida, hace más
versátil la distribución de la casa, cambia las condiciones ambientales creando
diferentes escenas predefinidas, y consigue que la vivienda sea más funcional al
permitir desarrollar facetas domésticas, profesionales, y de ocio bajo un mismo techo.
a. Ventajas
Contribuye en la disminución del gasto energético a través del control de la
temperatura interna de los cuartos, la iluminación y el control del consumo de
electricidad, teniendo como resultado mayor ahorro y cuidado del medio ambiente.
La comodidad de las casas inteligentes es óptimo, y se logra a través del control
del medio ambiente interno con la programación de horarios específicos para
equipos de climatización, iluminación, etc.
A largo plazo permiten ahorrar y economizar convirtiéndose en casi
autosustentables ahorrando y pagando la inversión que se hizo al hacerlas o
instalarlas.
5
Permiten llevar un control y registro del consumo de energéticos que permite
comparar lo consumido de manera limpia, es decir los recursos que se extrajeron
de recursos renovables a los comunes usados.
Un sistema domótico permite integrar cualquier dispositivo que no sea inteligente
al sistema.
Se puede enlazar con casi cualquier dispositivo con acceso a internet.
b. Desventajas.
La inversión inicial es un poco cara dependiendo del Sistema.
Si el sistema de suministro de energía ya sea almacenado por celdas solares o de
alimentación llega a fallar esta queda inhabilitada casi en su totalidad.
Al ser el internet su principal medio de comunicación se expone al sistema a ser
invadido por algún software malicioso contribuyendo a la manipulación y
monitoreo sin permiso por el usuario principal.
b. Confort
Son todas las actuaciones que se puedan llevar a cabo que mejoren la comodidad en
una vivienda.
6
Este es usado fundamentalmente para, en primer lugar, hacer que las tareas repetitivas
y rutinarias se realicen solas de forma automática, y en segundo lugar, programar
escenas para que el inmueble se adapte a las necesidades de cada persona. Ejemplos:
Apagado general de todas las luces de la vivienda.
Automatización del apagado/ encendido en cada punto de luz.
Regulación de la iluminación según el nivel de luminosidad ambiente.
Automatización de todos los distintos sistemas/ instalaciones / equipos dotándolos
de control eficiente y de fácil manejo.
Integración del portero al teléfono, o del video portero al televisor.
c. Seguridad
Es una red de seguridad encargada de proteger tanto los bienes patrimoniales, como la
seguridad personal y la vida. Esta es también una de las aplicaciones más importante
de la domótica, ya que la figura de la persona que lleva adelante la responsabilidad
global del hogar durante todo el día es cada vez menos frecuente en las familias
actuales; en su reemplazo están los elementos que permiten saber lo que está pasando,
sea de manera local o a distancia.
De una manera general, podemos identificar tres áreas de funciones y servicios en
materia de seguridad: intrusión, técnica, personales. Ejemplos:
Detección de un posible intruso.
Simulación de presencia.
Detección de conatos de incendio, fugas de gas, escapes de agua.
Alerta médica. Tele asistencia.
Cerramiento de persianas puntual y seguro.
d. Comunicación
Son los sistemas o infraestructuras de comunicaciones que posee el hogar. Ejemplos:
Ubicuidad en el control tanto externo como interno, control remoto desde
Internet, PC, mandos inalámbricos
Teleasistencia.
Telemantenimiento.
7
Informes de consumo y costes.
Transmisión de alarmas.
Intercomunicaciones.
Telefonillos y videoporteros.
e. Accesibilidad
Son las aplicaciones o instalaciones de control remoto del entorno que favorecen la
autonomía personal de personas con limitaciones funcionales, o discapacidad.
Esta aplicación ha cobrado mucha importancia en los últimos tiempos ya que le da a la
domótica un toque más humano, permitiendo el alcance de la tecnología a todas las
personas.
4.1.3. Arquitectura
Desde el punto de vista de donde reside la inteligencia del sistema domótico, hay
diferentes arquitecturas:
Arquitectura centralizada: un controlador centralizado recibe información de
múltiples sensores que una vez procesada genera las órdenes oportunas para los
actuadores.
Arquitectura distribuida: toda la inteligencia del sistema está distribuida por todos
los módulos sean sensores o actuadores. Suele ser típico de los sistemas de
cableado en bus, o redes inalámbricas.
Arquitectura mixta: sistemas con arquitectura descentralizada en cuanto a que
disponen de varios pequeños dispositivos capaces de adquirir y procesar la
información de múltiples sensores y transmitirlos al resto de dispositivos
distribuidos por la vivienda, p.ej. aquellos sistemas basados en ZigBee y
totalmente inalámbricos.
4.1.4. Elementos
Para entender la domótica debemos conocer los elementos que intervienen en la
automatización de nuestros hogares:
8
Los sensores son los dispositivos que transmiten información a un ordenador
central encargado de tomar las decisiones. Los sensores pueden ser de presión,
ópticos o acústicos.
Los actuadores son los dispositivos capaces de accionar sistemas
electromagnéticos. Pueden ser simples interruptores que accionan motores
eléctricos, relés para activar o controladores más complejos.
Los sistemas de control son los encargados de decidir en todo momento,
normalmente se trata de un ordenador que se ha programado con las respuestas
que queremos que tenga delante de cada situación.
4.1.5. Protocolos
No se puede entender la domótica, sin conocer el protocolo de comunicaciones,
como lenguaje de comunicación del Sistema Domótico.
A través del protocolo se comunican los diversos dispositivos que componen la red
domótica.
inBus: Es un protocolo de comunicación que permite la comunicación entre
distintos módulos electrónicos, no solo con funciones para la domótica, sino de
cualquier tipo.
X10: Protocolo de comunicaciones para el control remoto de dispositivos
eléctricos, hace uso de los enchufes eléctricos, sin necesidad de nuevo cableado.
Puede funcionar correctamente para la mayoría de los usuarios domésticos. es de
código abierto y el más difundido. Poco fiable frente a ruidos eléctricos.
KNX/EIB: Bus de Instalación Europeo con más de 20 años y más de 100
fabricantes de productos compatibles entre sí.
ZigBee: Protocolo estándar, recogido en el IEEE 802.15.4, de
comunicaciones inalámbrico.
OSGi: Open Services Gateway Initiative. Especificaciones abiertas de software
que permita diseñar plataformas compatibles que puedan proporcionar múltiples
servicios. Ha sido pensada para su compatibilidad con Jini o UPnP.
LonWorks: Protocolo abierto estándar ISO 14908-3 para el control distribuido de
edificios, viviendas, industria y transporte.
9
Universal Plug and Play (UPnP): Arquitectura software abierta y distribuida que
permite el intercambio de información y datos a los dispositivos conectados a
una red.
Modbus: Protocolo abierto que permite la comunicación a través de RS-
485 (Modbus RTU) o a través de Ethernet(Modbus TCP). Es el protocolo libre que
lleva más años en el mercado y que dispone de un mayor número de fabricantes de
dispositivos, lejos de desactualizarse, los fabricantes siguen lanzando al mercado
dispositivos con este protocolo continuamente.
BUSing: Es una tecnología de domótica distribuida, donde cada uno de los
dispositivos conectados tiene autonomía propia, es “útil” por sí mismo.
INSTEON: Protocolo de comunicación con topología de malla de banda doble a
través de corriente portadora y radio frecuencia.
4.2.Arduino:
Arduino es una plataforma de prototipos de electrónica de código abierto (open-source)
basada en hardware y software, flexibles y fáciles de usar. Está pensado para artistas,
diseñadores, como hobby y para cualquiera interesado en crear objetos o entornos
interactivos.
El hardware consiste en una placa de circuito impreso con un microcontrolador,
usualmente Atmel AVR, puertos digitales y analógicos de entrada/salida, los cuales
pueden conectarse a placas de expansión (shields), que amplían los funcionamientos de
la placa Arduino. Asimismo, posee un puerto de conexión USB desde donde se puede
alimentar la placa y establecer comunicación con el computador.
Por otro lado, el software consiste en un entorno de desarrollo (IDE) basado en el
entorno de processing y lenguaje de programación basado en Wiring, así como en
el cargador de arranque (bootloader) que es ejecutado en la placa. El microcontrolador
de la placa se programa mediante un computador, usando una comunicación serie
mediante un convertidor de niveles RS-232 a TTL.
Arduino simplifica el proceso de trabajo con microcontroladores, pero ofrece algunas
ventajas sobre otros sistemas:
10
Costo: Las placas Arduino son relativamente baratas comparadas con otras
plataformas microcontroladoras. La versión menos cara del módulo Arduino puede
ser ensamblada a mano, e incluso los módulos de Arduino preensamblados cuestan
menos de 50$.
Multiplataforma: El software de Arduino se ejecuta en sistemas operativos
Windows, Macintosh OSX y GNU/Linux. La mayoría de los sistemas
microcontroladores están limitados a Windows.
Entorno de programación simple y clara: El entorno de programación de Arduino
es fácil de usar para principiantes, pero suficientemente flexible para que usuarios
avanzados puedan aprovecharlo también. Para profesores, está convenientemente
basado en el entorno de programación Processing, de manera que estudiantes
aprendiendo a programar en ese entorno estarán familiarizados con el aspecto y la
imagen de Arduino.
Código abierto y software extensible: El software Arduino está publicado como
herramientas de código abierto, disponible para extensión por programadores
experimentados. El lenguaje puede ser expandido mediante librerías C++, y la
gente que quiera entender los detalles técnicos pueden hacer el salto desde
Arduino a la programación en lenguaje AVR C en el cual está basado. De forma
similar, puedes añadir código AVR-C directamente en tus programas Arduino si
quieres.
Código abierto y hardware extensible: El Arduino está basado en
microcontroladores ATMEGA8 y ATMEGA168 de Atmel. Los planos para los
módulos están publicados bajo licencia Creative Commons, por lo que diseñadores
experimentados de circuitos pueden hacer su propia versión del módulo,
extendiéndolo y mejorándolo. Incluso usuarios relativamente inexpertos pueden
construir la versión de la placa del módulo para entender cómo funciona y ahorrar
dinero.
11
EEPROM: Lectura y escritura en el almacenamiento permanente.
read(), write()
Ethernet: Conexión a Internet mediante “Arduino Ethernet Shield“. Puede
funcionar como servidor que acepta peticiones remotas o como cliente. Se
permiten hasta cuatro conexiones simultáneas. Las instrucciones usadas son los
siguientes:
Servidor: Server(), begin(), available(), write(), print(), println()
Cliente: Client(), connected(), connect(), write(), print(), println(), available(),
read(), flush(), stop()
Firmata: Es una biblioteca de comunicación con aplicaciones informáticas
utilizando el protocolo estándar del puerto serie.
LiquidCrystal: Control de LCDs con chipset Hitachi HD44780 o compatibles. La
biblioteca soporta los modos de 4 y 8 bits.
Servo: Biblioteca para el control de servos motores. A partir de la versión 0017 de
Arduino la biblioteca soporta hasta 12 motores en la mayoría de las placas
Arduino y 48 en la Arduino Mega. Estas son las instrucciones utilizadas:
attach(), write(), writeMicroseconds(), read(), attached(), detach()
SoftwareSerial: Comunicación serie en contactos digitales. Por defecto Arduino
incluye comunicación sólo en los contactos 0 y 1 pero gracias a esta biblioteca
puede realizarse esta comunicación con los restantes.
Stepper: Control de motores paso a paso unipolares o bipolares.
Stepper(steps, pin1, pin2), Stepper(steps, pin1, pin2, pin3, pin4), setSpeed(rpm),
step(steps)
Wire: Envío y recepción de datos sobre una red de dispositivos o sensores
mediante Two Wire Interface (TWI/I2C).
Las bibliotecas Matrix y Sprite de Wiring son totalmente compatibles con Arduino
y sirven para manejo de matrices de ledes. También se ofrece información sobre
diversas bibliotecas desarrolladas por diversos colaboradores que permiten realizar
muchas tareas.
Creación de bibliotecas: Los usuarios de Arduino tienen la posibilidad de escribir
sus propias bibliotecas. Ello permite disponer de código que puede reutilizarse en
12
otros proyectos, mantener el código fuente principal separado de las bibliotecas y
la organización de los programas construidos es más clara.
4.2.2. Hardware
Los modelos de Arduino se categorizan en placas de desarrollo, placas de expansión
(shields), kits, accesorios e impresoras 3d.
Placas: Arduino Galileo, Arduino Uno, Arduino Leonardo, Arduino Due, Arduino
Yún, Arduino Tre (En Desarrollo), Arduino Zero, Arduino Micro, Arduino
Esplora, Arduino Mega ADK, Arduino Ethernet, Arduino Mega 2560, Arduino
Robot, Arduino Mini, Arduino Nano, LilyPad Arduino Simple, LilyPad Arduino
SimpleSnap, LilyPad Arduino, LilyPad Arduino USB, Arduino Pro Mini, Arduino
Fio, Arduino Pro, Arduino MKR1000/Genuino MKR1000, Arduino
MICRO/Genuino MICRO, Arduino 101/Genuino 101, Arduino Gemma.
Placas de expansión (shields): Arduino GSM Shield, Arduino Ethernet Shield,
Arduino WiFi Shield, Arduino Wireless SD Shield, Arduino USB Host Shield,
Arduino Motor Shield, Arduino Wireless Proto Shield, Arduino Proto Shield.
Kits: The Arduino Starter Kit, Arduino Materia 101.
Accesorios: Pantalla LCD TFT, Adaptador USB/Serie y MiniUSB/Serie, Arduino
ISP.
Impresoras 3d: Arduino Materia 101.
13
hardware), cristal oscilador de 16MHz, conexión USB, jack de alimentación, conector
ICSP y botón de reset.
Arduino Mega incorpora todo lo necesario para que el microcontrolador trabaje;
simplemente conéctado a tu PC por medio de un cable USB o con una fuente de
alimentación externa (9 hasta 12VDC). El Arduino Mega es compatible con la mayoría
de los shields diseñados para Arduino Duemilanove, diecimila o UNO.
Esta nueva versión de Arduino Mega 2560 adicionalmente a todas las características de
su sucesor utiliza un microcontrolador ATMega8U2 en vez del circuito integrado
FTDI. Esto permite mayores velocidades de transmisión por su puerto USB y no
requiere drivers para Linux o MAC (archivo inf es necesario para Windows) además
ahora cuenta con la capacidad de ser reconocido por el PC como un teclado, mouse,
joystick, etc.
a. Especificaciones
Microcontrolador: ATmega2560
Tensión de alimentación: 5V
Tensión de entrada recomendada: 7-12V
Límite de entrada: 6-20V
Pines digitales: 54 (14 con PWM)
14
Entradas analógicas: 16
Corriente máxima por pin: 40 mA
Corriente máxima para el pin 3.3V: 50 mA
Memoria flash: 256 KB
SRAM: 8 KB
EEPROM: 4 KB
Velocidad de reloj: 16 MHz
15
LINK: indica la presencia de un enlace de red y parpadea cuando la shield envía o
recibe datos
FULLD: indica que la conexión de red es full duplex
100M: indica la presencia de una conexión de red de 100 Mb/s (de forma opuesta
a una de 10Mb/s)
RX: parpadea cuando la shield recibe datos
TX: parpadea cuando la shield envía datos
COLL: parpadea cuando se detectan colisiones en la red
El jumper soldado marcado como “INT” puede ser conectado para permitir a la placa
Arduino recibir notificaciones de eventos por interrupción desde el W5100, pero esto
no está soportado por la librería Ethernet. El jumper conecta el pin INT del W5100 al
pin digital 2 de Arduino.
4.3.1. Características
Opera a 5V suministrados desde la placa de Arduino
El controlador ethernet es el W5100 con 16K de buffer interno. No consume
memoria.
El shield se comunica con el microcontrolador por el bus SPI, por lo tanto para
usarlo siempre debemos incluir la librería SPI.h
Soporta hasta 4 conexiones simultáneas
Usar la librería Ethernet para manejar el shield.
El shield dispone de un lector de tarjetas micro-SD que puede ser usado para
guardar ficheros y servirlos sobre la red. Para ello es necesaria la librería SD.
Al trabajar con la SD, el pin 4 es usado como SS.
Arduino UNO se comunica con W5100 y la tarjeta SD usando el bus SPI a través del
conector ICSP. Por este motivo los pines 10, 11, 12 y 13 en el UNO y los 50, 51, 52 y
53 en el Mega no podrán usarse. En ambas placas los pines 10 y 4 se usan para
seleccionar el W5100 y la tarjeta SD. El Ethernet y el SD no pueden trabajar
simultáneamente y se debe tener cuidado al usar ambos de forma conjunta.
16
Básicamente el Wiznet W5100 implementa una pila TCP con todas las funciones del
estándar IEEE 802.3 (Ethernet capa física y de enlace de datos) dentro del chip; esto
hace que el chip Wiznet W5100 sea buena opción para integrar el sistema embebido en
internet. La programación del chip de Wiznet W5100 es también fácil ya que sólo
tenemos que escribir y leer desde y hacia los registros internos W5100 con el fin de
utilizar el construir funciones de los protocolos TCP/IP.
El Wiznet W5100 actuará como un dispositivo esclavo SPI controlado por
microcontrolador ATMega328 como el SPI Maestro. Necesita el protocolo SPI al
menos cuatro señales, MOSI (Master Out Serial In), MISO (Master In Serial Out),
SCK (señal de reloj proporcionada por el maestro) y CS (the SPI slave chip select). El
chip W5100 también proporciona el pin de interrupción.
a. Ethernet Class
Inicializa la librería ethernet y las configuraciones de red.
begin() – Inicializa la librería Ethernet (Constructor)
localIP() – Obtiene la dirección IP. Útil al usar DHCP
maintain() – Solicita una renovación al servidor DHCP
b. IPAddress Class
Trabaja con IPs locales y remotas. Facilita el trabajo con direcciones IPs.
IPAddress() – Define una dirección IP
c. Server Class
Crea un servidor que puede mandar y recibir datos de los clientes conectados.
17
Server() – Constructor de la clase server. No se usa directamente
EthernetServer() – Crea un servidor que escucha por las conexiones entrantes del
puerto definido.
begin() – Le dice al servidor que comience a escuchar.
available() – Devuelve el cliente que está conectado al servidor y tiene datos
disponibles a leer.
write() – Escribe datos a todos los cliente conectados al servidor.
print() – Escribe datos a todos los cliente conectados al servidor.
println() – Escribe datos a todos los cliente conectados al servidor seguido de una
nueva línea.
d. Client Class
Crea un cliente que se conecta a un servidor y puede mandar y recibir datos.
Client – Constructor de la clase client. No se usa directamente
EthernetClient() – Crea un cliente que se conecta a una determinada IP y puerto
if (EthernetClient) – Indica si el cliente Ethernet está preparado
connected() – Devuelve si el cliente está o no conectado
connect() – Conecta a una IP y puerto especificado. Soporta DNS lookup.
Devuelve unos códigos en función del éxito o fallo de la conexión.
write() – Escribe datos al servidor al que está conectado.
print() – Escribe datos al servidor al que está conectado
println() – Escribe datos al servidor al que está conectado, seguido de una nueva
línea
available() – Devuelve el número de bytes disponibles para leer.
read() – Lee el siguiente byte recibido desde el servidor.
flush() – Borra todos los bytes que han sido escritos en el cliente pero no los
leidos.
stop() – Desconecta el cliente del servidor
18
e. EthernetUDP Class
Habilita el envío y recepción de mensajes UDP
begin() – Inicializar la librería UDP
read() – Lee datos UDP
write() – Escribe datos UDP a la conexión remota.
beginPacket() – Comienza una conexión para escribir paquetes UDP
endPacket() – Finaliza una conexión UDP después de escribir
parsePacket() – Comprueba la presencia de un paquete UDP
available() – Devuelve el nº de bytes disponible para leer en el buffer
stop() – Desconecta del servidor
remoteIP() – Obtiene la IP de la conexión remota
remotePort() – Obtiene el puerto de la conexión remota
4.4. TCP/IP
El modelo TCP/IP describe un conjunto de guías generales de diseño e implementación
de protocolos de red específicos para permitir que un equipo pueda comunicarse en una
red. TCP/IP provee conectividad de extremo a extremo especificando como los datos
deberían ser formateados, direccionados, transmitidos, enrutados y recibidos por el
destinatario.
La importancia del modelo TCP/IP es que es el modelo usado para acceder a Internet o
a redes internas (Intranet) de ordenadores. Arduino va a permitir conectarse a Internet o
a una red interna mediante TCP/IP y poder realizar múltiples operaciones o usarse
como pasarela para conectar a Internet dispositivos que no tienen esa capacidad. La
implementación de la pila de protocolos de TCP/IP en Arduino se hace mediante un
shield o HW adicional que nos da la capa de acceso a red (ethernet o WiFi), internet
(IP) y transporte. La capa de aplicación deberemos implementarla dentro de Arduino
ya sea directamente o mediante una librería.
Los elementos de red (switches, routers, etc…) no llegan hasta la última capa y se
podría representar así la comunicación entre dos dispositivos.
Algunos elementos de la red de comunicación pueden llegar a capas superiores a la de
red e incluso hasta la capa de aplicación como los firewalls para detectar ataques en
19
capas superiores, es el caso de firewalls de estado y de aplicación. Un cortafuego de
aplicación puede filtrar protocolos de capas superiores tales como FTP, TELNET,
DNS, DHCP, HTTP, TCP, UDP y TFTP (GSS). Por ejemplo, si una organización
quiere bloquear toda la información relacionada con una palabra en concreto, puede
habilitarse el filtrado de contenido para bloquear esa palabra en particular. No obstante,
los cortafuegos de aplicación resultan más lentos que los de estado.
20
embargo, es posible realizar la finalización de la conexión en 3 fases; enviando el
segmento FIN y el ACK en uno solo. Cuando uno de los dos extremos de la conexión
desea parar su “mitad” de conexión transmite un segmento con el flag FIN en 1, que el
otro interlocutor asentirá con un ACK. Por tanto, una desconexión típica requiere un
par de segmentos FIN y ACK desde cada lado de la conexión.
Una conexión puede estar “medio abierta” en el caso de que uno de los lados la finalice
pero el otro no. El lado que ha dado por finalizada la conexión no puede enviar más
datos pero la otra parte si podrá.
Es importante conocer este apartado porque a pesar que esta negociación la hace el
shield de Ethernet o Wifi y no se programa en Arduino, sirve para saber qué está
pasando cuando Arduino actúa como cliente o servidor y poder hacer depuración
cuando tenemos errores.
4.4.2. Direccionamiento IP
TCP/IP utiliza un identificador denominado dirección internet o dirección IP, cuya
longitud es de 32 bytes. La dirección IP identifica tanto a la red a la que pertenece una
computadora como a ella misma dentro de dicha red.
Longitud de 32 bits.
Identifica a las redes y a los nodos conectados a ellas.
Especifica la conexión entre redes.
Se representan mediante cuatro octetos, escritos en formato decimal, separados por
puntos.
Existen ciertas direcciones en cada clase de dirección IP que no están asignadas y que
se denominan direcciones privadas. Las direcciones privadas pueden ser utilizadas por
los hosts que usan traducción de dirección de red (NAT) para conectarse a una red
pública o por los hosts que no se conectan a Internet. En una misma red no pueden
existir dos direcciones iguales, pero sí se pueden repetir en dos redes privadas que no
tengan conexión entre sí o que se conecten mediante el protocolo NAT. Las
direcciones privadas son:
Clase A: 10.0.0.0 a 10.255.255.255 (8 bits red, 24 bits hosts).
Clase B: 172.16.0.0 a 172.31.255.255 (16 bits red, 16 bits hosts). 16 redes clase B
contiguas, uso en universidades y grandes compañías.
21
Clase C: 192.168.0.0 a 192.168.255.255 (24 bits red, 8 bits hosts). 256 redes clase
contiguas, uso de compañías medianas y pequeñas además de pequeños
proveedores de internet (ISP).
a. Subredes en IP:
Las Subredes son redes físicas distintas que comparten una misma dirección IP.
Deben identificarse una de otra usando una máscara de subred.
La máscara de subred es de cuatro bytes y para obtener el número de subred se
realiza un operación AND lógica entre ella y la dirección IP de algún equipo.
La máscara de subred deberá ser la misma para todos los equipos de la red IP.
El enrutamiento sirve para alcanzar redes distantes y las direcciones IP se agrupan en
clases.
Ahora bien para cada clase se pueden contar con un número determinados de subredes;
las subredes son redes físicas independientes que comparten la misma dirección IP (es
decir aquella que identifica a la red principal). La pregunta entonces es ¿cómo se logra
que equipos que comparten el mismo identificador de red pero se sitúan en redes
físicas diferentes podrán comunicarse usando compuertas? La solución a este problema
es determinando una máscara de dirección.
Supóngase que la dirección IP de un equipo es 148.206.257.2, la máscara de subred es
255.255.255.0, el equipo por tanto está en la subred 148.206.257.0
Una dirección IP dinámica es una IP asignada mediante un servidor DHCP (Dynamic
Host Configuration Protocol) al usuario, la IP que se obtiene tiene una duración
máxima determinada. El servidor DHCP provee parámetros de configuración
específicos para cada cliente que desee participar en la red IP, entre estos parámetros se
encuentra la dirección IP del cliente.
Las IP dinámicas son las que actualmente ofrecen la mayoría de operadores. El
servidor del servicio DHCP puede ser configurado para que renueve las direcciones
asignadas cada tiempo determinado.
Protocolo de Mensajes de Control de Internet ICMP (Internet Control Message
Protocol)
Reporta sobre destinos inalcanzables.
22
Control de flujo de datagramas y congestión.
Controla los requerimientos de cambio de rutas entre compuertas.
Detecta rutas circulares o excesivamente largas.
Verifica la existencia de trayectorias hacia alguna red y el estatus de la misma.
4.5.Protocolo HTTP
Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de
hipertexto) es el protocolo de comunicación que permite las transferencias de
información en la WWW. Se trata de un protocolo de capa 7 de aplicación.
En arduino con la librería ethernet solo trabajamos con la capa de aplicación, todas las
otras capas de la pila TCP/IP ya están implementadas por Hardware, ya sea con la
ethernet shield o el módulo WiFi correspondiente. Aunque si queremos realizar
algunas funciones de capas inferiores, podemos hacerlo con los comandos adecuados
comunicándonos con el chip ethernet o wifi via SPI.
23
Este protocolo es muy importante puesto que es el que se va a usar para comunicar
Arduino con cualquier elemento de la WWW o de una intranet. En el IoT es uno de los
protocolos más usados y sobre todo si queremos obtener o mandar datos a servidores o
usar las APIs que nos ofrecen algunos servicios para obtención de información.
Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de
hipertexto) es el protocolo usado en cada transacción de la World Wide Web. HTTP
fue desarrollado por el World Wide Web Consortium y la Internet Engineering Task
Force.
HTTP define la sintaxis y la semántica que utilizan los elementos de software de la
arquitectura web (clientes, servidores, proxies) para comunicarse. Es un protocolo
orientado a transacciones y sigue el esquema petición-respuesta entre un cliente y un
servidor. Al cliente que efectúa la petición (un navegador web) se lo conoce como
“user agent” (agente del usuario). A la información transmitida se la llama recurso y se
la identifica mediante un localizador uniforme de recursos (URL).
HTTP es un protocolo sin estado, es decir, que no guarda ninguna información sobre
conexiones anteriores. El desarrollo de aplicaciones web necesita frecuentemente
mantener un estado, para esto se usan las cookies, que es información que un servidor
puede almacenar en el sistema cliente. Esto le permite a las aplicaciones web instituir
la noción de “sesión”, y también permite rastrear usuarios ya que las cookies pueden
guardarse en el cliente por tiempo indeterminado.
Una transacción HTTP está formada por un encabezado seguido, opcionalmente, por
una línea en blanco y algún dato. El encabezado especificará cosas como la acción
requerida del servidor, o el tipo de dato retornado, o el código de estado. El uso de
campos de encabezados enviados en las transacciones HTTP le da gran flexibilidad al
protocolo. Estos campos permiten que se envíe información descriptiva en la
transacción, permitiendo así la autenticación, cifrado e identificación de usuario.
Ejemplos de encabezados: HTTP_ACCEPT y HTTP_USER_AGENT.
Para intercambio de archivos por HTTP usamos MIME.
Líneas de encabezado o Headers, son muy importantes y dan información adicional de
la conexión y el comportamiento puede cambiar en función de ellas.
24
4.5.1. Métodos de Petición HTTP
Lo más importante para comunicar Arduino por HTTP con otros dispositivos, ya sean
servidores, ordenadores, otros Arduinos, etc… es conocer los métodos GET y POST
del protocolo HTTP.
HTTP define 8 métodos que indica la acción que desea que se efectúe sobre el recurso
identificado; lo que este recurso representa, si los datos pre-existentes o datos que se
generan de forma dinámica, depende de la aplicación del servidor. A menudo, el
recurso corresponde a un archivo o la salida de un ejecutable que residen en el
servidor.
GET: Pide una representación del recurso especificado. Por seguridad no debería
ser usado por aplicaciones que causen efectos ya que transmite información a
través de la URI agregando parámetros a la URL. La petición puede ser simple, es
decir en una línea o compuesta de la manera que muestra el ejemplo.
Ejemplo simple:
GET /images/logo.png HTTP/1.1 obtiene un recurso llamado logo.png
Ejemplo con parámetros:
GET /index.php?page=main&lang=es HTTP/1.1
POST: Envía los datos para que sean procesados por el recurso identificado. Los
datos se incluirán en el cuerpo de la petición. Esto puede resultar en la creación de
un nuevo recurso o de las actualizaciones de los recursos existentes o ambas cosas.
HTTP request: Un cliente HTTP debe formar una petición HTTP (request) al
servidor de una forma determinada para que sea entendida por el servidor. Cuando
Arduino trabaja como cliente hay que programar esta petición correctamente, sino
el servidor nos mandará un mensaje de error.
HTTP response: Después de recibir e interpretar el servidor un HTTP request, el
servidor debe responder con un mensaje de respuesta:
Para cumplir con el protocolo HTTP, arduino debe implementar estas respuestas
cuando lo uso como servidor web, como devolución a un request mandado por un
cliente como puede ser un browser o navegador. De esta forma puedo implementar
en Arduino una web embebida.
25
Por lo tanto Arduino podemos programarlo para comportarse como cliente, como
servidor o como ambos.
26
CAPITULO III
5. DESARROLLO DEL TRABAJO
5.1.Descripción del sistema
27
usuario pueda comunicarse con el sistema y pueda hacer los cambios oportunos
manualmente.
El diagrama del sistema se encuentra en la figura 2.
28
Control de apertura y cierre de puerta: Este se realiza por medio de la página
web. Implementado en la puerta principal.
Para conseguir las características de un sistema domótico es necesario que además del
órgano central que controle el sistema se tenga a disposición sensores que puedan
recoger datos sobre la situación de cada habitación de la vivienda. Dependiendo de estos
datos el sistema domótico debe ser capaz de comunicarse con los actuadores para
mejorar la situación de la vivienda. También deben existir elementos con los que el
usuario pueda comunicarse con el sistema y pueda hacer los cambios oportunos
manualmente.
a. Sensores
Sensor de movimiento PIR HC-SR501
Sensor de gas MQ-7
Sensor de humedad y temperatura DHT11
LDR
b. Actuadores
Micro servo SG90
Ventilador
LED
c. Controlador
Arduino MEGA
29
d. Comunicadores
Etherneth shiel W5100
e. Otros
Leds
Resistencias de 220Ω
Cables dupont para realizar las conexiones
Cable ethernet
Router TP-LINK
El Arduino será configurado con una dirección IP dentro de nuestra LAN, por ello será
un host más. Adicionalmente, será programado para cargar vía HTTP una interfaz web
atractiva al usuario mediante la cual podrá controlar las diferentes funciones del sistema.
La interfaz será accesible desde cualquier tipo de dispositivo que tenga un explorador
web y podrán ejecutarse ordenes dentro y fuera de la red local.
La configuración de red debe ser modificada en el código, empleando el segmento de
red adecuado de la LAN.
Se debe establecer una conexión Ethernet con Arduino. Arduino tiene una librería
Ethernet que opera con el WIZnet W5100
#include <SPI.h>
#include <Ethernet.h
Luego se configuró la dirección Mac y la IP, donde se pone cualquier valor, evitando
duplicar con algún otro equipo conectado a la red, también se crea el servidor que
escuchará las conexiones entrantes por el puerto especificado.
IPAddress ip(192,168,X,X);
EthernetServer server(80);
30
Para tener acceso fuera de la LAN, se necesita hacer un foward del puerto 80 (en caso de
usar el http por defecto) a la IP local del Arduino. Esto para poder entrar desde un
navegador externo ingresando la IP publica, el router automáticamente hara el request al
arduino.
En void setup () inicializamos el Shield Ethernet y se reporta por el puerto serial, aquí
también se configuran los pines de entrada y salida.
31
La siguiente figura muestra el diagrama de flujo del sistema domótico que
implementamos:
32
5.3.1. Código
#include <SPI.h>
#include <Ethernet.h>
#include <Servo.h>
#include <DHT.h>
Servo myservo;
#define DHTPIN 11
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
EthernetServer server(80);
String readString;
int val;
int ala;
int lectura=10;
int mqpin=12;
int ledPin=19;
int pirPin=10;
int pirValue;
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(led, OUTPUT);
pinMode(8, OUTPUT);
pinMode(13, OUTPUT);
pinMode(26, OUTPUT);
pinMode(21, OUTPUT);
33
pinMode(20, OUTPUT);
pinMode(19, OUTPUT);
pinMode(18, OUTPUT);
pinMode(mqpin, INPUT);
pinMode(pir, INPUT);
pinMode(lectura, INPUT);
pinMode(A0, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(pirPin, INPUT);
digitalWrite(ledPin,LOW);
Ethernet.begin(mac, ip);
myservo.attach(9);
myservo.write(45);
dht.begin();
}
void loop(){
EthernetClient client = server.available();
if (client) {
while (client.connected())
{
if (client.available())
{
char c = client.read();
if (readString.length() < 100)
{
readString += c;
}
if (c == '\n')
{
Serial.println(readString);
client.println("HTTP/1.1 200 OK");
34
client.println("Content-Type: text/html");
client.println();
client.println("<hmtl>");
client.println("<head>");
client.println("ARDUINO PAGE");
client.println("</head>");
client.println("<title>");
client.println("CASA");
client.println("</title>");
client.println("<body bgcolor=black>");
client.println("<font color=white>");
client.println("<meta http-equiv=\"refresh\" content=\"30\">");
client.println("<center>");
client.println("<b>");
client.println("TRABAJO DE APLICACION - EXAMEN DE GRADO II/2017");
client.println("<br></br>");
client.println("<center>");
client.println("Milenka Liliana Quisbert Condori");
client.println("<br></br>");
client.println("</b>");
client.println("</center>");
client.println("<right>");
//sensores
client.println("<tr>");
client.println("<table border=1 width=200 class='egt'>");
client.println("<th><font color=white>SENSORES</th>");
client.println("</tr>");client.println("<tr>");
client.println("<table border=1 width=200 class='egt'>");
client.println("<th><font color=white>Temperatura</th>");
client.println("<th><font color=white>Gas</th>");
client.println("<th><font color=white>Intruso</th>");
client.println("</tr>");
35
client.println("<tr>");
//temp
client.println("<td>");
client.println("<font color = turquoise size=3>");
float h = dht.readHumidity();// Lee la humedad
float t= dht.readTemperature();//Lee la temperatura
client.print(t);
client.println("ºC");
client.println("<FORM>");
if(t>20)
{
digitalWrite(26, HIGH);
}
else
{
digitalWrite(26, LOW);
}
client.println("</FORM>");
client.println("</td>");
//mq
client.println("<td>");
boolean mq_estado = digitalRead(mqpin);
if(mq_estado)
{
client.println("<font color = turquoise size=3>");
client.println("Sin presencia de alcohol");
digitalWrite(8, LOW)
}
else
{
client.println("<font color = red size=3>");
36
client.println("Alcohol detectado");
digitalWrite(8, HIGH);
digitalWrite(19, HIGH);
digitalWrite(18, HIGH);
}
delay(2000);
client.println("<FORM>");
client.println("<INPUT type=button value=AlarmaOFF
onClick=window.location='/?alarmaM1\'>");
client.println("<INPUT type=button value=AlarmaON
onClick=window.location='/?alarmaM0\'>");
client.println("</FORM>");
client.println("</td>");
//pir
client.println("<td>");
client.println("<font color = turquoise size=3>");
pir=digitalRead(lectura);
if(pir==HIGH)
{
digitalWrite(13,HIGH);
digitalWrite(21, HIGH);
digitalWrite(20, HIGH);
client.print("Intruso detectado!!!");
}
else
{
digitalWrite(13,LOW);
client.print("Todo tranquilo");
}
delay(2000);
37
client.println("<INPUT type=button value=AlarmaOFF
onClick=window.location='/?alarmaI1\'>");
client.println("<INPUT type=button value=AlarmaON
onClick=window.location='/?alarmaI0\'>");
client.println("</FORM>");
client.println("</td>");
client.println("</tr>");
//leds
client.println("<tr>");
client.println("<table border=1 width=200 class='egt'>");
client.println("<th><font color=white>CONTROL DE ILUMINACION</th>");
client.println("</tr>");
//1
client.println("<table border=1 width=200 class='egt'>");
client.println("<td>");
client.println("<FORM>");
client.println("<font color=white>");
client.println("Dormitorio 1");
client.println("</td>");
client.println("<td><INPUT type=button value=ON
onClick=window.location='/?lighton1\'></td>");
client.println("<td><INPUT type=button value=OFF
onClick=window.location='/?lightoff1\'></td>");
client.println("</FORM>");
//2
client.println("<table border=1 width=200 class='egt'>");
client.println("<td>");
client.println("<FORM>");
client.println("<font color=white>");
client.println("Dormitorio 2");
client.println("</td>");
38
client.println("<td><INPUT type=button value=ON
onClick=window.location='/?lighton2\'></td>");
client.println("<td><INPUT type=button value=OFF
onClick=window.location='/?lightoff2\'></td>");
client.println("</FORM>");
//3
client.println("<table border=1 width=200 class='egt'>");
client.println("<td>");
client.println("<FORM>");
client.println("<font color=white>");
client.println("Sala<font color=black>..........");
client.println("</td>");
client.println("<td><INPUT type=button value=ON
onClick=window.location='/?lighton3\'></td>");
client.println("<td><INPUT type=button value=OFF
onClick=window.location='/?lightoff3\'></td>");
client.println("</FORM>");
//4
client.println("<table border=1 width=200 class='egt'>");
client.println("<td>");
client.println("<FORM>");
client.println("<font color=white>");
client.println("Comedor<font color=black>..");
client.println("</td>");
client.println("<td><INPUT type=button value=ON
onClick=window.location='/?lighton4\'></td>");
client.println("<td><INPUT type=button value=OFF
onClick=window.location='/?lightoff4\'></td>");
client.println("</FORM>");
39
//5
client.println("<table border=1 width=200 class='egt'>");
client.println("<td>");
client.println("<FORM>");
client.println("<font color=white>");
client.println("Cocina<font color=black>....");
client.println("</td>");
client.println("<td><INPUT type=button value=ON
onClick=window.location='/?lighton5\'></td>");
client.println("<td><INPUT type=button value=OFF
onClick=window.location='/?lightoff5\'></td>");
client.println("</FORM>");
//6
client.println("<table border=1 width=200 class='egt'>");
client.println("<td>");
client.println("<FORM>");
client.println("<font color=white>");
client.println("Pasillo<font color=black>....");
client.println("</td>");
client.println("<td><INPUT type=button value=ON
onClick=window.location='/?lighton6\'></td>");
client.println("<td><INPUT type=button value=OFF
onClick=window.location='/?lightoff6\'></td>");
client.println("</FORM>");
client.println("</tr>");
//Todos leds
client.println("<tr>");
client.println("<table border=1 width=200 class='egt'>");
client.println("<th><font color=white>APAGAR O ENCENDER TODOS</th>");
client.println("</tr>");
40
//1
client.println("<table border=1 width=200 class='egt'>");
client.println("<FORM>");
client.println("<font color=white>");
client.println("<td><INPUT type=button value=ONTODOS
onClick=window.location='/?lightonT\'></td>");
client.println("<td><INPUT type=button value=OFFTODOS
onClick=window.location='/?lightoffT\'></td>");
client.println("</FORM>");
//LDR
digitalWrite(44, HIGH);
//PUERTA
client.println("<tr>");
client.println("<table border=1 width=200 class='egt'>");
client.println("<th><font color=white>PUERTA</th>");
client.println("</tr>");
client.println("<tr>");
client.println("<table border=1 width=200 class='egt'>");
client.println("<FORM>");
client.println("<td>");
client.println("<font color=white>");
client.println("ESTADO");
client.println("</td>");
client.println("<td><INPUT type=button value=Cerrar
onClick=window.location='/?serv0\'></td>");
client.println("<td><INPUT type=button value=Abrir
onClick=window.location='/?serv90\'></td>");
client.println("</FORM>");
client.println("</tr>");
//1
if(readString.indexOf("?lighton1") >0)
41
{
digitalWrite(2, HIGH);
}
else{
if(readString.indexOf("?lightoff1") >0)
{
digitalWrite(2, LOW);
}
}
//2
if(readString.indexOf("?lighton2") >0)
{
digitalWrite(3, HIGH);
}
else{
if(readString.indexOf("?lightoff2") >0)
{
digitalWrite(3, LOW);
}
}
//3
if(readString.indexOf("?lighton3") >0)
{
digitalWrite(4, HIGH);
}
else{
if(readString.indexOf("?lightoff3") >0)
{
digitalWrite(4, LOW);
}
}
42
//4
if(readString.indexOf("?lighton4") >0)
{
digitalWrite(5, HIGH);
}
Else
{
if(readString.indexOf("?lightoff4") >0)
{
digitalWrite(5, LOW);
}
}
//5
if(readString.indexOf("?lighton5") >0)
{
digitalWrite(6, HIGH);
}
else{
if(readString.indexOf("?lightoff5") >0)
{
digitalWrite(6, LOW);
}
}
//6
if(readString.indexOf("?lighton6") >0)
{
digitalWrite(7, HIGH);
}
else{
if(readString.indexOf("?lightoff6") >0)
{
43
digitalWrite(7, LOW);
}
}
//TODOS
if(readString.indexOf("?lightonT") >0)
{
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
}
else{
if(readString.indexOf("?lightoffT") >0)
{
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
}
}
//Alarma PIR
if(readString.indexOf("?alarmaI1") >0)
{
digitalWrite(20, LOW);
delay(2000);
delay(2000);
delay(2000);
44
delay(2000);
delay(2000);
delay(2000);
delay(2000);
delay(2000);
delay(2000);
}
else{
if(readString.indexOf("?alarmaI0") >0)
{
digitalWrite(20, HIGH);
}
}
//Alarma MQ
if(readString.indexOf("?alarmaM1") >0)
{
digitalWrite(22, HIGH);
}
else{
if(readString.indexOf("?alarmaM0") >0)
{
digitalWrite(22, LOW);
}
}
//puerta
if(readString.indexOf("?serv0") >0)
{
myservo.write(10);
}
else{
45
if(readString.indexOf("?serv90") >0)
{
myservo.write(120);
}
}
readString="";
client.stop();
}
}
}
}
}
46
5.3.2. Circuito final
5.3.3. Funcionamiento
Primero conectamos la alimentación para el Arduino y el cable Ethernet para la placa
Ethernet Shield, éste debe llegar desde el router directo hasta la placa.
Una vez conectado abrir el navegador ya sea en la computadora, celular o cualquier
dispositivo que tenga acceso a un navegador web (explorer, chrome, mozilla…) y se
pone la dirección ip que le ha asignado en el código.
Presionamos la tecla enter aparecerá página desde la cual podremos manejar todo. En la
entrada de la casa habrá un LDR que encenderá un LED de forma automática cuando
sea de noche o se apague cuando sea de día.
Existirá también el sistema de seguridad que activara una alarma, este de forma
automática cuando se detecte algo extraño, como, un intruso, fuga de gas, o alta
temperatura. Esta alarma se podrá desactivar mediante la página web.
47
CAPITULO IV
6. CONCLUSIONES
Con la elaboración de este proyecto se ha pretendido demostrar que esta
tecnología con la ayuda de Arduino puede ser de mucha utilidad en la vida
cotidiana de las familias y sus hogares.
Con la implementación realizada se comprobó que se puede construir esta
aplicación para un sistema domótico.
Este proyecto ha contribuido a desarrollar un sistema de domótica fácil de
manejar, ya que se puede regular los dispositivos conectados sin importar su
número.
Día a día la tecnología tiene una gran aceptación en los hogares debido a la
disminución de precios y mayor durabilidad.
El principal propósito de la tecnología es la de hacernos la vida más fácil y la
mejor manera es aplicarla a nuestro propio hogar.
48
7. RECOMENDACIONES
Para poder aplicar el proyecto presentado en un caso real se debe tener en cuenta lo
siguiente:
49
8. BIBLIOGRAFÍA
Arduino (2017). A r d u i n o m e g a 2 5 6 0 . R e c u p e r a d o d e :
https://store.arduino.cc/usa/arduino-mega-2560-rev3
Arduino (2017). ¿qué es arduino? Recuperado de: http://arduino.cl/que-es-
arduino/
Arkiplus (2013). Historia de la Domótica. Recuperado de: Recuperado de:
http://www.arkiplus.com/historia-de-la-domotica
Castiñeira, N. (-). Aplicaciones de los Sistemas de Control. Recuperado de:
http://www.tecnologia-
tecnica.com.ar/sistemadecontrolaplicaciones/index%20aplicacionesdelossistem
asdecontrol.htm
Cedom (-). Qué es Domótica. Recuperado de: http://www.cedom.es/sobre-
domotica/que-es-domotica
Hijano, A. (2011). Proyecto de instalación eléctrica y domótica en una vivienda
unifamiliar. Proyecto para obtener el grado de título de Ingeniería Técnica
Industrial especialidad electricidad, Universitat Politècnica de Catalunya,
Barcelona. 78pp.
Junestrand, S; Passaret, X; Vazquez, D. (2004). Domótica y Hogar Digital.
Madrid: Editorial Paraninfo.
Los Tiempos (2016). Domótica en Bolivia. Recuperado de:
http://www.lostiempos.com/oh/tendencias/20161107/domotica-bolivia
Plaza, H. (2013). Proyecto domótico para una vivienda unifamiliar. Proyecto
para obtener el grado de ingeniero técnico industrial especialidad electrónica
industrial. Universidad de Cantabria, Cantabria- 65pp.
Romero, C; Castro, C. (2010). Domótica e inmótica. Viviendas y Edificios
Inteligentes. 3ra Edición. Editorial RA-MA S.A.
Romano, D. (2012). Casa domótica con Arduino y Android. Recuperado de:
https://diegoromanoubalde.wordpress.com/proyectos-realizados/casa-domotica-
eficiente/
Wikipedia (2017). Domótica. Recuperado de:
https://es.wikipedia.org/wiki/Dom%C3%B3tica
50
WordPress (2016)Hardware Ethernet en Arduino. Recuperado
de:https://aprendiendoarduino.wordpress.com/category/ethernet-shield/
51