You are on page 1of 24

INTRODUCCIN

En este trabajo analizamos la comunicacin inalmbrica, especficamente Wi-Fi a travs de un


microcontrolador , la idea es desarrollar un proyecto de control inalmbrico haciendo uso de la red de
Wlan.
Evaluaremos alternativas en cuanto a materiales a usarse y el gasto econmico que tienen cada una de
estas opciones .
Usaremos en el trabajo el microcontralador Arduino Uno placa la cual es conocida en la actualidad
por ser utilizada para realizar aplicaciones de ensayo especialmente para estudiantes la cual consta con
entradas y salidas anlogas y digitales asi como tambin una amplia gama de mdulos compatibles
para realizar un trabajo completo. En este proyecto implementaremos un programa de control a travs
de la red utilizando como interface una simple pagina Web desde la cual podremos controlar el
encendido y apagado de luces.





















DESARROLLO

Al iniciar el trabajo nos encontramos con dos grandes disyuntivas las cuales eran utilizar el modulo
Wi-Fi para Arduino el cual nos permite transmitir datos de manera inalmbrico o usar un modulo
Ethernet el cual requerira de mas equipos para establecer una comunicacin inalmbrica . El factor
fundamental para tomar la decisin fue el elevado precio que debamos contemplar si nos
inclinbamos por los modulos Wi-Fi y la poca informacin que se manejaba de estos componentes .

Dejamos ac informacin econmica de precios los cuales fueron extrados desde la pgina Olimex
Chile al dia de 23 de Junio de 2014 :


Opcin 1:
-Mdulo Wi-Fi / WIZ610wi
-Arduino WiFi Shield (WIZ610)
- Arduino Uno - R3
- Transformador AC/DC 9V 650mA Regulado
- Cable USB A/Macho B/Macho




Opcin 2:

-Arduino Uno - R3
-Transformador AC/DC 9V 650mA Regulado
-3 Cable USB A/Macho B/Macho
-Arduino Ethernet Shield R3
-CAT 6 Cable - 3ft (0.91mts)




Arduino Uno

El Arduino Uno es una placa electrnica basada en el microprocesador Atmega328. Cuenta con 14
pines digitales de entrada / salida (de los cuales 6 pueden ser utilizados como salidas PWM), 6
entradas analgicas, un resonador cermico de un 16 MHz, una conexin USB, un conector de
alimentacin, un header ICSP, y un botn de reinicio. Contiene todo lo necesario para apoyar el
microcontrolador; basta con conectarlo a un ordenador con un cable USB, o alimentarla con un
adaptador o la batera para empezar de CA a CC.
El Uno se diferencia de todas las placas anteriores en que no utiliza el chip controlador de USB a serial
FTDI. En lugar de ello, se cuenta con el Atmega16U2 como convertidor USB a serial.













Resumen
Microcontroladores ATmega328
Tensin de funcionamiento 5V
Voltaje de entrada
(recomendado)
7-12V
Voltaje de entrada (lmites) 6-20V
Digital I / O Pins
14 (de los cuales 6
proporcionan PWM)
Pines de entrada analgica 6
Corriente continua para las
E / S Pin
40 mA
Corriente de la CC para
Pin 3.3V
50 mA
Memoria Flash
32 KB ( ATmega328 ) de
los cuales 0,5 KB
utilizado por el gestor de
arranque
SRAM 2 KB ( ATmega328 )
EEPROM 1 KB ( ATmega328 )
Velocidad del reloj 16 MHz

Memoria
El ATmega328 tiene 32 KB (con 0,5 KB utilizado por el gestor de arranque). Tambin dispone de 2
KB de SRAM y 1 KB de EEPROM (que puede ser ledo y escrito con la librera EEPROM ).
Entradas y Salidas

Cada uno de los 14 pines digitales en el Uno se puede utilizar como una entrada o salida, utilizando las
funciones pinMode () ,digitalWrite () , y () digitalRead . Operan a 5 voltios. Cada pin puede
proporcionar o recibir un mximo de 40 mA y tiene una resistencia de pull-up (desconectado por
defecto) de 20-50 kOhms. Adems, algunos pines han especializado funciones:

