You are on page 1of 8

CREATI VI DAD AHORA

Uso del Shield Ethernet


con Arduino
Tutorial Arduino

Creatividad Ahora
5/26/2014



Lunes, 26 de mayo de 2014 2

www.creatividadahora.com

Tutorial del Manejo del Shield Ethernet R3

1. Introduccin
Hoy en da donde se vive la tendencia de cualquier dispositivo conectarlo a la Red IP sea en
una red pequea o a travs de internet, basado en esta tendencia es necesario conectar nuestra
plataforma arduino a la red, teniendo esto conecto podemos enviar/recibir informacin va IP desde
cualquier dispositivo de red, pudiendo ser estos dispositivos PCs, Smartphone, Tablets o cualquiera
que soporte el protocolo de red.
Mediante el Shield Ethernet de Arduino conseguimos esta funcionalidad que nuestra
dispositivo envi (controla) o recibe (monitorea) informacin del arduino.
Adicionalmente quisiramos mencionar que el tutorial se baso en el uso del shield Ethernet
de Arduino (Original), por lo tanto no garantiza que todo sea vlido si se usa un Shield Ethernet
Compatible.
2. El Modulo Ethernet :
Podemos mencionar brevemente sobre este modulo que su comunicacin con el arduino es
mediante SPI por lo que utiliza los pines 10,11,12 y 13 del Arduino, quedando estos pines no
disponibles para alguna operacin del mismo Arduino por lo que no podemos conectar algn sensor
o dispositivo E/S usando el Modulo.
Adicionalmente el Shield Ethernet posee un conector para una MicroSD el cual si se usa utiliza
el pin4 del Arduino, mayor referencia al uso de la microSD sugerimos leer el Libro de Arduino
publicado por Creatividad Ahora.



Lunes, 26 de mayo de 2014 3

www.creatividadahora.com
Conectaremos el Shield encima del Arduino, luego el shield hacia la red mediante conector
RJ45.
3. La red IP:
Previo a empezar con el cdigo en el Arduino, haremos una descripcin general de un
esquema de Red en el cual arduino formara parte, el esquema esta lo ms generalizado
posible con los diferentes dispositivos.



Segn el Diagrama, los dispositivos que pertenecen a la red son:
Switch: Forma o es parte de la red, permite la comunicacin entre los diferentes
elementos de red, cabe mencionar que no puede hacer que se comuniquen de una
red a otra, sino en la misma red, se le conoce como nivel 2 (L2).
Router: Permite comunicar diferentes redes en este caso conecta una red Local a
otra red que es Internet, se le conoce dispositivo de nivel 3 (L3).
Dispositivo de Red: elementos que forman parte de la red como PC, Laptops,
Tablet (wifi), Smarphone (Wifi), Impresoras IP, etc.

Lunes, 26 de mayo de 2014 4

www.creatividadahora.com
Los elementos de red se encuentran diferenciados uno de otros mediante lo que son direcciones,
estas direcciones se le conocen como Direccin Fsica (Direccin MAC) que pertenecen
propiamente a la Tarjeta de Red (NIC), a su vez se encuentran tambin con direcciones Lgicas
llamadas direcciones IP, estas direcciones IP asignadas a cada elemento de red provienen de la
direccin de Red asignada a a red el esta trabaja en conjunto con la mscara de red.
Las direcciones Fiscas constan de 6 bytes, y la direccin de red as como la mascara de red de 4
bytes el cual tiene el siguiente formato x.y.z.w, donde x,y,z,w entra entre 0 a 255 (son bytes).
Los Shield Ethernet de arduino tienen la direccin MAC pegada en la parte trasera de la placa,
tenga en consideracin que un shield Ethernet que no tenga la direccin MAC pegada es un
compatible. Todos los originales sin excepcin tienen la MAC en la parte trasera.



4. Iniciando la conectividad
Para iniciar la funcionalidad del Ethernet solo es necesario la ejecucin de un comando el
cual lleva 4 Argumentos ( No todos son Obligatorios).
Ethernet.begin(mac,ip,gateway,netmask); //No olvidar el ;
Donde se tiene:
Lunes, 26 de mayo de 2014 5

