Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 55

UNIVERSIDAD MAYOR DE SAN ANDRÉS

FACULTAD DE TECNOLOGÍA
CARRERA DE ELECTRÓNICA Y
TELECOMUNICACIONES

DISEÑO E IMPLEMENTACIÓN DE UN PROTOTIPO DE


UN SISTEMA DOMOTICO PARA EL MONITOREO Y
GESTIÓN DE UNA VIVIENDA CONTROLADO POR UN
SERVIDOR WEB

Examen de Grado presentado para obtener el Grado de Licenciatura en


Electrónica y Telecomunicaciones

POSTULANTE: Univ. Milenka Liliana Quisbert Condori

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

Figura 1. Arduino Mega 2560.................................................................................... 14

Figura 2. Diagrama del Sistema ................................................................................. 28

Figura 3. Diagrama de flujo……………………………………………………………………………..32

Figura 4. Circuito del Sistema.................................................................................... 47

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. JUSTIFICACIÓN DEL TRABAJO


Lo que se busca con este proyecto es diseñar un sistema de domótica simple y
económico que pueda ser manipulado por cualquier persona, brindando mayor
seguridad y confort a las familias por medio de dispositivos, los cuales trabajan con
sensores y actuadores que controlan a distancia para los movimientos que esxista en la
casa.
Estos procesos hacen más fácil la vida de los integrantes de una familia permitiendo
ahorros importantes como la energía y otros factores.
Actualmente los sistemas domóticos tienen un precio muy alto de instalación con lo cual
solo es posible verlo en casas de lujo. Estos suelen utilizar buses de transmisión de
información que posibilitan una domótica robusta como son el EIB, X10, CEBus,
LonWorks/LongTalk y ZigBee, una alternativa más barata y casera para nuestro caso
consiste en la utilización de placas Arduino y Ethernet shield.
Lo que vamos a crear con el Ethernet Shield, es un servidor Web, el cual nos
proporcionará el código HTML para poder verlo en nuestro navegador y poder así,
interactuar con él, tanto desde casa con los dispositivos que estén conectados a la misma
red a la que esté conectado el Arduino o como desde el exterior, si previamente
configuramos el Port Forwarding en el Router.

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.2. Objetivos Específicos:


 Demostrar que el uso de estos sistemas incrementan el confort y gestión en
nuestras viviendas por medio de sistemas de climatización, iluminación, entre
otros.
 Detectar a través de dispositivos que generen sonido la presencia de factores
negativos.
 Acceder a técnicas que generen correctamente la automatización de tareas
domésticas.

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.

4.1.1. Ventajas y desventajas


La domótica en las instalaciones eléctricas cada vez ocupa un lugar más importante y
ha comenzado a reemplazar muchos de los componentes que generaban un gran
consumo de electricidad. Pero existen ventajas y desventajas en su implementación.

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.

4.1.2. Aplicaciones de la domótica


a. Gestión Energética
Es la administración de energía utilizada en las viviendas, se apoya en tres pilares
fundamentales que son, el ahorro energético, la eficiencia energética y la generación de
energía. Ejemplos:
 Programación y zonificación de la climatización.
 Racionalización de cargas eléctricas: desconexión de equipos de uso no prioritario
en función del consumo eléctrico en un momento dado. Reduce la potencia
contratada.
 Gestión de tarifas, derivando el funcionamiento de algunos aparatos a horas de
tarifa reducida.

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.

4.2.1. Bibliotecas en Arduino


Las bibliotecas estándar que ofrece Arduino son las siguientes:
 Serial: Lectura y escritura por el puerto serie.

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.

4.2.3. Arduino MEGA 2560