De serie: 0 (RX) y 1 (TX). Se utiliza para recibir (RX) y de transmisin (TX) TTL datos en serie. Estos
pines estn conectados a los pines correspondientes del ATmega8U2 USB-to-TTL de chips de serie.
Interrupciones externas:. 2 y 3 Estos pines pueden ser configurados para activar una interrupcin en un
valor bajo, un flanco ascendente o descendente, o un cambio en el valor.
PWM: 3, 5, 6, 9, 10, y 11 proporcionan PWM de 8 bits con la funcin analogWrite () .
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Estos pines soportan comunicacin SPI utilizando
la biblioteca de SPI .
LED:. 13 Hay un built-in LED conectado al pin digital 13 Cuando el pin es de alto valor, el LED est
encendido, cuando el pasador es bajo, es apagado..
El Uno tiene 6 entradas analgicas, etiquetados A0 a A5, cada uno de los cuales proporcionan 10 bits
de resolucin (es decir, 1.024 valores diferentes). Por defecto se miden desde el suelo a 5 voltios,
aunque es posible cambiar el extremo superior de su rango con el pin AREF y la funcin
analogReference (). Adems, algunos pernos han especializado funcionalidad:
TWI: A4 o A5 pin SDA y SCL o pin. Apoyar la comunicacin TWI utilizando la librera Wire .
Hay un par de otras patas de la placa:
AREF. Voltaje de referencia para las entradas analgicas. Se utiliza con analogReference ().
Restablecer. Lleve esta lnea BAJO para reiniciar el microcontrolador. Normalmente se utiliza para
agregar un botn de reinicio para escudos que bloquean el uno en el tablero.

Comunicacin
El Arduino Uno tiene una serie de instalaciones para la comunicacin con un ordenador, otro Arduino,
u otros microcontroladores. El ATmega328 ofrece UART TTL (5V) de comunicacin en serie, que
est disponible en los pines digitales 0 (RX) y 1 (TX). Un ATmega16U2 en los canales de mesa esta
comunicacin serie a travs de USB y aparece como un puerto Com virtual para el software en el
ordenador. El firmware '16U2 utiliza los controladores COM USB estndar, y no se necesita ningn
controlador externo. El software de Arduino incluye un monitor de serie que permite que los datos
simples de texto que se envan desde y hacia la placa Arduino. Las RX y TX LED en el tablero
parpadearn cuando se estn transmitiendo datos a travs del chip de USB a serie y conexin USB al
ordenador (pero no para la comunicacin en serie en los pines 0 y 1).

Una biblioteca SoftwareSerial permite la comunicacin en serie en cualquiera de los pines digitales de
la ONU.
El ATmega328 tambin es compatible con I2C (TWI) y la comunicacin SPI. El software de Arduino
incluye una biblioteca de alambre para simplificar el uso de la I2C bus; ver la documentacin para ms
detalles. Para la comunicacin SPI, utilice la biblioteca de SPI .











Arduino Ethernet Shield

La Arduino Ethernet Shield permite a una placa Arduino conectarse a internet. Est basada en el chip
ethernet Wiznet W5100 (datasheet). El Wiznet W5100 provee de una pila de red IP capaz de TCP y
UDP. Soporta hasta cuatro conexiones de sockets simultneas. Usa la librera Ethernet para escribir
programas que se conecten a internet usando la shield.
La ethernet shield dispone de unos conectores que permiten conectar a su vez otras placas encima y
apilarlas sobre la placa Arduino.
Arduino usa los pines digitales 10, 11, 12, y 13 (SPI) para comunicarse con el W5100 en la ethernet
shield. Estos pines no pueden ser usados para e/s genricas.

La shield provee un conectore ethernet estndar RJ45
El botn de reset en la shield resetea ambos, el W5100 y la placa Arduino.
La shield contiene un nmero de LEDs para informacin:
PWR: indica que la placa y la shield estn alimentadas
LINK: indica la presencia de un enlace de red y parpadea cuando la shield enva o recibe datos
FULLD: indica que la conexin de red es full duplex
100M: indica la presencia de una conexin 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 enva 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 interrupcin desde el W5100, pero esto no est soportado por la librera
Ethernet. El jumper conecta el pin INT del W5100 al pin digital 2 de Arduino.
El slot SD en la shield no est soportado por el software Arduino.