www.creatividadahora.com
Mac: Direccin Fisica MAC de la tarjeta, la cual viene impresa en la parte posterior
de la tarjeta, cabe mencionar que solo las tarjetas Originales la tienen.
Ip: Direccion Logica Ip a aseginarse al Arduino, debe tener concordancia con la
direccion Ip de red asi como debe ser nica en la red.
Gateway: Puerta de Enlaced.
Netmask: Mascara de red.
Con esta sentencia ya debera tener conectividad el Arduino con los demas elementos de
red, para probar conectividad se puede usar el comando Ping ip.
Ejemplo:
Si su pc tiene la IP 192.168.10.15 y ud le asigno al arduino la ip 192.168.10.50, entonces
desde su pc si ud ejecuta el comando en el cmd : ping 192.168.10.50 debe tener el siguiente
mensaje de tener conectividad
Pinging 192.168.10.50 with 32 bytes of data:
Reply from 192.168.1.1: bytes=32 time=22ms TTL=64
Reply from 192.168.1.1: bytes=32 time=70ms TTL=64
Reply from 192.168.1.1: bytes=32 time=59ms TTL=64
Reply from 192.168.1.1: bytes=32 time=6ms TTL=64

El cual indica que el Test ha sido exitoso.
5. Cliente - Servidor
Hasta el momento lo que se ha probado es netamente conectividad, sin embargo lo que
deseamos realmente es la transferencia de informacin entre un dispotivo de red (como PC o
tablet) con el Arduino, para ello es necesario manejar el concepto de cliente-servidor
6. Objetos a crear


Lunes, 26 de mayo de 2014 6

www.creatividadahora.com
Una vez probada la conectividad es necesario el envi y recepcin de informacin a travs
de la red, para realizar esta tarea usaremos el modelo Cliente/Servidor donde podemos definir los
siguientes elementos:
Servidor: Es el elemento que ofrecer un servicio para que los clientes lo utilicen, el
servicio vendr identificado por un numero de Puerto, cabe mencionar que un elemento de
red que ser servidor puede ofrecer uno o mas servicios, la forma de diferenciar un servicio
de otro es mediante el puerto, este proceso es lo que se conoce como Socket.
Cliente: Elemento que usara un servicio brindado por el servidor, entonces podemos definir
que un cliente al usar un servicio deber conocer la Ip del servidor (Ip identifica al elemento
en la red) y el puerto ya que este identifica al servicio.
Arduino Puede trabajar como Cliente y Servidor, inclusive puede ser ambos en simultaneo
dependiendo del aplicativo a usar
Declaracion
EthernetServer server EthernetServer(#puerto); //se define un servidor cuyo nombre es
//server y se identifica al servicio por el #puerto dado.
EthernetClient cliente ; //define un cliente basado en la clase EthernetClient.
EthernetClient cliente = server.available(); //inicializa un cliente en base a la coneccion al
servidor.

7. Funciones
En base al servidor, recordar primero definirlo.
server.begin(); //inicializa el servidor
server.write(valor); //informacin enviada a todos los cliente, byte o char
server.print(valor); //Envio de cadena ascii a todos los clientes sin salto de lnea.
server.println(valor); //envio de cadena ascii a todos los clientes con salto de lnea.
cliente.connected();//devuelve true si el cliente esta conectado, false si no.
cliente.read(); //devuelve byte o char disponible en el buffer.
cliente.connect(ip, #puerto); //se conecta a un servidor, necesita ip y puerto (servicio).
cliente.print(vaor); //envio de cadena ascii al servidor sin salto de lnea.
cliente.println(valor); //envio de cadena ascii al servidor con salto de lnea.
cliente.available(); //devuelve el nro de bytes disponibles en el buffer para lectura.
Lunes, 26 de mayo de 2014 7

www.creatividadahora.com
cliente.flush(); //borra los bytes que aun no han sido leidos.
cliente.stop(); //Detiene la conexin con el servidor, produce la desconexin.

8. Codigo de Prueba
Basado en esto crearemos un Servidor con arduino e imprimiremos cualquier carcter
enviado por algn cliente en el Serial, el cdigo es el siguiente:
#include <Ethernet.h>
#include <SPI.h>
byte mac[]={0x90,0x50,0x20,0x1A,0x32,0x45};
byte ip[]={192,168,1,10};
byte gateway[]={192,168,1,1};
byte netmask[]={255,255,255,0};
EthernetServer server = EthernetServer(2000);
void setup(){
Ethernet.begin(mac,ip,gateway,netmask); //iniciamos el Ethernet
Serial.begin(9600); //iniciamos el Serial
server.begin(); //iniciamos el servidor
}

void loop(){
EthernetClient cliente = server.available(); //cliente disponible creamos el objeto
if(cliente.connected()){
char c = cliente.read(); //leemos datos del cliente tipo char
Serial.println(c); //imprimimos el dato en el serial
}
}

Lunes, 26 de mayo de 2014 8

www.creatividadahora.com
9. Prueba Final
Teniendo esto implementado, usar un cliente de cualquier lenguaje de su preferencia, en
clase usaremos lo adjuntos de cliente/servidor JAVA el cual puede descargar de la web y lo ejecuta
desde netbeans.

You might also like