Upload
roger-sarango
View
14
Download
0
Embed Size (px)
Citation preview
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA ELECTRÓNICA Y TELECOMUNICACIONES
1
SISTEMAS DIGITALES
INFORME DEL PROYECTO
Profesor:
Integrantes:
Tema: Desarrollo de un modelo funcional aplicado a la domótica con arduino.
Introducción
Aunque el ser humano todavía no esta arraigado a las propiedades que ofrece la domótica es un
hecho que en un futuro estara instalada en cualquier vivienda. Pero ¿que es la domótica? Se podría
definir como el conjunto de tecnologías aplicadas al control y la automatización inteligente de la
vivienda, que permite una gestión eficiente del uso de la energía además de aportar seguridad,
confort, y comunicación entre el usuario y el sistema. Para poder conseguir las propiedades
comentadas anteriormente es necesario que los sistemas recojan la información de su entorno con
sensores y dispongan de la lógica para actuar en consecuencia utilizando actuadores.
Actualmente los sistemas demóticos tienen un precio muy alto de instalación con lo cual solo es
posible verlo en casasde 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 consiste en la utilización de placas Arduino.
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA ELECTRÓNICA Y TELECOMUNICACIONES
2
Objetivos
Como objetivo de este proyecto nos hemos propuesto crear un sistema domótica simple utilizando las placas de bajo coste Arduino y otros dispositivos, como sensores, actuadores y comunicadores. Habrá que dotar al sistema de la lógica necesaria para que puedan comunicarse las placas que estarán controlando la habitación en la cual hayan sido instaladas.
El proyecto tiene como fin poner en practica todos los conocimientos adquiridos en el desarrollo de la materia, tanto en el desarrollo analítico y practico.
Marco Teórico
Características básicas de Arduino .
En este apartado vamos a describir los principales elementos que componen una placa Arduino y el entorno de desarrollo en el que se programa el código, es decir la parte hardware y software que actúan sobre Arduino.
Hardware
Al ser Arduino una plataforma de hardware libre tanto su diseño como su distribución puede utilizarse libremente para el desarrollo de cualquier tipo de proyecto sin haber adquirido ninguna licencia. Por eso existen varios tipos de placa oficiales, las creadas por la comunidad Arduino o las no oficiales creadas por terceros pero con características similares. En la placa Arduino es donde conectaremos los sensores, actuadores y otros elementos necesarios para comunicarnos con el sistema.
En el proyecto se han utilizado las placas que se tenían a disposición que son Arduino Mega ADK y describiremos a continuación.
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA ELECTRÓNICA Y TELECOMUNICACIONES
3
Arduino Mega ADK
Fig1.Parte frontal del arduino Mega ADK.
Fig2.Reverso de la placa.
La board Arduino Mega ADK está basada en la board Mega2560 pero integra adicionalmente un Host USB para conectarla a celulares, o sistemas basados en Android, esta board tiene 54 I/O digital, de los cuales podemos usar 14 PWMs, 16 canales de entradas análogas, 4 UARTs (hardware serial ports), a 16 MHz. Integra una conexión a USB para programación, entrada de alimentación tipo Jack y conector ICSP. Su uso es muy sencillo, solo se requiere conectarla al computador por medio del cable USB y ya está. Aplicaciones: Su principal uso es la creación o diseño de aplicaciones que requieran interfasar a Arduino con Android, esto implica que desde tu Celular podrías controlar servomotores, luces, leds, adquirir datos, enviar datos, entre otros. Así que si alguna vez pensaste en usar el alto poder de procesamiento de tu celular, pero estabas limitado por los periféricos de salida, Arduino Mega ADK es una excelente opción.
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA ELECTRÓNICA Y TELECOMUNICACIONES
4
Algunas características importantes características: Procesador: ATmega2560 Velocidad de reloj: 16Mhz Puertos I/O: 54 Memoria: Flash 256K Modo de programación: USB por software arduino. Voltaje de entrada: 7-12VDc Voltaje de operación: 5Vdc
Software
La plataforma Arduino tiene un lenguaje propio que esta basado en C/C++ y por ello soporta las funciones del estandar C y algunas de C++. Sin embargo, es posible utilizar otros lenguajes de programacion y aplicaciones populares en Arduino como Java, Processing, Python, Mathematica, Matlab, Perl, Visual Basic, etc. Esto es posible debido a que Arduino se comunica mediante la transmisión de datos en formato serie que es algo que la mayoría de los lenguajes anteriormente citados soportan. Para los que no soportan el formato serie de forma nativa, es posible utilizar software intermediario que traduzca los mensajes enviados por ambas partes para permitir una comunicación fluida. Es bastante interesante tener la posibilidad de interactuar con Arduino
mediante esta gran variedad de sistemas y lenguajes puesto que dependiendo de cuales sean las necesidades del problema que vamos a resolver podremos aprovecharnos de la gran compatibilidad de comunicación que ofrece.
El entorno de desarrollo de Arduino es sencillo e intuitivo además puede descargarse gratuitamente desde su pagina oficial para distintos sistemas operativos. Ha sido implementado con Processing, un lenguaje similar a Java. Su ultima version es la 1.5.5 aunque en el proyecto se ha utilizado la 1.5.0.
Esta formado por una serie de menús, una barra de herramientas con botones para las funciones comunes, un editor de texto donde escribiremos el código, un área de mensajes y una consola de texto. En la ilustración 4 se puede apreciar la composición del software de Arduino.
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA ELECTRÓNICA Y TELECOMUNICACIONES
5
Fig3.IDE de Arduino .
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA ELECTRÓNICA Y TELECOMUNICACIONES
6
Desarrollo del Proyecto
Una vez que conocimos los elementos básicos de arduino vamos a empezar con el desarrollo del
proyecto el cual se realizara una explicación por módulos separados , para poder realizar un detalle
completo de los sensores y el funcionamiento de los mismos.
Modulo de temperatura (Lm35)
Para el modulo de temperatura utilizamos un sensor Lm35 y una LCD para visualizar la
temperatura ambiente .
Para la LCD utilizamos la librería de arduino liquidCristal. La librería LiquidCrystal, permite
controlar pantallas LCD que son compatibles con el controlador Hitachi HD44780. Que son la
mayoría de LCDS que se encuentran en el mercado local , se pueden reconocer normalmente por
que poseen una interfaz de 16 pines.
La conexión entre arduino y el sensor lm35 es muy fácil debido a que arduino facilita la lectura de
señales analógicas , mediante los pines destinados a este fin.
El sensor LM35 el cual nos mide una temperatura de -55ºC a 150ºC y una precisión de 0.5ºC a
25ºC; este sensor es suficientemente completo, se puede utilizar para realizar pequeños inventos o
proyectos y que pueden ser realizados en casa.
Para la conexión con arduino se realizo la siguiente conexión de la figura 3.
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA ELECTRÓNICA Y TELECOMUNICACIONES
7
Fig3.Esquema de conexión LCD + lm35 Arduino.
Descripción del circuito LCD.
El pin RS del LCD conectado a la E/S digital en el pin 12
El pin enable del LCD conectado a la E/S digital en el pin 11.
Los pines D4 - D7 conectado a las E/S digitales desde el pin 5 hasta el 2.
Los pines de voltaje y tierra conectados a +5V y tierra.
El pin Vo, que controla el constraste, conectado a un potenciómetro.
Descripción del circuito lm35.
El pin 1 del sensor sensor es Vo.
El pin 2 que es la salida analogíca se conecta a la entrada A0 de arduino.
El pin 3 se conecta a GND.
Para la obtención de temperatura del sensor lm35 implementamos el siguiente código.
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA ELECTRÓNICA Y TELECOMUNICACIONES
8
Fig4. Código para realizar el censado de temperatura.
En el cual se puede observar que realizamos con ayuda de un for, la toma de 8 muestras a las cuales
se le obtuvo el promedio para así mejorar la precisión .
La ecuación característica del sensor se detalla en el datashett .
Ahora en nuestro caso particular debemos mostrar la temperatura del sensor en la LCD, para esto
utilizamos las funciones de la librería, las cuales facilitan el desarrollo del código .
El código implementado de este modulo se muestra a continuación.
Fig5. Código para mostrar el valor de variable tempc en la LCD.
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA ELECTRÓNICA Y TELECOMUNICACIONES
9
Modulo de intensidad luminosa (LDR).
Para este modulo nos basamos en un LDR el cual es sinónimo de "Light Dependent Resistor". Es de
tipo sa de resistencia cuyo valor cambia con la intensidad o la cantidad de luz que incide sobre él. A
medida que la cantidad de luz que cae sobre él aumenta la su resistencia disminuye y
viceversa. Entender por qué sucede requerirá entrar en las profundidades de la materia con la que se
hace y esto no es realmente un artículo para eso. Sin embargo, hay muchos artículos que va a
resolver la cuestión, pero por ahora sólo es necesario recordar que el valor de resistencia cambia
con la cantidad de luz que cae sobre él.
Este modulo tiene una lógica simple, se basa en el hecho de que la intesidad luminosa en la
habitación hará que varié la intensidad de luz de una lámpara led , una solución simple que ideamos
es en función de la intensidad de luz hacer variar el PWM que controla la intesidad de luz de la
lámpara led y así tener una relación directa entre el sensor y el actuador.
Para el desarrollo del algoritmo de control utilizamos dos funciones muy utliles de arduino que son :
Map
Re-mapea un número desde un rango hacia otro. Ésto significa que, un valor (value) con respecto al
rango
Parámetros
value: el número (valor) a mapear.
fromLow: el límite inferior del rango actual del valor.
fromHigh: el límite superior del rango actual del valor.
toLow: límite inferior del rango deseado.
toHigh: límite superior del rango deseado.
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA ELECTRÓNICA Y TELECOMUNICACIONES
10
Devuelve
El valor mapeado.
Constrain
Descripción
Restringe un número a un rango definido.
Parámetros
x: el número a restringir, cualquier tipo de datos.
a: El número menor del rango, cualquier tipo de datos.
b: El número mayor del rango, cualquier tipo de datos.
Retorna
x: si x está entre a y b
a: si x es menor que a
b: si x es mayor que b
Para el desarrollo de este modulo se implemento el siguiente codigo.
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA ELECTRÓNICA Y TELECOMUNICACIONES
11
Fig5. Código para el modulo control de iluminacion.
Modulo de control desde el teléfono (Bluethoo).
Eldispositivo utilizado es un módulo bluetooth HC-06 y es compatible con Arduino. Dicho
módulo trabajo mediante conexión serie con el Arduino, y se comunica con el exterior mediante
bluetooth, ya sea a través de un teléfono móvil, ordenador, tablet, etc.
Fig6. Dispositivo Bluethooth HC-06.
Funciona a 3.3V, Como se ve solo disponemos de 4 pines que son los necesarios, por un lado
tenemos VCC que irá conectado a los 3.3V del Arduino, por otro GND que ira al pin GND de
Arduino, después tenemos TXD que irá conectado al pin RXD del Arduino y RXD que irá al pin
TXD de Arduino.
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA ELECTRÓNICA Y TELECOMUNICACIONES
12
Para el desarrollo de este modulo se implemento una lógica basada en casos, los cuales responden a
datos que llegan via Bluethooth a nuestro Arduino por uno de sus puertos seriales, y dependiendo
de el dato que arrive se cumplirá la lógica programada.
El código se detalla a continuación .
Fig7. Código para la comunicación del dispositivo bluethooth y arduino.
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA ELECTRÓNICA Y TELECOMUNICACIONES
13
Una vez detallados todos los módulos se puede mostrar la integración de cada uno de ellos en un
solo código fuente el cual fue el que se implemento en el proyecto .
El código final se adjunta al final del documento.
A continuación se muestra algunas imágenes del proyecto implementado
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA ELECTRÓNICA Y TELECOMUNICACIONES
14
Referencias
Ejemplo Blink LCD. [En línea].
Disponible en: < http://arduino.cc/es/Tutorial/LiquidCrystalBlink>
Pagina oficial de Arduino: [En linea]
disponible en:<http://www.arduino.cc/ >
Información sobre sensores: [En linea]
Disponible en :<http://www.ladyada.net/learn/sensors/index.html >