El dispositivo ruteador empleado para este proyecto pertenece a la empresa TP-LINK y a continuacin
se muestran sus caractersticas y modelo



Prestaciones:
Velocidad de transmisin inalmbrica de datos a 150 Mbps ideal para la transmisin de vdeo, juegos
en lnea y llamadas por Internet
Encriptacin inalmbrica de seguridad slo al presionar el botn QSS
Control de ancho de banda basado en IP permite a los administradores determinar la cantidad de ancho
de banda asignado a cada PC
Puente WDS inalmbrico ofrece una interconexin de ampliar su red inalmbrica
Caractersticas:
Interface:
4 puertos LAN de 10/100Mbps
1 puerto WAN 10/100Mbps
Botones:
Botn de configuracin rpida de seguridad
Botn de reinicio
Alimentacin: 9VDC / 0.6A
Estandar: IEEE 802.11n*, IEEE 802.11g, IEEE 802.11b
Antena: Fija, omnidireccional de 5dBi
Frecuencia: 2.4-2.4835GHz
Seal:
11n: Hasta 150Mbps (dinmico)
11g: hasta 54Mbps (dinmico)
11b: hasta 11Mbps (dinmico)
EIRP: <20dBm(EIRP)
Sensibilidad de recepcin:
130M: -68dBm@10% PER
108M: -68dBm@10% PER
54M: -68dBm@10% PER
11M: -85dBm@8% PER
6M: -88dBm@10% PER
1M: -90dBm@8% PER
Funciones Wireless:
Activar / Desactivar radio inalmbrica, WDS Bridge, WMM, estadsticas inalmbricas
Seguridad Wireless:
64/128/152-bit WEP / WPA / WPA2,WPA-PSK / WPA2-PSK
WAN: IP dinmica / IP esttica / PPPoE /
PPTP (Acceso dual) / L2TP (Acceso dual) / BigPond
DHCP
Servidor, cliente, lista de cliente DHCP, reserva de direccin
Calidad de servicio:
WMM, Control de Ancho de Banda
Port Forwarding: servidor virtual, Port Triggering, UPnP, DMZ
Dynamic DNS: DynDns, Comexe, NO-IP
VPN Pass-Through: PPTP, L2TP, IPSec (ESP Head)
Access Control:
Control Parental, Control de Manejo Local, Lista de anfitriones, la Lista de acceso, manejo de reglas
Firewall Security:
DoS, SPI Firewall
Direccin IP Filtro / Filtro de direccin MAC / filtro de dominio
Conexiones de direcciones IP y MAC
Administracion:
Control de acceso
Manejo Local
Manejo remoto
Certificationes
CE, FCC, RoHS
Requerimientos de sistema:
Microsoft Windows 98SE, NT, 2000, XP, Vista o Windows 7, Mac OS, NetWare , UNIX
o Linux.
Dimensiones: 174 x 118 x 33 mm
Peso: 200 gr.
Incluye:
Fuente de alimentacin
CD de recursos
Gua de instalacin rpida




