1. - 1 -
TECNICAS DIGITALES II
Proyecto de aplicación
ULTRA HOUSE 3000
Profesor Titular: Ing. Daniel Remondegui
Alumnos:
FARIAS, Andrés Legajo: 14192
NOELLO, Walter Legajo: 4658
2014
2. - 2 -
Contenido
Introducción: ...........................................................................................................................................................3
Características del Proyecto:..................................................................................................................................3
Objetivo:..............................................................................................................................................................3
Alcance:...............................................................................................................................................................4
Justificación del Proyecto:......................................................................................................................................4
Descripción del Proyecto:.......................................................................................................................................4
Materiales que utilizaremos: ..............................................................................................................................5
Placa de desarrollo ARDUINO MEGA 2560 (Micro ATMEL 2560) ...................................................................5
Módulo ARDUINO ETHERNET SHIELD.............................................................................................................6
Módulos de comunicación inalámbrica..........................................................................................................6
Esquema de Interconexión:....................................................................................................................................7
Cronograma del Proyecto:......................................................................................................................................8
Desarrollo del Proyecto:.........................................................................................................................................8
Etapas principales: ..............................................................................................................................................8
Diagrama de flujo del Proyecto:..........................................................................................................................9
Definición y programación de las entradas/salidas: .........................................................................................10
Programa ON/OFF 2 LED´s:...........................................................................................................................10
Manejo de entradas/salidas vía Web................................................................................................................11
Programa control de entradas/salidas vía Web: ..........................................................................................11
Foto de la pantalla del programa control de entradas/salidas vía Web:......................................................14
Diseño de los circuitos de TX y RX:....................................................................................................................15
Configuración codificador:............................................................................................................................15
Configuración decodificador:........................................................................................................................15
Circuito básico de salida Opto Triac - Triac:..................................................................................................16
Diseño de las placa de TX:.............................................................................................................................16
Diseño de las placa de RX con salida Opto Triac – Triac:..............................................................................16
Fotos: ................................................................................................................................................................17
Placa de TX:...................................................................................................................................................17
Placa de RX con salida Opto Triac – Triac: ....................................................................................................17
Placa de Salidas Cableadas: ..........................................................................................................................17
Sistema integrado:........................................................................................................................................18
Objetivos alcanzados:............................................................................................................................................18
Objetivos no alcanzados:.......................................................................................................................................19
Conclusiones:.........................................................................................................................................................19
3. - 3 -
Introducción:
La ingeniería es el conjunto de conocimientos y técnicas científicas aplicadas al desarrollo,
implementación, mantenimiento y perfeccionamiento de estructuras (tanto físicas como
teóricas) para la resolución de problemas que afectan la actividad cotidiana de la sociedad.
Para ella, el estudio, conocimiento, manejo y dominio de las matemáticas, la física y otras
ciencias es aplicado profesionalmente tanto para el desarrollo de tecnologías, como para el
manejo eficiente de recursos y/o fuerzas de la naturaleza en beneficio de la sociedad. La
ingeniería es la actividad de transformar el conocimiento en algo práctico.
Otra característica que define a la ingeniería es la aplicación de los conocimientos científicos
a la invención o perfeccionamiento de nuevas técnicas. Esta aplicación se caracteriza por
usar el ingenio principalmente de una manera más pragmática y ágil que el método
científico, puesto que la ingeniería, como actividad, está limitada al tiempo y recursos dados
por el entorno en que ella se desenvuelve.
En nuestro caso el problema a resolver es como controlar de manera remota el encendido y
apagado de equipos dentro de un recinto al que, debido a la distancia, no tenemos acceso
físico momentáneamente.
Características del Proyecto:
Objetivo:
Tener control sobre todos los artefactos eléctricos y electrónicos que se encuentran dentro
de nuestra casa de forma remota, tanto desde un navegador web de un computadora
personal, como una Tablet o Smartphone.
Con el proyecto implementado tendremos la posibilidad de apagar artefactos para
economizar energía, programar el sistema para que actúe en forma autónoma encendiendo
calefactores o A/A dependiendo de la temperatura de la sala, hacer un monitoreo remoto
mediante una cámara web y tomar decisiones a partir de lo que vemos, integrar el sistema
de alarmas a nuestro sistema ULTRA HOUSE 3000, de manera que nos avise en caso de un
evento que hayamos programado previamente.
4. - 4 -
Alcance:
En ésta primer etapa podremos controlar vía web un pull de 4 dispositivos independientes,
dos de ellos estarán conectados a la placa controladora mediante un cableado que va desde
las entradas/salidas de la placa controladora a los mismos.
Los otros dos dispositivos los conectaremos en forma inalámbrica para dar una mayor
flexibilidad al sistema, facilitando la interconexión de electrodomésticos que por algún
motivo no podemos alcanzar mediante el cableado físico.
Justificación del Proyecto:
En el mundo actual, en donde los recursos energéticos son cada vez más escasos debido a la
superpoblación de artefactos eléctricos y electrónicos que consumen gran cantidad de la
energía que producimos resulta primordial encontrar diversas soluciones que nos permitan
economizar energía.
Por otro lado hay situaciones en las que necesitamos conocer las condiciones en que se
encuentra nuestra casa en momentos que no nos encontramos en ella, ya sean las
condiciones de temperatura, humedad, estados del sistema de alarma o simplemente poder
observar y tomar decisiones de manera remota desde cualquier parte de mundo, incluso
mediante la comodidad de nuestro Smartphone.
Descripción del Proyecto:
Para la realización del proyecto utilizaremos una placa de desarrollo Arduino Mega 2560,
que cuenta con un microcontrolador ATmega2560. Mediante la programación del mismo
podremos controlar los estados de una serie de pines de entrada/salida.
Para realizar el control vía web adicionaremos al sistema un placa Arduino Shield, que
mediante una programación previa nos permitirá crear un servidor web al que accederemos
para controlar la activación y desactivación de las entradas/salidas.
Por otro lado debemos crear el hardware necesario para permitir que la interconexión de
alguno de los dispositivos con la placa controladora sea inalámbrica. Para ello diseñaremos e
implementaremos una placa transmisora, que estará conectada directamente a las
entradas/salidas de la placa controladora. Tendrá la tarea de retransmitir la información que
reciba de la placa al dispositivo que queremos controlar y viceversa.
Para que funcione correctamente crearemos tantas placas de recepción como dispositivos
tengamos intención de controlar.
5. - 5 -
Materiales que utilizaremos:
Placa de desarrollo ARDUINO MEGA 2560 (Micro ATMEL 2560)
La placa de desarrollo Arduino Mega 2560 está basada en un microcontrolador marca Atmel
modelo ATmega 2560. El mismo cuenta con 54 puertos de entrada/salida digitales, de los
cuales 15 pueden ser utilizados como salidas PWM, 16 entradas analógicas, 4 UARTs
(puertos serie por hardware), un cristal oscilador de 16 MHz, una conexión USB, un conector
de alimentación, un conector ICSP y un botón de reset.
Resumen de características:
Microcontroller ATmega2560
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-20V
Digital I/O Pins 54 (of which 15 provide PWM output)
Analog Input Pins 16
DC Current per I/O Pin 40 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 256 KB of which 8 KB used by bootloader
SRAM 8 KB
EEPROM 4 KB
Clock Speed 16 MHz
6. - 6 -
Módulo ARDUINO ETHERNET SHIELD
El módulo Arduino Ethernet Shield permite conectar a internet a una placa Arduino. Está
basado en un chip marca WIZnet modelo iEthernet W5100. Esta provee la configuración IP
para los protocolos TCP y UDP. Soporta hasta cuatro conexiones simultáneas.
Para programar el módulo es necesario utilizar las librerías Ethernet de Arduino.
El módulo cuenta con un conector estándar RJ-45, con la posibilidad de utilizar la función de
Power Over Ethernet, para alimentar dispositivos mediante la red LAN.
Posee una ranura MicroSD en la que podemos incluir una memoria de este tipo para
almacenar datos de servicio sobre la red interna.
Módulos de comunicación inalámbrica
Operan dentro de un espectro en frecuencia de 2 a 20KHz transmitiendo señales digitales.
8. - 8 -
Cronograma del Proyecto:
Junio 7, programación de micro Atmel para controlar 4 salidas desde un entorno web.
Junio 14, diseño de circuito para los módulos de salidas RF
Junio 21, interconexión del micro con periféricos electrónicos.
Junio 28, presentación del proyecto.
Desarrollo del Proyecto:
Como buena práctica de desarrollo fraccionamos el proyecto en etapas claramente definidas
que trabajaremos de manera independiente y en forma secuencial. Por lo dicho
trabajaremos en la primer etapa hasta obtener un correcto funcionamiento, luego
comenzaremos con la segunda asegurando la integración con la primera y así
sucesivamente.
Etapas principales:
1. Definición y programación de las entradas/salidas en la placa ARDUINO MEGA.
2. Creación del servidor de datos en el módulo ARDUINO Ethernet Shield.
3. Programación del control de entradas/salidas vía Web.
4. Diseño y prueba de los módulos inalámbricos de comunicación.
5. Interconexión del módulo de TX con la placa ARDUINO MEGA.
6. Interconexión del módulo de RX con Los dispositivos a controlar.
7. Prueba del sistema.
Más allá de tener definidas las principales etapas del proyecto que seguimos en el caso que
todo funcione de la manera esperada, debimos prever que pasos seguir en el caso que se
nos presentara algún inconveniente en el trascurso del mismo.
Por tal motivo desarrollamos un diagrama de flujo que contempla todas las situaciones que
senos pudieran presentar, detallando el proceso de manera end to end.
10. - 10 -
Definición y programación de las entradas/salidas:
Comenzamos programando el encendido y apagado de dos LED´s, simulando los dispositivos
que queremos controlar, mediante la placa ARDUINO MEGA.
Programa ON/OFF 2 LED´s:
const int LED_Rojo=13;
const int LED_Verde=12;
int Byte_entrada=0;
void setup()
{
Serial.begin(9600);//Inicia el puerto serie
pinMode(LED_Rojo,OUTPUT);
pinMode(LED_Verde, OUTPUT);
digitalWrite(LED_Rojo,LOW);
digitalWrite(LED_Verde,LOW);
}
void loop()
{
if(Serial.available()>0)//Puerto Serie listo?
{
Byte_entrada=Serial.read();//Leemos el puerto
switch (Byte_entrada)
{
case 0:digitalWrite(LED_Rojo,LOW);
break;
case 1:digitalWrite(LED_Rojo,HIGH);
break;
case 2:digitalWrite(LED_Verde,LOW);
break;
case 3:digitalWrite(LED_Verde,HIGH);
break;
}
}
}
11. - 11 -
Una vez que comprobamos el correcto funcionamiento de las entradas/salidas pasamos
montar el servidor y programar el manejo de entradas/salidas vía Web. No debemos olvidar
incluir las librerías SPI y Ethernet.
Manejo de entradas/salidas vía Web
Programa control de entradas/salidas vía Web:
#include <SPI.h>
#include <Ethernet.h>
//Declaración de la direcciones MAC e IP. También del puerto 80
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 177 };
EthernetServer server(80);
int PIN_LED_A1=6, PIN_LED_A2=7,PIN_LED1_2=8, PIN_LED3=11, PIN_LED4=12;
String readString=String(30);
String state1=String(3);
String state2=String(3);
String state3=String(3);
String state4=String(3);
void setup()
{
Ethernet.begin(mac, ip); //Inicializamos con las direcciones asignadas
server.begin();
pinMode(PIN_LED_A1,OUTPUT);
pinMode(PIN_LED_A2,OUTPUT);
pinMode(PIN_LED1_2,OUTPUT);
//pinMode(PIN_LED2_2,OUTPUT);
pinMode(PIN_LED3,OUTPUT);
pinMode(PIN_LED4,OUTPUT);
//digitalWrite(PIN_LED,HIGH);
state1=state2=state3=state4="OFF";
}
void loop()
{
EthernetClient cliente= server.available();
if(cliente)
{
boolean lineaenblanco=true;
while(cliente.connected())//Cliente conectado
{
if(cliente.available())
{
char c=cliente.read();
if(readString.length()<30)//Leemos petición HTTP caracter a caracter
{
12. - 12 -
readString.concat(c); //Almacenar los caracteres en la variable readString
}
if(c=='n' && lineaenblanco)//Si la petición HTTP ha finalizado
{
int LED = readString.indexOf("LED=");
if(readString.substring(LED,LED+6)=="LED=1T")
{
digitalWrite(PIN_LED_A1,LOW); //DIREECIONO EL LED 1
delay (200);
digitalWrite(PIN_LED1_2,HIGH); //ENVIO EL DATO PARA ENCENDER EL LED SEGUN LA DIREECION
delay (200);
state1="ON";
digitalWrite(PIN_LED_A1,HIGH);//saco la direccion del led 1
digitalWrite(PIN_LED1_2,LOW); //saco el dato
}
if (readString.substring(LED,LED+6)=="LED=1F")
{
digitalWrite(PIN_LED_A1,LOW);//ENVIO EL DATO PARA ENCENDER EL LED SEGUN LA DIREECION 1
delay (200);
digitalWrite(PIN_LED1_2,LOW);//ENVIO EL DATO PARA APAGAR EL LED SEGUN LA DIREECION
delay (200);
state1="OFF";
digitalWrite(PIN_LED_A1,HIGH);//saco la direccion del led 1
}
if (readString.substring(LED,LED+6)=="LED=2F")
{
digitalWrite(PIN_LED_A2,LOW);//ENVIO EL DATO PARA ENCENDER EL LED SEGUN LA DIREECION 2
delay (200);
digitalWrite(PIN_LED1_2,LOW);//ENVIO EL DATO PARA APAGAR EL LED SEGUN LA DIREECION
state2="OFF";
delay (200);
digitalWrite(PIN_LED_A2,HIGH);//saco la direccion del led 2
}
if (readString.substring(LED,LED+6)=="LED=2T")
{
digitalWrite(PIN_LED_A2,LOW);
delay (200);
digitalWrite(PIN_LED1_2,HIGH);
delay (200);
state2="ON";
digitalWrite(PIN_LED_A2,HIGH);
digitalWrite(PIN_LED1_2,LOW);
}
if(readString.substring(LED,LED+6)=="LED=3T")
{
digitalWrite(PIN_LED3,HIGH);
state3="ON";
}
if (readString.substring(LED,LED+6)=="LED=3F")
{
14. - 14 -
cliente.print("<br><hr>");
cliente.println("<input type=submit value=ACTIVAR style=width:200px;height:70px
onClick=location.href='./?LED=4T'>");
cliente.println("<input type=submit value=DESACTIVAR style=width:200px;height:70px
onClick=location.href='./?LED=4F'>");
cliente.print(" ESTADO : ");
cliente.print(state4);
cliente.print("<br><hr><br>");
cliente.println("</center>");
cliente.println("</body>");
cliente.println("</html>");
cliente.stop();//Cierro conexión con el cliente
readString="";
}
}
}
}
}
Foto de la pantalla del programa control de entradas/salidas vía Web:
15. - 15 -
Diseño de los circuitos de TX y RX:
Para la realización de los circuitos de TX y RX además de los módulos de TX y RX
propiamente dichos utilizamos un codificador y tantos decodificadores como dispositivos
tengamos intención de controlar de manera inalámbrica.
El diseño se basa en los integrados HT12E (codificador) y HT12D (decodificador), que
permiten enviar hasta 4 bits de datos y 8 de dirección (por lo que sería posible transmitir a
hasta 256 dispositivos en la misma frecuencia)
Transmisor (codificador): Receptor (decodificador):
Configuración codificador:
Patas 1 a 8: configuran la dirección (igual en el TX y RX para lograr comunicación).
Patas 10 a 13: ingreso de datos que se desean enviar.
Pata 14: control de envío (en estado bajo transmite)
Patas 15 y 16: conectar a una R de 1 MΩ para generar la señal de clock interna.
Pata 17: salida de datos. Debe ser conectada al módulo de TX.
Configuración decodificador:
Patas 1 a 8: configuran la dirección (igual en el TX y RX para lograr comunicación).
Patas 10 a 13: salida de datos recibidos. (a LEDs o cargas con I < 5mA).
Pata 14: conectada a la salida del módulo de recepción de RF.
Patas 15 y 16: conectar a una R de 47 KΩ para generar la señal de clock interna.
Pata 17: Indica si la recepción fue correcta.
Como la salida del decodificador sólo puede manejar cargas que consuman menos de 5mA y
nosotros queremos controlar equipos de mayor consumo agregaremos un circuito a las
salidas que estará compuesto por un par Opto Triac-Triac, de ésta manera además de
permitir manejar equipos de mayor consumo lograremos aislar el circuito de control del
circuito de potencia.
16. - 16 -
Circuito básico de salida Opto Triac - Triac:
Diseño de las placa de TX:
Diseño de las placa de RX con salida Opto Triac – Triac:
17. - 17 -
Fotos:
Placa de TX:
Placa de RX con salida Opto Triac – Triac:
Placa de Salidas Cableadas:
18. - 18 -
Sistema integrado:
Objetivos alcanzados:
Tener control sobre artefactos eléctricos y electrónicos que se encuentran dentro de
nuestra casa de forma remota, tanto desde un navegador web de un computadora
personal, como desde una Tablet o Smartphone.
Que el sistema opere de forma autónoma evaluando el estado de sensores externos
y activando una salida en consecuencia.
Como consecuencia aprendimos a programar en una de las plataformas de hardware libre
más populares del momento como es Arduino. Sin dejar de lado que dicho plataforma es
sólo una integración estandarizada de un microcontrolador con entradas y salidas fácilmente
accesibles, por lo que es fácilmente trasladable a cualquier microcontrolador de similares
características.
Por otro lado obtuvimos conocimientos acerca de la programación HTML para lograr el
diseño de la página web desde donde controlamos nuestros dispositivos.
Además aprendimos a desarrollar hardware propio a partir de los conocimientos que fuimos
adquiriendo a lo largo de la carrera. Un ejemplo de esto es el uso de un codificador en la
etapa transmisora con el fin de evitar la utilización de múltiples transmisores y abaratar
costos. También se puede apreciar en el uso de los decodificadores de los receptores y por
último en la etapa de salida, que decidimos usar un Opto Triac para aislar el circuito de
control del de potencia y un Triac para lograr manejar equipos con mayores consumos.
19. - 19 -
Objetivos no alcanzados:
No logramos realizar el monitoreo remoto vía cámara web.
El primer inconveniente que nos encontramos fue conseguir el puente H sobre el que
montaríamos la webcam y nos permitiría ejecutar la rotación mecánica y el tilt de la misma.
Esa demora que no pudimos subsanar no nos permitió avanzar en el control de la misma y la
integración a la página web.
Conclusiones:
A partir de este tipo de proyectos logramos aplicar todos los conocimientos adquiridos
durante el transcurso de nuestra carrera y comenzar a comprender el potencial de
desarrollo que tenemos.
Los inconvenientes que se presentaron a medida que íbamos avanzando no hicieron otra
cosa que forzarnos a investigar y realizar pruebas que finalmente nos terminaron
enriqueciendo, sea que hayamos logrado el objetivo o no, en cuyo caso logramos entender
que fue lo que nos lo impidió y de esta manera tenerlo en cuenta para el futuro.
Particularmente con respecto al proyecto implementado, comprendimos la gran versatilidad
de los microcontoladores para realizar diversas aplicaciones, logrando la mayor parte de los
objetivos planteados y dejando abiertas muchas posibilidades de ampliación sobre nuestro
sistema que seguiremos desarrollando de manera particular para explotar todas las
posibilidades, sumando etapas a medida que nos surjan ideas, necesidades o incluso como
desafío para integrar los conocimientos que aún nos quedan por adquirir.