Você está na página 1de 19

17/5/2016 ArduinoEthernetShieldControlaTuCasaPorInternet

Arduino Ethernet Shield Controla Tu Casa Por Internet


Posted on 16 noviembre, 2014 | Under Tutoriales de Arduino (http://www.educachip.com/category/arduino/)

| 294 Comments (http://www.educachip.com/arduino-ethernet-shield/#comments)

Y si te dijera que con Arduino Ethernet Shield puedes crearte tu propio web server y
utilizarlo para domotizar tu casa? Ya sea para controlar tu vivienda o cualquier otro elemento a
travs de Internet, este shield de Arduino es una gran eleccin.

En este post te voy a ensear todos los pasos que debes seguir para congurar tu Arduino
Ethernet Shield ycrear tu propia pgina web con la que podrs controlartu casa desde
cualquier parte del mundo. Adems incluir un cdigo pensado para que puedas pegarlo
fcilmente a tu sketch de Arduino y adaptarlo a tu proyecto con unos pocos cambios.

(http://www.educachip.com/wp-content/uploads/Ethernet-Shield.jpg)

Tutorial Arduino Ethernet

http://www.educachip.com/arduinoethernetshield/ 1/110
17/5/2016 ArduinoEthernetShieldControlaTuCasaPorInternet

Como te puedes imaginar, para este proyecto van a ser necesarios algunos conocimientos
deHTML (http://es.wikipedia.org/wiki/HTML) y conguracin de redes, as como la librera
Ethernet (http://arduino.cc/en/Reference/Ethernet) de Arduino. No te preocupes por eso
porque te lo voy a explicar todo paso a paso para que te resulte lo ms simple posible.

El Problema de las IP

Cuando conectas tu Arduino Ethernet Shield con tu Router


(http://es.wikipedia.org/wiki/Router), ste le asigna una direccin IP, es decir, una
identicacin que le permite diferenciar a tu Arduino del resto de ordenadores y dems
elementos que tengas conectados a la red local de tu casa, as que esa direccin que va a
utilizar tu Arduino tienes que introducirla en tu sketch. El problema es que esa IP es cambiante y
cada vez que su valor cambie, tu sistema dejar de funcionar.

Del mismo modo, la direccin de tu Router cambia salvo que tengas contratado un sistema con
IP esttica. Esto no es lo ms habitual ya que estos sistemas son ms caros y a la compaa que
te proporciona el Internet le interesa que t tengas una IP dinmica.

Como lo que t quieres es implementar tu sistema sobre tu Arduino Ethernet Shield, poder
controlarlo desde cualquier parte del mundo (y no solo desde tu red de rea local) y que este
siga funcionando sin tener que modicar tu cdigo (sketch) con independencia de lo que pase
en tu red. Tienes que amenazar de muerte a tu proveedor de Internet solucionar varios
problemas:

1. Conseguir que conexin IP entre tu Arduino Ethernet Shield y tu Router (rea local) no
cambie.
2. Abrir los puertos de tu Router para permitir que entre y salga informacin.
3. Conseguir que la conexin entre tu Router e Internet no cambie (para que puedas acceder
siempre desde la misma direccin).

Si te ha entrado el miedo en el cuerpo por aquello de romper Internet, tranquilo. Lo primero


que debes saber es que desde la era de Internet todos los que somos un poco curiosos y hemos
encontrado algo en Google (http://www.google.com) quehemos intentado probar, hemos
causado (ya sea por desconocimiento o intencin) tantos problemas que ya todos los sistemas

http://www.educachip.com/arduinoethernetshield/ 2/110
17/5/2016 ArduinoEthernetShieldControlaTuCasaPorInternet

estn hechos anti-cafres. Lo segundo es que, como siempre te digo, Arduino est pensado
para ser fcil (y esto no iba a ser menos). Y lo tercero es que desde EducaChip
(http://www.educachip.com/) estamos para ayudarte. Vamos a ello.

Conexin Arduino Ethernet Shield Router

Te voy a decir algo que no te va a gustar: Cada Router se con gura de una manera distinta.
Como supongo te estars imaginando, eso quiere decir que en este apartado no puedo
ayudarte mucho. No desesperes, aunque todos son distintos, todos son similares y con un poco
de paciencia no te costar realizar este paso.

Acceder a tu Router

Lo primero que debes hacer es acceder a tu Router desde tu navegador favorito. Para ello
necesitas saber cul es su puerta de enlace (o gateway en ingls). Te voy a poner cmo se hara
desde Windows. Si ests utilizando un sistema operativo diferente, el funcionamiento es similar.

http://www.educachip.com/arduinoethernetshield/ 3/110
17/5/2016 ArduinoEthernetShieldControlaTuCasaPorInternet

En caso de que tengas dudas puedes dejar un comentario al nal de este post o buscarlo en
Google (no te costar encontrarlo). (http://www.educachip.com/wp-

content/uploads/Gateway.jpg)

1. Pulsa el botn de inicio.


2. En la barra de bsquedas, escribe ejecutar y pulsa la tecla intro.
3. En la ventana que te acaba de aparecer escribe cmd y vuelve a pulsar intro.
4. Te habr salido otra ventana de fondo negro. Escribe en ella ipcong.
5. Dentro del texto que se acaba de escribir en la ventana hay una seccin llamada Adaptador
de Ethernet (o similar). Busca en ella la puerta de enlace predeterminada o gateway y
apunta la direccin asociada (suele ser algo del tipo 192.168.1.1).

Ahora que ya tienes la direccin con la que acceder a tu Router, basta con que la escribas en tu
navegador (en la zona donde normalmente escribes las URL). Seguramente te pedir una
contrasea. Si es la primera vez que accedes a tu Router ser la contrasea por defecto. Suele
ser algo tipo:

usuario: admin
contrasea: 1234

Si tienes no eres capaz de encontrar tu contrasea, aqu te dejo un enlace


(http://www.adslayuda.com/password_router.html) con contraseas por defecto de Routers.

Con gurar rea Local

http://www.educachip.com/arduinoethernetshield/ 4/110
17/5/2016 ArduinoEthernetShieldControlaTuCasaPorInternet

Ahora que ests dentro de tu Router, debes decirle que siempre le de la misma IP a tu Arduino
Ethernet Shield.

Por defecto, la mayor parte de los Routers utilizan un sistema denominado DHCP segn el cul
van asignando IP locales a todos los elementos que se conectan a la red. Cada cierto tiempo
esas IP cambian (tambin pueden cambiar si conectas y desconectas algn elemento) por lo
que si inicias el programa Arduino Ethernet Shield sin modicar esto, funcionar al principio,
pero cuando esa direccin cambie se perder la comunicacin y tendrs que modicar tu
sketch. Para que esto no suceda tienes que decirle al protocolo DHCP que te parece fantstico
que juguetee con las IP pero que no toque la de tu Arduino.

Todas las mquinas que conectas a tu red tienen un nmero identicativo denominado MAC
que, de cara a la red, es como un DNI o pasaporte. El MAC de tu Arduino puedes jarlo t (basta
con que no haya varias mquinas con el mismo MAC) y por defecto es:

1 bytemac[]={
2 0xDE,0xAD,0xBE,0xEF,0xFE,0xED}

Salvo que tengas especial inters por utilizar un MAC concreto puedes utilizar este.

Una vez tienes tu MAC, debes decirle a tu Router que a ese MAC le de siempre la misma IP. Los
pasos son los siguientes:

http://www.educachip.com/arduinoethernetshield/ 5/110
17/5/2016 ArduinoEthernetShieldControlaTuCasaPorInternet

(http://www.educachip.com/wp-content/uploads/DHCP.jpg)

1. Accede a las propiedades de tu DHCP a travs de los mens de tu Router, es decir, busca por
los mens la palabra DHCP o DHCP Settings (suele estar en: Conguracin >> LAN >> DHCP).

(http://www.educachip.com/wp-content/uploads/MAC-IP-Table.jpg)
2. En este men podrs ver cosas interesantes como el rango de IP que asigna tu DHCP (puede
que te venga como IP Pool Range o como direcciones IP inicial y nal). Lo que debes buscar
es algo tipo Reserva de direcciones IP o MAC-Base Assignment que es donde vas a

http://www.educachip.com/arduinoethernetshield/ 6/110
17/5/2016 ArduinoEthernetShieldControlaTuCasaPorInternet

enlazar la MAC de tu Arduino Ethernet Shield con una IP concreta.


3. Abre el men de para asignar la IP. Seguramente te aparecer un recuadro para enlazar un
MAC a una IP. Rellena los datos utilizando el MAC de tu Arduino Ethernet Shield y la IP que
desees (por ejemplo 192.168.1.177) y asegrate de guardar los cambios.

Si has conseguido llegar a este punto, mi ms sincera enhorabuena. Entiendo que todos estos
datos son realmente abstractos y puede resultar complicado para alguien sin experiencia. En
caso de que ests teniendo algn tipo de problema, aqu estamos para ayudarte, as que
reljate, toma aire y deja tu comentario. Intentaremos ayudarte.

Puertos del Router

Si has completado los pasos anteriores no deberas tener ningn problema en crear tu propia
red de rea local, es decir, si el proyecto que vas a implementar con tu Arduino Ethernet Shield
nicamente necesita conexin entre los elementos de tu casa (del Router hacia dentro) no
necesitas tocar nada ms. Ahora bien, si tu idea es utilizar tu sistema desde cualquier parte del
mundo debes permitir el acceso a tu sistema.

Gracias a que en el paso anterior conseguiste darle una IP ja a tu Arduino Ethernet Shield, ahora
ser muy fcil abrir nicamente el puerto que va a utilizar tu shield de Arduino.

De nuevo todo esto lo tienes que hacer desde tu Router. Los pasos a seguir son los siguientes
(todo esto te sonar si, en su da, ya abriste los puertos del eMule (http://www.emule-
project.net/home/perl/general.cgi?l=17)): (http://www.educachip.com/wp-
content/uploads/Ports.jpg)

1. Debes buscar en los mens de tu Router algo tipo NAT, Virtual Servers o Port Forwarding. El
nombre vara en funcin del Router pero vas buscando modicar los puertos as que puedes
guiarte por la palabra Port. Si no terminas de encontrar la manera de llegar a ese men, no
te costar mucho dar con lcon una rpida bsqueda en Google (poniendo el modelo de tu
Router).
2. Una vez ests en men de puertos de tu Router, activa la opcin de Port Forwarding y, para la
IP local que le diste a tu Arduino Ethernet Shield, abre un puerto (tpicamente el puerto 80
aunque puedes abrir otros como el puerto 5400). De nuevo no te olvides de guardar los
cambios.

http://www.educachip.com/arduinoethernetshield/ 7/110
17/5/2016 ArduinoEthernetShieldControlaTuCasaPorInternet

Conexin Router
Internet

Hasta ahora has conseguido


que tu Router siempre le de la
misma IP a tu Arduino
Ethernet Shield y que este
tenga acceso a Internet. En
realidad ya est todo hecho. El nico problema es que a la hora de acceder desde fuera de tu
red local a tu shield de Arduino desconoces qu direccin tiene, es decir, no sabes qu IP tiene
tu Router. Para solucionar este problema tienes varias opciones:

Contratar Una IP Esttica

Como ya te he dicho antes, si contratas una IP esttica no tendras que preocuparte por saber en
cada momento cul es la direccin de tu Arduino Ethernet Shield. Puedes hablar con tu
proveedor de Internet y, por un poco ms de dinero al mes (depende del proveedor pero no
suele ser excesivamente caro, entorno a 1), bastara con que recordases esa direccin para
acceder en cualquier momento y desde cualquier sitio a tu sistema domtico.

Dejar Tu IP Dinmica

Si acostumbras a mantener tu Router siempre encendido debes saber que tu IP no cambia cada
cinco minutos. De nuevo, depende del proveedor. Normalmente cambiar una vez por semana
por lo que si ests frecuentemente en casa y consultastu IP con regularidad (puedes ver cul es
http://www.educachip.com/arduinoethernetshield/ 8/110
17/5/2016 ArduinoEthernetShieldControlaTuCasaPorInternet

tu IP pblica en este link (http://www.cualesmiip.com/)), puedes ahorrarte dinero y esfuerzo y


utilizar este mtodo. Ten en cuenta, eso s, que si tu IP cambia y no ests en casa para
consultarla, no podrs acceder al sistema.

Utilizar Un Servicio de DDNS

(http://www.educachip.com/wp-content/uploads/Router-DDNS.jpg)Este es mi mtodo
favorito. El sistema de las DDNS consiste bsicamente en un dominio (como lo es en esta pgina
www.educachip.com (www.educachip.com)) que est asociado en cada momento a tu IP actual,
es decir, un nombre jo elegido por ti (y por lo tanto ms fcil de recordar que una direccin IP)
que est siempre actualizado y dirija la conexin hacia tu Arduino Ethernet Shield.

El problema de este mtodo es que depende de tu Router. Existen muchos servicios tanto de
pago como gratuitos de DDNS y cada Router soporta unos u otros. Que tuRouter no soporte
uno en concreto no implica que no puedas utilizarlo pero debers descargarte la aplicacin
correspondiente de ese servicio DDNS y actualizar la IP desde el ordenador, es decir, tendrs
que tener un ordenador siempre encendido, por lo que lo mejor es que utilices uno de los que
tu Router soporta para que la actualizacin de la IP se haga desde el Router, sin necesidad de
aplicaciones.

Los servicios de DDNS de pago rondan los 20 (25$) al ao. No es muy caro (cuesta ms o
menos lo que tener una IP esttica) pero en mi opinin es mejor que realices un nico pago y te
compres un buen Router que soporte DDNS gratuitas (lo que adems, dependiendo del Router

http://www.educachip.com/arduinoethernetshield/ 9/110
17/5/2016 ArduinoEthernetShieldControlaTuCasaPorInternet

que tengas ahora, puede incluso mejorar la velocidad de tu red). Sea cual sea tu eleccin aqu te
dejo unos cuantos servicios de DDNS para que elijas el que ms te convenga:

DynDNS (http://es.dyn.com/dns/): Servicio de pago (desde hace poco tiempo) pero lder en
el sector y uno de los ms soportados por los Routers.
Donweb (http://donweb.com/es-es/dns-dinamico-gratis): Gratuito y en Espaol pero
relativamente nuevo y poco habitual en los Routers. Es el que yo utilizo y actualmente estoy
intentando conseguir que funcione desde un Router que no soporte este sistema (ya te ir
contando mis avances).
No-IP (https://www.noip.com/sign-up): La alternativa tpica a DynDNS. Es gratuito pero
requiere que reactives la cuenta una vez al mes y lo utilices desde un PC.
Namecheap (https://www.namecheap.com/domains/freedns.aspx): A parte de dominios a
muy buen precio, esta web ofrece servicio de DNS dinmico gratuito.
TZO (https://www.tzo.com/portals/Linksys.php?x=1): Pertenece a la misma empresa que
DynDNS y, como te puedes imaginar, tanto su precio como su disponibilidad en Routers es
similar.

Como a pesar de que cada pgina tiene sus peculiaridades todas funcionan de forma similar, no
voy a entrar a explicarte como conseguir tu servicio de DDNS. Basta con que entres en la pgina
que preeras (lo ideal es que sea una soportada por tu Router), te hagas una cuenta como haras
en cualquier otra web y accedas a la seccin de DDNS. Si tienes algn problema realizando este
proceso puedes dejar tu comentario al nal del post.

Una vez tengas tu DDNS entra de nuevo en la conguracin de tu Router (aprendiste cmo
hacerlo al principio de este artculo), accede a la seccin de DNS dinmicas y escribe en las
zonas correspondientes tanto el nombre de dominio como tus datos de usuario.

Actualizar DDNS Con Arduino

En el paso anterior te dije que si tu Router no soporta un determinado sistema de DDNS, tienes
que descargarte una aplicacin y tener tu PC encendido siempre. Esto no es del todo as ya que
puedes implementar un cdigo que haga que tu Arduino Ethernet Shield actualice
automticamente la IP.

http://www.educachip.com/arduinoethernetshield/ 10/110
17/5/2016 ArduinoEthernetShieldControlaTuCasaPorInternet

No es el tema de este post as que dejar la explicacin en profundidad de este mtodo para
otra ocasin. Aun as, est bien que sepas que se puede hacer (por si quieres investigarlo). Ten
en cuenta que este mtodo te aporta versatilidad (porque no dependes del Router y puedes
implementar el sistema en distintos sitios sin necesidad de realizar tantos cambios) pero aade
carga de trabajo y espacio al microcontrolador cuando puedes dejar que eso lo haga el Router.

Cdigo

Ahora que ya eres un experto en redes, programar tu Arduino Ethernet Shield debera ser pan
comido. Aun as te voy a dejar dos cdigos para tu Arduino:

El primer cdigo es el proporcionado por el propio equipo de Arduino


(http://arduino.cc/en/pmwiki.php?n=Reference/Ethernet), al que le he modicado los
comentarios para que te resulte ms fcil entenderlo, modicarlo ylo adaptes a tu propio
proyecto sin problemas.

1 #include<SPI.h>
2 #include<Ethernet.h>
3
4 //SeintroducenlosvalorescorrespondientesaMAC,IPlocal,PuertadeEnlaceyMscaradeRe
5 bytemac[]={
6 0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
7
8 IPAddressip(192,168,1,177)
9
10 IPAddressgateway(192,168,1,1)
11
12 IPAddresssubnet(255,255,255,0)
13
14 //SeinicializalalibreraEthernetconelPuertoquesevautilizarenlatransmisin
15 EthernetServerserver(80)
16
17 voidsetup(){
18 //Seestablececomunicacinconelmonitorserial(paraversielsistemaestfuncionandoc
19 Serial.begin(9600)
20
21 //while(!Serial){
22 ////Seesperaaqueseconecteelpuertoserie(soloparaArduinoLeonardo)
23 //}
24
25
26 //Comienzodelaconexin
27
http://www.educachip.com/arduinoethernetshield/ 11/110
17/5/2016 ArduinoEthernetShieldControlaTuCasaPorInternet

28 Ethernet.begin(mac,ip,gateway,subnet)
29 server.begin()
30 //Semuestraporelmonitorserialquelaconexinestestablecida
31 Serial.print("serverisat")
32 Serial.println(Ethernet.localIP())
33 }
34
35
36 voidloop(){
37
//Seesperaaquealguienaccedaalapginaweb
38 EthernetClientclient=server.available()
39 if(client){
40
Serial.println("newclient")
41
42 //unapeticinhttpterminaconunalneaenblanco
43 booleancurrentLineIsBlank=true
44 while(client.connected()){
45 if(client.available()){
46 charc=client.read()
47 Serial.write(c)
48 //Sisellegaalfinaldelalneasereciveunnuevocarcterde
49 //lneaysisetratadeunalneaenblancolapeticinhttphaterminado
50 //asqueseenvalarespuesta
51 if(c=='\n'&&currentLineIsBlank){
52 //cabezeratpicahttp
53 client.println("HTTP/1.1200OK")
54 client.println("ContentType:text/html")
55 client.println("Connection:close")//secierralaconexinunavezseharespond
56 client.println("Refresh:5")//serefrescalapginaautomticamentecada5segundos
57 client.println()
58 client.println("<!DOCTYPEHTML>")
59 client.println("<html>")
60
61 //semuestranenlaweblosvaloresdelasentradasanalgicas
62 for(intanalogChannel=0analogChannel<6analogChannel++){
63 intsensorReading=analogRead(analogChannel)
64
client.print("analoginput")
65
client.print(analogChannel)
66
client.print("is")
67
client.print(sensorReading)
68
client.println("<br/>")
69
}
70
client.println("</html>")
71
break
72
}
73
74 if(c=='\n'){
75 //secomienzaunanuevalnea
76 currentLineIsBlank=true
77 }
78 elseif(c!='\r'){
79 //sehaobtenidouncarcterenlalneaactual
80 currentLineIsBlank=false
81 }
82 }
83 }
84 //seledatiempoalnavegadorpararecibirlosdatos
85 delay(1)
86 //secierralaconexin
87 client.stop()
Serial.println("clientdisonnected")
}
}

http://www.educachip.com/arduinoethernetshield/ 12/110
17/5/2016 ArduinoEthernetShieldControlaTuCasaPorInternet

Este segundo cdigo te va a encantar. Es una muestra de que la pequea capacidad de un


Arduino no est reida con la calidad y se puede crear una web funcional y a la vez esttica.
No es creacin ma. El cdigo HTML lo ha realizado un webmaster y diseador web de
categora. Calidad, ecacia, eciencia y estilo son su sea de identidad. Si este tema te
interesa, te recomiendo que le eches un vistazo a susperles en las redes sociales
(https://twitter.com/aledroner). Actualmente est empezando un nuevo proyecto, un startup
(http://es.wikipedia.org/wiki/Compa%C3%B1%C3%ADa_startup) que sin duda nos dejar
boquiabiertos. Los comienzos nuncason fciles pero l lleva la clave del xito en el ADN.

1 #include<SPI.h>
2 #include<Ethernet.h>
3
4
5 bytemac[]={
6 0xDE,0xAD,0xBE,0xEF,0xFE,0xED}
7 IPAddressip(192,168,1,177)
8
9 IPAddressgateway(192,168,1,1)
10
11 IPAddresssubnet(255,255,255,0)
12
13
14
15 EthernetServerserver(80)
16
17 voidsetup(){
18
19 //Serial.begin(9600)
20 //while(!Serial){
21 //
22 //}
23
24
25 Ethernet.begin(mac,ip,gateway,subnet)
26 server.begin()
27 Serial.print("serverisat")
28 Serial.println(Ethernet.localIP())
29 }
30

31

32 voidloop(){
33

34
EthernetClientclient=server.available()
35
if(client){
36
37 Serial.println("newclient")
38
39 booleancurrentLineIsBlank=true
40 while(client.connected()){
41 if(client.available()){
42 charc=client.read()
43 Serial.write(c)
44
45
http://www.educachip.com/arduinoethernetshield/ 13/110
17/5/2016 ArduinoEthernetShieldControlaTuCasaPorInternet

46 if(c=='\n'&&currentLineIsBlank){
47
48 client.println("HTTP/1.1200OK")
49 client.println("ContentType:text/html")
50 client.println("Connection:close")
51 client.println("Refresh:5")
52 client.println()
53 client.println("<!DOCTYPEHTML>")
54 client.println("<htmllang='es'>")
55 client.println("<head>")
56 client.println("<metacharset='UTF8'>")
57 client.println("<title>")
58 client.println("CasadomticaconEducaChip")
59 client.println("</title>")
60 client.println("<link")
61 client.println("href='http://fonts.googleapis.com/css?family=Roboto:300|Playfair+Di
62 client.println("rel='stylesheet'")
63 client.println("type='text/css'/>")
64 client.println("<linkrel='stylesheet'")
65 client.println("href='http://static.tumblr.com/pjglohe/2qinf00ga/estilos.min.css'>"
66 client.println("</head>")
67 client.println("<body>")
68 client.println("<divclass='pagewrap'>")
69 client.println("<headerclass='header'>")
70 client.println("<h1>")
71 client.println("LacasadomticadeEducaChip")
72 client.println("</h1>")
73 client.println("<divclass='educachip'>")
74 client.println("<span>Realizadopor</span>")
75 client.println("<ahref='http://www.educachip.com'target='_blank'>")
76 client.println("www.educachip.com")
77 client.println("</a>")
78 client.println("</div>")
79 client.println("</header>")
80 client.println("<sectionclass='contentwrap'>")
81 client.println("<divclass='device'>")
82 client.println("<divclass='devicename'>")
83 client.println("<h2>")
84 client.println("Dispositivo#1")
85 client.println("</h2>")
86 client.println("</div>")
87 client.println("<divclass='forms'>")
88 client.println("<formclass='transitionbuttonon'>")
89 client.println("<inputtype='button'value='ON'/>")
90 client.println("</form></div><divclass='forms'>")
91 client.println("<formclass='transitionbuttonoff'>")
92 client.println("<inputtype='button'value='OFF'/>")
93 client.println("</form>")
94 client.println("</div>")
95 client.println("</div>")
96 client.println("<divclass='device'>")
97 client.println("<divclass='devicename'>")
98 client.println("<h2>")
99 client.println("Dispositivo#2")
100 client.println("</h2>")
101 client.println("</div>")
102 client.println("<divclass='forms'>")
103 client.println("<formclass='transitionbuttonon'>")
104 client.println("<inputtype='button'value='ON'/>")
105 client.println("</form>")
106 client.println("</div>")
107 client.println("<divclass='forms'>")
108 client.println("<formclass='transitionbuttonoff'>")
109 client.println("<inputtype='button'value='OFF'/>")
110 client.println("</form>")
http://www.educachip.com/arduinoethernetshield/ 14/110
17/5/2016 ArduinoEthernetShieldControlaTuCasaPorInternet

111 client.println("</div>")
112 client.println("</div>")
113 client.println("</section>")
114 client.println("</div>")
115 client.println("</body>")
116 client.println("</html>")
117
118 break
119 }
120 if(c=='\n'){
121
122 currentLineIsBlank=true
123 }
124 elseif(c!='\r'){
125

126 currentLineIsBlank=false
127 }
128
}
129
}
130
131
delay(1)
132

133
client.stop()
134
Serial.println("clientdisonnected")
}
}

Aqu te dejo una muestra de cmo luce el resultado.


Estesitiowebutilizarcookiespropiasydetercerosparamejorarsuexperienciaenalweb.Asumiremosqueusted
estdeacuerdo,aunqueencasocontrariopuededesactivarlas. Acepto Verms
(http://www.educachip.com/avisolegal/)

(http://www.educachip.com/wp-content/uploads/EducaChip-Web.jpg)

http://www.educachip.com/arduinoethernetshield/ 15/110
17/5/2016 ArduinoEthernetShieldControlaTuCasaPorInternet

Material Necesario

Para construir tu sistema domtico necesitas una Placa Arduino y un Shield de Ethernet. Puedes
hacerte con ellos a muy buen precio aqu:

Arduino UNO (http://www.banggood.com/es/Wholesale-Arduino-Compatible-R3-UNO-


ATmega16U2-AVR-USB-Board-p-68537.html?p=HT2511502476201403SN) por 6.50 (8.20$).
Arduino Mega (http://www.banggood.com/es/Mega2560-R3-ATmega2560-16AU-Control-
Board-With-USB-Cable-For-Arduino-p-73020.html?p=HT2511502476201403SN) (mi
recomendacin para este tipo de proyectos) por 10 (12.50$).
Shield Ethernet (http://www.banggood.com/es/Ethernet-Shield-Module-W5100-Micro-SD-
Card-Slot-For-Arduino-UNO-MEGA-p-908461.html?p=HT2511502476201403SN) por 6.50
(8.20$).

Informacin Adicional

Ya dispones de todos los conocimientos necesarios para crear tu propio sistema domtico (o
cualquier otra aplicacin similar) con Arduino Ethernet Shield. Sin embargo, este tipo de
proyecto suele dar bastantes problemas (conexin de redes, problemas de rewall, etc.). Aqu te
muestro una lista con conceptos que te sern tiles: (http://www.educachip.com/wp-
content/uploads/Arduino-Ethernet.jpg)

Recuerda que para acceder a tu sistema tienes que escribir en el navegador (en la zona
donde habitualmente escribes las URLs
(http://es.wikipedia.org/wiki/Localizador_de_recursos_uniforme)) tanto la IP (pblica si ests
fuera de tu red de rea local y la asignada a tu Arduino si ests dentro) como el puerto.
Debera quedar algo tipo: 12.34.567.890:80 donde los :80 son el puerto que le has asignado a

http://www.educachip.com/arduinoethernetshield/ 16/110
17/5/2016 ArduinoEthernetShieldControlaTuCasaPorInternet

tu Arduino Ethernet Shield.


En caso de que utilizases
DDNS tendrs que poner el
nombre de tu sistema
DDNS (el mismo que
aadiste al Router) seguido
de :80 (o el puerto que
hayas utilizado).
A parte de con el Arduino
Ethernet Shield y tu placa
de Arduino habitual, puedes
implementar este sistema
en un Arduino Ethernet
(http://arduino.cc/en/Main/arduinoBoardEthernet), una placa que ya incorpora los
elementos necesarios para la conexin a la red.
Muchosde los proyectos con conexin a Internet ocupan ms kbde los que puede
proporcionarte una placa de Arduino UNO, as que si quieres hacer algn sistema
relativamente te recomiendo que utilices una placa Mega.
A la hora de congurar el MAC de tu Arduino y asignarle una IP puedes probar a cambiar el
rango de direcciones IP que asigna tu protocolo DHCP. Asignndole a tu Arduino Ethernet
Shield una IP fuera de ese rango, sta no debera cambiar.
Cuando has implementado el cdigo de tu conexin Ethernet has iniciado el sistema con:

1 Ethernet.begin(mac,ip,gateway,subnet)

Puedes iniciar la conexin simplemente con:

1 Ethernet.begin(mac)

El propio Arduino se adaptar al protocolo DHCP y buscar su IP. Debes tener en cuenta que
dicha IP puede cambiar (si no seguiste los pasos correspondientes de conguracin del
Router) y tendras que reiniciar tu sistema para que la IP de tu Arduino Ethernet Shield se
volviese a actualizar. Adems el tamao de tu sketch incrementar considerablemente.
Aunque hayas abierto los puertos e insertado todos los datos correctamente, es posible que
tanto el Firewall (http://es.wikipedia.org/wiki/Cortafuegos_(inform%C3%A1tica)) de tu
ordenador como el de tu Router bloqueen la seal. Comprueba que tu rewall est
funcionando de acuerdo a lo que quieres.
Si a pesar de todos tus intentos el Firewall sigue dndote problemas, puedes acceder a la
conguracin de tu Router y buscar el trmino DMZ. Insertando la IP de tu Arduino Ethernet
Shield en la seccin DMZ consigues que a esa IP no le afecten los cortafuegos.
Si utilizas un Proxy (http://es.wikipedia.org/wiki/Proxy), asegrate de congurarlo (de la

http://www.educachip.com/arduinoethernetshield/ 17/110
17/5/2016 ArduinoEthernetShieldControlaTuCasaPorInternet

misma forma que hiciste con tu Firewall).


Es posible que por un puerto concreto en tu conexin (por ejemplo el puerto 80) haya ms de
un sistema en tu red de rea local enviando y recibiendo informacin. Si esto ocurre la
conexin no se realizar correctamente y tu sistema fallar. En ese caso puedes probar con
otros puertos como: 5400, 5500, 5600, 5700, 5800 u 8080.
Algunos cables de Ethernet tienen los pines permutados. Para que lo entiendas es como si el
pin 2 en un extremo fuese el receptor y en el otro el transmisor. Esto no sucede con todos los
cables y en general no suele ser un problema con los ordenadores actuales (que estn
preparados para realizar la permutacin internamente si es necesario) pero s a la hora de
conectar tu Arduino Ethernet Shield. Si has seguido bien todos los pasos y ves que no
funciona, puede ser simplemente porque el cable no sea el adecuado.
Cuando creas una pgina web como la que has visto antes, necesitas utilizar hojas de estilo
(CSS (http://es.wikipedia.org/wiki/Hoja_de_estilos_en_cascada)). CSS aade muchas lneas
de cdigo a tu sistema (y en mi experiencia da bastantes problemas). Puedes optar por una
solucin alternativa como la que se ha seguido en este post, donde las hojas de estilo estn
alojadas en Tumblr (https://www.tumblr.com/).

Una vez ms esto ha sido todo. Como ves, no hay excusa para que te pongas manos a la obra y
controles tu casa desde Internet. Puede que no sea el proyecto ms simple pero con un poco de
paciencia te hars con l enseguida, estoy seguro.

Mucho nimo y acurdate de compartir este post en tus redes sociales favoritas. Adems,
puedes suscribirte al blog (http://www.educachip.com/suscribete/) para no perderte ninguna
entrada.

#Domtica (http://www.educachip.com/tag/domotica/), #Ethernet


(http://www.educachip.com/tag/ethernet/), #IP (http://www.educachip.com/tag/ip/), #Router
(http://www.educachip.com/tag/router/), #Shield (http://www.educachip.com/tag/shield/), #Tutoriales de
Arduino (http://www.educachip.com/tag/arduino/)

(HTTP://WWW.EDUCACHIP.COM/MATERIAL-EMPEZAR-
CON-ARDUINO/)

http://www.educachip.com/arduinoethernetshield/ 18/110
17/5/2016 ArduinoEthernetShieldControlaTuCasaPorInternet

(HTTP://WWW.EDUCACHIP.COM/COMO-USAR-LA-
MEMORIA-EEPROM-DE-ARDUINO/)

Acerca del autor


Enrique: Estudiante de ingeniera en telecomunicaciones. Me encanta todo lo relacionado con la
electrnica #DIY y el movimiento #Maker, en especial la plataforma #Arduino. Autor del blog:
EducaChip (http://www.educachip.com)

294 Comments

Fernando Alonso T.
13 diciembre, 2014 | Responder

Esperando como loco el Shield Ethernet....creo que llegar a la semana que viene jejej
Gracias Enrique

Enrique (http://www.educachip.com)
13 diciembre, 2014 | Responder

Pues ya me contars! La verdad es que es de mis shields favoritos, sin duda una de las
mejores compras que hice. Ahora estoy pensando en utilizarlo para enviar tweets y a la
espera de una cmara para grabar un cochecito controlado desde Internet (a ver cmo hago
para que lo podis controlar desde EducaChip).

Un saludo, Enrique.

rodolfo
30 marzo, 2015 |

http://www.educachip.com/arduinoethernetshield/ 19/110

Você também pode gostar