TOPOLOGA DE CONECCIN EN 5 PASOS.
El diseo empleado en esta red para uso en aplicaciones de Domtica se presenta a continuacin de
forma detallada.
1-.Configuracin de Router: En este tpico se da una contrasea y nombre para la red inalmbrica,
adems se chequean las direcciones y mrgenes de estas disponibles para el uso a futuro.
2-.Coneccin entre arduino uno a travs del mdulo ethernet: Al montar el ethernet shield en nuestra
placa embebida nos queda conectarla mediante cable utp con el ruteador y confirmar presencia de luz
intermitente entre ambos dispositivos.
3-.Cdigo en Software de Arduino: Al tener instalado nuestro software procedemos a conectar nuestra
placa y obtener comunicacin y reconocimiento, una vez hecho esto se procede a crear el cdigo de
control que en nuestro caso responde al encendido de lmpara en domicilio. Es importante en este
cdigo otorgar una IP vlida a nuestro arduino ya que si no corresponde al rango revisado
anteriormente en nuestro router la comunicacin y el ingreso al codigo mediante equipos como
computadores y celulares no se llevara a cabo.
4-.Uso de salida en arduino para encendido de lmpara: Usaremos una salida anloga de nuestro
arduino para apreciar el encendido de forma prctica para esto montaremos una pequea maqueta que
incluye una lmpara de funcionamiento 220v usada comnmente en domicilios para lograr este
encendido necesitamos un circuito que nos permita el encendido mediante Arduino ya que no produce
los niveles de corriente adecuados para conectar de forma directa una bombilla elctrica, para lograr
este acomple usamos en este caso rels que actuan con valores de 5v en primera etapa a los 220v en su
etapa de accin, cabe mencionar que de igual forma se pueden usar otros circuitos de acople como scr
y triac.
5-. Interfaz con el usuario: El usuario tendr el control de esta lmpara por medio del equipo que elija
como un computador de escritorio, tablet, notebook, celular, etc ya que slo necesita de un navegador
asi que es irrelevante el sistema operativo usado o marcas.
Para ingresar a la interfaz de control abrimos un navegador y escribimos la direccin IP que
anteriormente le dimos al Arduino en el cdigo y nos direccionar a una intuitiva y clara pgina para
encender y apagar nuestra lmpara.







PROGRAMACION Y CABLEADO DEL PROYECTO EN DETALLE
Para poder realizar nuestro proyecto primero tuvimos que interiorizarnos en la programacin de la
tarjeta Arduino UNO y el programa que se necesita para poder cargar el cdigo del programa al
microcontrolador. Tambien fue necesario conocer el procedimiento para poder asignarle una IP fija a
la shield Ethernet y poder realizar la posterior comunicacin con esta.
Como primer paso, comenzamos una comunicacin bsica con la tarjeta a partir de un ejemplo que trae
el software de Arduino, que se basa en la comunicacin mediante ethernet de un servidor web, en
donde a travs de la direccin IP que se configure se podr tener la lectura de entradas anlogas que
est recibiendo, para esto seguimos los siguientes pasos:
Archivo => Ejemplos => Ethernet => Webserver









Donde encontraremos lo siguiente:

Donde el comando "IPAddress" indica la direccin IP con la que cuenta el dispositivo, esta es la
direccin que debemos modificar segn la configuracin de nuestro Router. En nuestro caso, la
direccin a utilizar ser "192.168.0.17".
Una vez que logramos la comunicacin con el controlador, procedemos a realizar las modificaciones
necesarias al programa de ejemplo y as lograr el control inalmbrico de nuestras luminarias.
Cuando nos comunicamos con la tarjeta Arduino mediante la direccin IP, muestra una pgina en
formato HTML, es por esto que despus de una rpida bsqueda en foros de internet, encontramos una
explicacin de cmo lograr mostrar botones en esta pgina y as poder tener el control de las salidas en
la tarjeta y como integrarlas a nuestro cdigo del programa, basado en el formato, tipo, forma y
ubicacin que se le quera dar al botn.
Para nuestra aplicacin de control inalmbrica de luminarias, decidimos trabajar con 3 salidas (7, 8, 9)
del microcontrolador, a las cuales conectamos unos leds y de esta manera poder realizar la simulacin
del funcionamiento real de nuestro proyecto y junto estos, unas resistencias de 100 ohms, las cuales
ayudan a limitar la corriente de consumo del led y como mtodo de proteccin para las salidas del
controlador.





A continuacin mostraremos el cdigo del programa sobre el cual logramos realizar el proyecto de
control inalmbrico de luminarias. Cabe destacar que Arduino tiene un lenguaje de programacin
bastante avanzado y muy amigable para poder trabajar con el basado en C/C++, lo que nos facilito
bastante la tarea de programacin, ya que contbamos con conocimientos previos sobre este lenguaje
CDIGO DEL PROGRAMA
//Sketch Arduino Ethernet ON/OFF

