Es momento de abrir al mundo nuestro Arduino. Vamos a configurar todo lo necesario para conectar a internet nuestro Arduino através de una shield Ethernet.
Este post veremos cómo configurar nuestro
entorno de trabajo para poder sacar partido de esta shield, que creo que es de
las más productivas que podemos encontrar. Veremos cómo configurar el router,
como parametrizar la shield Ethernet y un sencillo ejemplo que puede servir de
base para desarrollar otros proyectos.
Los requisitos necesarios para poder sacar
partido de este ejemplo son:
- - Sería recomendable,
tener nociones de HTML,
- - Un router conectado a internet, y
sus instrucciones si es posible
- - Paciencia y algo para hidratarnos
que ya empieza a hacer demasiada calor
- - Opcionalmente, ya lo explicaremos, un IP fija o servicio DDNS equivalente
Vamos a ello,
El
router
Antes de seguir,
debo advertir que este ejemplo está realizado con mi router. Se trata del que
facilita mi proveedor de internet (no lo
nombraré hasta que no me paguen por ello ),
y hay que advertir que cada modelo gestiona las opciones de
configuración de manera distinta. La parte positiva, es que de todas maneras
las opciones suelen ser bastante similares y no difieren mucho de un modelo a
otro.
En cualquier caso, podéis localizar mucha
información sobre configuración de routers en páginas como esta www.adslayuda.com
¿Preparados? Bien, pues lo primero es conocer
en que dirección IP podemos configurar nuestro router. Podemos mirar si
físicamente tiene alguna pegatina, (versión cutre pero efectiva), o lanzar unos
comandos desde nuestro ordenador.
Si utilizas Windows, los pasos son estos:
- Botón de inicio y busca ejecutar
- - Teclea en la pantalla cmd y enter ( Estos dos pasos son equivalentes a pulsar Tecla windows + R)
- - Tendrás ahora una ventana con
fondo negro del tipo MS-DOS, teclea ipconfig y enter
-
En la pantalla que te habrá
salido, busca la línea Puerta de enlace predeterminada, esa es tu dirección IP.
Ahora
con tu dirección IP, abre una pestaña de tu navegador favorito y pega el número
tal cual en la barra de direcciones.
Según el ejemplo : http://192.168.1.1
Te saldrá la pantalla de bienvenida de tu
router, y los más probable, dos espacios solicitando usuario y contraseña.
Si no los sabes, puedes buscar con google, por
tu modelo y/o operador de internet. Este sitio te puede servir de referencia.
Los más habituales:
-
Usario: admin, user,(en blanco)
-
Contraseña: admin, user, 1234,(en
blanco)
Llegados a este punto, deberíamos haber sido
capaces de acceder al entorno de configuración del router. El siguiente paso es :
Asignar
una IP al Arduino
Ahora, necesitamos que cada vez que nuestro
Arduino se conecte a nuestra red local, lo haga siempre a la misma dirección.
Si no lo configuramos, el router va gestionando las direcciónes IP de manera
automática y toalmente aleatoria, y nosotros necesitamos que sea siempre la
misma.
¿Cómo? Primero asignaremos a nuestra shield un
identificador único. Esto lo hacemos desde el void setup, configurando el MAC
de la placa. Podéis profundizar más sobre el tema aquí, pero básicamente se
trata de un identificador con la dirección física del dispositivo, lo tiene cualquier
aparato que se conecte a la red, y la única premisa que debe cumplir es que no
sea igual al de alguno de los dispositivos conectado en nuestra red. Por
defecto, puedes usar :
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
Y la instrucción completa:
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
Si nuestro proyecto tuviese dos shields Ethernet
este número debería ser diferente para cada una de ellas.
Podéis comprobar las direcciones MAC de los
equipo conectados buscando entre las opciones del router algo del tipo Device
Info - > DCHP, donde os saldrá una tabla con las direcciones MAC de los
dispositivos conectados la última semana.
Ahora es momento de localizar en el menú del router dentro de las opciones de DCHP, algo parecido a DCHP estáticas, o asignaciones de MAC . Es el punto donde debemos escoger la dirección IP que asignaremos al Arduino y decirle al router la MAC que corresponde al Arduino. Una imagen de como queda en mi router.
Accediendo desde el “exterior”
Una vez completados los pasos anteriores ya
puedes acceder vía IP desde tu red local al Arduino, y probar el ejemplo que
hay más adelante. Tan solo tendrías que teclear la dirección IP que le hemos asignado dentro de la barra del navegador. Algo como esto http://192.168.1.177 .
Para poder acceder desde fuera de la red local, tenemos que decirle al router que permita las conexiones entrantes. Para ello habilitaremos un puerto, el nº 80 por ejemplo para permitirlo. A muchos les sonará esto del emule... para los que no deberemos buscar en el router un menú relacionado con puertos, NAT, virtual servers o similar. En caso contrario, una búsqueda en google con el nombre de vuestro equipo del estilo :
abrir puertos router XXXXX, os solventará el problema.
Recordad , puerto 80, y la IP que le hemos asignado al Arduino la 192.168.1.177 .
¿Esto es todo? No, I'm sorry. Falta saber la dirección IP que el proveedor nos asigna a nuestra conexión. Para eso teclear en vuestro navegador:
www.cualesmiip.com o www.sabermiip.es
Anotad la dirección que os aparece, cerrad el navegador y reiniciar el router. Ahora volved a teclearlo y comprobad si los números son iguales. No coincide ¿verdad? , es normal que no coincidan, eso significa que tu IP es dinámica, como la del 99% de los usuarios.
¿Que implica que tu IP sea dinámica? El número que te ha mostrado es tu dirección IP, tecleando
desde cualquier
parte
del mundo accederías a tu red, o al menos al puerto 80 ( es el que hemos abierto).
Si es dinámica, cambiará ante cualquier incidencia ( corte de tensión o reasignación por parte del proveedor), y te impedirá acceder a tu sistema.
Tranquilo, esto tiene solución, no hemos llegado hasta aquí para abandonar ahora. Tienes al menos dos maneras para resolverlo:
1 .- Contratar con tu suministrador un servicio de IP estática o fija. El coste ronda los 30€ anuales. El inconveniente, al margen del precio, es que una dirección tan solo numérica es difícil de recordar.
2.- Contratar un servicio de DDNS. Los hay de pago o gratuitos, y lo que hacen es seguir tu IP dinámica y asignarla a un nombre de servidor ( de tu elección) que lo hace más fácil de recordar. El inconveniente es que tu router debe soportar este servicio. Algunos ejemplos de proveedores de este servicio pueden ser, DynDNS, TZO, NoIP (gratuito con reactivación mensual), DNSdynamic (gratuito). Configurarlo en tu router será tan sencillo como buscar la opción e introducir el usuario y contraseña asignados. Recuerda que el registro previo se ha decir vía web.
Recuerda que no es necesario, ni abrir puertos, ni configurar el DDNS para poder realizar el ejercicio propuesto. Esto sólo será necesario en caso de querer hacerlo funcionar desde fuera de nuestra red local.
Una forma rápida de comprobar si todo gira, uno de los ejemplos de los que vienen por defecto en el IDE de Arduino. Os recomiendo:
Archivo -> Ejemplos -> Ethernet -> WebClient
Abrir el navegador y poner la dirección 192.168.1.177 si estás conectado en tu red local (lo recomiendo para empezar), o tu dirección IP. Obtendrás una pantalla con 6 lecturas analógicas totalmente arbitrarias, pues no hay nada conectado.
Hay trabajo para rato con lo aquí propuesto para configurar vuestra red local, así que os dejo en este punto. El montaje consistiría únicamente en montar la shield encima del Arduino, alimentar el conjunto y conectar a la red local mediante un cable RJ-45. Poned los valores propuestos, pues son los que usa el ejemplo del IDE.
En la siguiente entrada habilitaremos el código para leer un TMP-36 y hacer una lectura real de temperatura. Nos vemos!