Arduino Mega es una tarjeta de desarrollo open-source construida con un
microcontrolador modelo Atmega2560 que posee pines de entradas y salidas (E/S),
analógicas y digitales. Esta tarjeta es programada en un entorno de desarrollo que
implementa el lenguaje Processing/Wiring. Arduino puede utilizarse en el desarrollo de
objetos interactivos autónomos o puede comunicarse a un PC a través del puerto serial
(conversión con USB) utilizando lenguajes como Flash, Processing, MaxMSP, etc. Las
posibilidades de realizar desarrollos basados en Arduino tienen como límite la
imaginación.
El Arduino Mega tiene 54 pines de entradas/salidas digitales (14 de las cuales pueden
ser utilizadas como salidas PWM), 16 entradas análogas, 4 UARTs (puertos serial por

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.

Figura 1. Arduino Mega 2560


Fuente: Shehanb (2015). Tap con arduino Mega 2560. Recuperado de:https:
//shehanbhavan.wordpress.com/2015/11/05/arduino-mega-2560-uno-r3-with-sim900-mini-3-8-2/

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

4.3.Ethernet Shield W5100:


El Arduino Ethernet Shield permite a una placa Arduino conectarse a internet.
Ethernet Shield se basa en el chip W51000, que tiene un buffer interno de 16K.Tiene
una velocidad de conexión de hasta 10 / 100Mb.
El chip Wiznet W5100 ofrece una red (IP) capaz de usar TCP y UDP, soporta hasta
cuatro conexiones de socket simultánea, usa la librería Ethernet para escribir
programas que se conecten a internet usando la shield.
Puede utilizar como un servidor capaz de aceptar conexiones entrantes o como un
cliente que realiza las salientes. La biblioteca admite hasta cuatro conexiones
simultáneas (entrante o saliente o combinadas).
Tiene una ranura micro SD integrada que le permite almacenar gran cantidad de datos
y servir sitios web completos usando solo su Arduino. Esto requiere el uso de una
biblioteca SD externa, que no viene incluida con el software.
También incluye un controlador de reajuste, para asegurar que el módulo Ethernet
W5100 se restablece correctamente en el encendido.
La placa también tiene espacio para la adición de un módulo Power over Ethernet
(PoE), que le permite alimentar su Arduino a través de una conexión Ethernet.
Es compatible con el Arduino UNO y Arduino Mega.
El shield provee un conectore ethernet estándar RJ45 y un conector lector de tarjeta
Micro SD
El botón de reset en la shield resetea ambos, el W5100 y la placa Arduino.
El shield contiene un número de LEDs para información:
 PWR: indica que la placa y la shield están alimentadas

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.

4.3.2. WIZnet W5100


El integrado W5100 se conecta al arduino mediante SPI.

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.

4.3.3. Librería Ethernet


La librería Ethernet es usada para manejar el Ethernet Shield que implementa la pila de
protocolos TCP/IP y dentro de Arduino se implementan los protocolos en la capa de
aplicación. La librería se usa entre otras cosas para mandar por Ethernet el protocolo
programado en Arduino.
Para manejar el Ethernet Shield deberemos conocer todos los métodos que nos ofrece
la librería Ethernet y así poder usarla.

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.

4.4.1. Conexión y desconexión


El proceso de establecimiento de una conexión TCP se denomina “three way
handshake” Durante el establecimiento de la conexión, se configuran algunos
parámetros tales como el número de secuencia con el fin de asegurar la entrega
ordenada de los datos y la robustez de la comunicación.
Aunque es posible que un par de entidades finales comiencen una conexión entre ellas
simultáneamente, normalmente una de ellas abre un socket en un determinado puerto
TCP y se queda a la escucha de nuevas conexiones. Es común referirse a esto como
apertura pasiva, y determina el lado servidor de una conexión. El lado cliente de una
conexión realiza una apertura activa de un puerto enviando un paquete SYN inicial al
servidor como parte de la negociación en tres pasos. En el lado del servidor (este
receptor también puede ser una PC o alguna estación terminal) se comprueba si el
puerto está abierto, es decir, si existe algún proceso escuchando en ese puerto, pues se
debe verificar que el dispositivo de destino tenga este servicio activo y esté aceptando
peticiones en el número de puerto que el cliente intenta usar para la sesión. En caso de
no estarlo, se envía al cliente un paquete de respuesta con el bit RST activado, lo que
significa el rechazo del intento de conexión. En caso de que sí se encuentre abierto el
puerto, el lado servidor respondería a la petición SYN válida con un paquete
SYN/ACK. Finalmente, el cliente debería responderle al servidor con un ACK,
completando así la negociación en tres pasos (SYN, SYN/ACK y ACK) y la fase de
establecimiento de conexión. Es interesante notar que existe un número de secuencia
generado por cada lado, ayudando de este modo a que no se puedan establecer
conexiones falseadas (spoofing).
La fase de finalización de la conexión utiliza una negociación en cuatro pasos (four-
way handshake), terminando la conexión desde cada lado independientemente. Sin

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.4.3. Dirección MAC


En las redes, la dirección MAC (siglas en inglés de media access control; en español
“control de acceso al medio”) es un identificador de 48 bits (6 bloques hexadecimales)
que corresponde de forma única a una tarjeta o dispositivo de red. Se conoce también
como dirección física, y es única para cada dispositivo. Está determinada y configurada
por el IEEE (los últimos 24 bits) y el fabricante (los primeros 24 bits) utilizando el
organizationally unique identifier. La mayoría de los protocolos que trabajan en la capa
2 del modelo OSI usan una de las tres numeraciones manejadas por el IEEE: MAC-48,
EUI-48, y EUI-64, las cuales han sido diseñadas para ser identificadores globalmente
únicos. No todos los protocolos de comunicación usan direcciones MAC, y no todos
los protocolos requieren identificadores globalmente únicos.
Las direcciones MAC son únicas a nivel mundial, puesto que son escritas directamente,
en forma binaria, en el hardware en su momento de fabricación.
En Arduino es importante poner la dirección MAC correcta para evitar problemas.
En el caso del shield ethernet, la MAC no está incluida en el integrado que implementa
la pila de protocolos TCP/IP, sino que se debe configurar y eso lo hace Arduino desde
el setup().

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

Este proyecto es el diseño de un prototipo para un sistema de automatización de


vivienda, tanto para la gestión, monitoreo y seguridad a través de Internet. Serán
necesarios unos conocimientos básicos de HTML, simplemente para poder hacer la
página Web a nuestro gusto.
El sistema está conformado por un controlador central Arduino Mega el cual se encarga
de manejar toda la lógica que permite simular los sistemas de activación automática de
la iluminación, ventilación automática, alarmas, control de apertura y cierre de puerta.

5.1.1. Áreas a automatizar


Las principales actividades que se desean automatizar mediante este diseño son:
 Seguridad
El sistema tiene un sistema de alarma, es decir en caso de que alguna situación ponga en
riesgo la seguridad de la vivienda (robo, incendio o fuga de gas).
 Ahorro y uso eficiente de la energía
En este aspecto lo que más se desea aprovechar es el ahorro en el sistema de iluminación
y del aire acondicionado, características que a su vez brindan confort a los usuarios,
mediante un sistema automatizado el cual a través de sensores de movimiento y de
temperatura será capaz de determinar cuáles luminarias y sistemas de aire acondicionado
deben estar activos y cuáles no.
 Confort
Cuenta con un sistema de iluminación y ventilación inteligente, así como la posibilidad
de la apertura de una puerta.
 Diseño
Para conseguir las características de un sistema domótico es necesario que además del
órgano central que controle el sistema tengamos 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

27
usuario pueda comunicarse con el sistema y pueda hacer los cambios oportunos
manualmente.
El diagrama del sistema se encuentra en la figura 2.

Figura 2. Diagrama del sistema


Fuente: Elaboración propia

 Sistema anti-intrusos: Protege la vivienda activando la alarma cuando se detecta


una intrusión, a través de un detector de presencia PIR. Implementado en la sala.
 Sistema anti-incendios: Protege la vivienda activando una alarma cuando el
sensor de temperatura detecte altas temperaturas o cuando el sensor de gas MQ
detecte fugas de gas. Implementado en la cocina.
 Activación automática de la iluminación: Enciende y apaga un LED en función
de la luz natural con la ayuda de un LDR. Implementado en la entrada de la casa.
 Control de la iluminación: Es el encendido y apagado de LEDs en función de las
necesidades de los usuarios mediante la página web. Implementado en todas las
habitaciones de la casa. Se puede encender o apagar la iluminación una por una o
todas en conjunto.
 Sistema de ventilación: Automatiza el sistema de ventilación el cual se activa en
función de la temperatura que lea en el sensor DHT11 o por medio de la página
web. Implementado en la sala.

28
 Control de apertura y cierre de puerta: Este se realiza por medio de la página
web. Implementado en la puerta principal.

5.2.Elementos del sistema

Se ha escogido una arquitectura de comunicación centralizada en el que el órgano


central, es decir el servidor, es una placa Arduino Mega en vez de un PC. El porqué de
esta decisión es que la placa tiene las características necesarias para que cumpla con
garantía el funcionamiento del sistema.
Como elementos acoplables se necesitara un Ethernet Shield que se montara en la placa
servidor, este se conectara al router con un cable RJ45. Esto permitirá comunicarnos con
el sistema desde cualquier dispositivo conectado a la red.

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

5.3.Diseño del Sistema

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

Primero se importa un par de librerías, la SPI y la Ethernet.

#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.

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED

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.

En el void loop() se está constantemente verificando si hay alguna conexión de un


cliente. Aquí también se escrible el código html que aparecerá en el servidor web.

31
La siguiente figura muestra el diagrama de flujo del sistema domótico que
implementamos:

Figura 3. Diagrama de flujo


Fuente: Elaboración propia

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

Figura 4. Circuito del Sistema


Fuente: Elaboración propia

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:

 El relé es un elemento que es necesario para gestionar grandes voltajes y


corrientes. Simplemente este interruptor puede encender y apagar enviando
señales desde la placa Arduino.
 Se necesita un relé cuya bobina active el interruptor con una salida digital (5V)
y que soporte la corriente eléctrica de la vivienda.
 Para trabajar con sistemas de un nivel de potencia superior, debemos
implementar circuitos de protección o aislamiento como un controlador de
motores de 15V, o incluso la red eléctrica a 220V, se necesitará una forma
para aislar y proteger el arduino de la capa de control, ya que un error de
conexión o malfuncionamiento de un componente, e incluso el ruido de las
señales o los picos temporales como los de arranques de motor, podrían dañarlo
a nuestro circuito.
 El uso de un optoacoplador es una manera para conseguir el aislamiento entre
circuitos, para evitar que algunas partes del sistema se vean afectados por
corrientes o voltajes excesivos que puedan destruirlos.

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

También podría gustarte