#include <SPI.h>
#include <Ethernet.h> //Declaracin de la direcciones MAC e IP. Tambin del puerto 80
byte mac[]={0xDE,0xAD,0xBE,0xEF,0xFE,0xED}; //MAC
IPAddress ip(192,168,0,17); //asignacion IP para la shield
EthernetServer servidor(80);
int PIN_LED7=7; //salidas con las que se trabajara
int PIN_LED8=8; //salidas con las que se trabajara
int PIN_LED9=9; //salidas con las que se trabajara
String readString=String(30);
String estado_L7=String(3);
//lectura estado led 7
String estado_L8=String(3);
//lectura estado led 9
String estado_L9=String(3);
void setup() {
Ethernet.begin(mac, ip); //Inicializamos con las direcciones asignadas
servidor.begin();
pinMode(PIN_LED7,OUTPUT); //asignacion de funcionamiento del puerto
digitalWrite(PIN_LED7,LOW); // condicion inicial de la salida
estado_L8="OFF";
//asigancion led 7
pinMode(PIN_LED8,OUTPUT);
digitalWrite(PIN_LED8,LOW);
estado_L7="OFF";
//asigancion led 9
pinMode(PIN_LED9,OUTPUT);
digitalWrite(PIN_LED9,LOW);
estado_L9="OFF";
//fin asignacion led 9

}
void loop() {
EthernetClient cliente= servidor.available();
if(cliente) {
boolean lineaenblanco=true;
while(cliente.connected()) {
if(cliente.available()) {
char c=cliente.read();
if(readString.length()<30) {
readString.concat(c);
//Cliente conectado
//Leemos peticin HTTP caracter a caracter
//Almacenar los caracteres en la variable readString
// INICIO ASIGNACION PARA PRENDER LED 7
}
if(c=='\n' && lineaenblanco) //Si la peticin HTTP ha finalizado
{
int LED = readString.indexOf("LED="); //asignamos un nombre de lo que vamos a controlar
if(readString.substring(LED,LED+5)=="LED=T") { //condiciones para que trabaje el micro
digitalWrite(PIN_LED7,HIGH);
estado_L7="ON"; }
else if (readString.substring(LED,LED+5)=="LED=F") {
digitalWrite(PIN_LED7,LOW);
estado_L7="OFF";
// FIN ASIGNACION PARA PRENDER LED 7
// INICIO ASIGNACION PARA PRENDER LED 8
}
if(c=='\n' && lineaenblanco) //Si la peticin HTTP ha finalizado
{
int LED = readString.indexOf("LED=");
if(readString.substring(LED,LED+5)=="LED=n") {
digitalWrite(PIN_LED8,HIGH);
estado_L8="ON"; }
else if (readString.substring(LED,LED+5)=="LED=m") {
digitalWrite(PIN_LED8,LOW);
estado_L8="OFF";
// FIN ASIGNACION PARA PRENDER LED 8
// INICIO ASIGNACION PARA PRENDER LED 9
}
if(c=='\n' && lineaenblanco) //Si la peticin HTTP ha finalizado
{
int LED = readString.indexOf("LED=");
if(readString.substring(LED,LED+5)=="LED=j") {
digitalWrite(PIN_LED9,HIGH);
estado_L9="ON"; }
else if (readString.substring(LED,LED+5)=="LED=k") {
digitalWrite(PIN_LED9,LOW);
estado_L9="OFF";
// FIN ASIGNACION PARA PRENDER LED 9
}
//Cabecera HTTP estndar
cliente.println("HTTP/1.1 200 OK");
cliente.println("Content-Type: text/html");
cliente.println(); //Pgina Web en HTML
cliente.println("<html>"); // TITULO PRINCIPAL DE LA PAGINA
cliente.println("<head>"); // TITULO PRINCIPAL DE LA PAGINA
cliente.println("<title>CONTROL INALAMBRICO LUMINARIA</title>"); // TITULO PRINCIPAL
DE LA PAGINA
cliente.println("</head>"); // TITULO PRINCIPAL DE LA PAGINA
cliente.println("<body width=100% height=100%>"); // TITULO PRINCIPAL DE LA
PAGINA
cliente.println("<center>"); // TITULO PRINCIPAL DE LA PAGINA
cliente.println("<h1>CONTROL INALMBRICO LUMINARIA</h1>"); // TITULO
PRINCIPAL DE LA PAGINA
cliente.print("<br><br><br>"); // ESPACIO
cliente.print("Estado de LED 7: "); // SUBTITULO
cliente.print(estado_L7); // DATO DE SUBTITULO
cliente.print("<br><br>"); // ESPACIO
cliente.println("<input type=submit value=ON style=width:200px;height:75px
onClick=location.href='./?LED=T\'>"); //BOTON LED 7 Y ACTUADOR ON
cliente.println("<input type=submit value=OFF style=width:200px;height:75px
onClick=location.href='./?LED=F\'>"); // BOTON LED 7 Y ACTUADOR OFF
// INICIO SEGUNDOS BOTONES PARA LED 7
cliente.print("<br><br><br><br>");
cliente.print("Estado LED 8: ");
cliente.print(estado_L8);
cliente.print("<br><br>");
cliente.println("<input type=submit value=ON style=width:200px;height:75px
onClick=location.href='./?LED=n\'>"); //BOTON LED 8 Y ACTUADOR ON
cliente.println("<input type=submit value=OFF style=width:200px;height:75px
onClick=location.href='./?LED=m\'>"); //BOTON LED 8 Y ACTUADOR OFF
// FIN SEGUNDOS BOTONES
// INICIO TERCEROS BOTONES PARA LED 9
cliente.print("<br><br><br><br>");
cliente.print("Estado LED 9: ");
cliente.print(estado_L9);
cliente.print("<br><br>");
cliente.println("<input type=submit value=ON style=width:200px;height:75px
onClick=location.href='./?LED=j\'>"); //BOTON LED 9 Y ACTUADOR ON
cliente.println("<input type=submit value=OFF style=width:200px;height:75px
onClick=location.href='./?LED=k\'>"); //BOTON LED 9 Y ACTUADOR OFF
// FIN TERCEROS BOTONES
cliente.println("</center>");
cliente.println("</body>");
cliente.println("</html>");
cliente.stop();
//Cierro conexin con el cliente
readString="";
}
}
}
}
}
}//activar solo para cuando se use el led 7
}//activar solo para cuando se use el led 9
// Fin de la conversacin
Una vez que ya terminamos la programacin de nuestro cdigo vamos a verificar si nuestro programa
est bien escrito o tiene problemas al compilar (botn indicado en rojo):



Luego, debemos verificar si el puerto serial de comunicacin est bien conectado y si la tarjeta en la
que se quiere cargar el programa est bien seleccionada:

una vez comprobado el paso anterior, procedemos a cargar los datos:

Cuando el compilador nos indica "carga terminada", quiere decir que nuestro programa fue cargado al
microcontrolador y est listo para realizar las pruebas.
Ahora vamos al navegador que comnmente utilizamos y escribimos la direccin IP que anteriormente
hemos asignado a nuestra tarjeta, en este caso ser 192.168.0.17 , se deber conectar y mostrar lo que
fue configurado en el programa, en este caso mostrara los botones de accionamiento de las luces, el
estado en que se encuentran(la condicin inicial al iniciar el programa es "OFF") y cada uno con sus
respectivos nombres.

Condicin inicial de los leds al comenzar el programa y montaje en la protoboard:


Encendido del Led 7:


Encendido del Led 8:

Encendido del Led 9:

Led 7, 8 y 9 encendidos:




A continuacin pasaremos a la aplicacin directa sobre las luminarias domiciliarias.

SISTEMA DE ACOPLADO A LUMINARIAS DOMICILIARIAS






















CONCLUSIN
Durante el desarrollo de este proyecto tratamos de introducirnos al mundo de la domtica que da a
da se hace ms presenta a nuestro alrededor desde sencillas aplicaciones de encendido de lmparas y
reconocimiento de chapas electrnicas hasta la automatizacin completa de un domicilio.
Particularmente en el presente informe se detalla una de las aplicaciones ms usadas al momento de
aplicar domtica a nuestras casas, el control de luminaria. En este caso se llev a cabo de forma
totalmente inalmbrica y se buscaron distintas opciones de hacerlo lo ms sencillo y conveniente para
el usuario.
Como hemos visto a lo largo de este proyecto las aplicaciones y opciones son variadas pero nuestra
investigacin demostr que el empleo de una placa embebida de bajo costo, como es Arduino Uno, es
suficiente para satisfacer las necesidades en aplicaciones sencillas de control inalmbrico domiciliario.

You might also like