Descargar - Creatividad Ahora

Anuncio
CREATIVIDAD AHORA
Uso del Shield Ethernet
con Arduino
Tutorial Arduino
Creatividad Ahora
5/26/2014
Lunes, 26 de mayo de 2014
2
Tutorial del Manejo del Shield Ethernet R3
1. Introducción
Hoy en día donde se vive la tendencia de cualquier dispositivo conectarlo a la Red IP sea en
una red pequeña o a través de internet, basado en esta tendencia es necesario conectar nuestra
plataforma arduino a la red, teniendo esto conecto podemos enviar/recibir información vía 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) información del arduino.
Adicionalmente quisiéramos mencionar que el tutorial se baso en el uso del shield Ethernet
de Arduino (Original), por lo tanto no garantiza que todo sea válido si se usa un Shield Ethernet
Compatible.
2. El Modulo Ethernet :
Podemos mencionar brevemente sobre este modulo que su comunicación 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 operación del mismo Arduino por lo que no podemos conectar algún 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.
www.creatividadahora.com
Lunes, 26 de mayo de 2014
3
Conectaremos el Shield encima del Arduino, luego el shield hacia la red mediante conector
RJ45.
3. La red IP:
Previo a empezar con el código en el Arduino, haremos una descripción general de un
esquema de Red en el cual arduino formara parte, el esquema esta lo más generalizado
posible con los diferentes dispositivos.
Según el Diagrama, los dispositivos que pertenecen a la red son:



Switch: Forma o es parte de la red, permite la comunicación 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.
www.creatividadahora.com
Lunes, 26 de mayo de 2014
4
Los elementos de red se encuentran diferenciados uno de otros mediante lo que son direcciones,
estas direcciones se le conocen como Dirección Física (Dirección MAC) que pertenecen
propiamente a la Tarjeta de Red (NIC), a su vez se encuentran también con direcciones Lógicas
llamadas direcciones IP, estas direcciones IP asignadas a cada elemento de red provienen de la
dirección de Red asignada a a red el esta trabaja en conjunto con la máscara de red.
Las direcciones Fiscas constan de 6 bytes, y la dirección 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 dirección MAC pegada en la parte trasera de la placa,
tenga en consideración que un shield Ethernet que no tenga la dirección MAC pegada es un
compatible. Todos los originales sin excepción tienen la MAC en la parte trasera.
4. Iniciando la conectividad
Para iniciar la funcionalidad del Ethernet solo es necesario la ejecución de un comando el
cual lleva 4 Argumentos ( No todos son Obligatorios).
Ethernet.begin(mac,ip,gateway,netmask);
//No olvidar el ;
Donde se tiene:
www.creatividadahora.com
Lunes, 26 de mayo de 2014




5
Mac: Dirección 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 debería 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 información 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
www.creatividadahora.com
Lunes, 26 de mayo de 2014
6
Una vez probada la conectividad es necesario el envió y recepción de información a través
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); //información enviada a todos los cliente, byte o char
server.print(valor); //Envio de cadena ascii a todos los clientes sin salto de línea.
server.println(valor); //envio de cadena ascii a todos los clientes con salto de línea.
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 línea.
cliente.println(valor); //envio de cadena ascii al servidor con salto de línea.
cliente.available(); //devuelve el nro de bytes disponibles en el buffer para lectura.
www.creatividadahora.com
Lunes, 26 de mayo de 2014
7
cliente.flush(); //borra los bytes que aun no han sido leidos.
cliente.stop(); //Detiene la conexión con el servidor, produce la desconexión.
8. Codigo de Prueba
Basado en esto crearemos un Servidor con arduino e imprimiremos cualquier carácter
enviado por algún cliente en el Serial, el código 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
}
}
www.creatividadahora.com
Lunes, 26 de mayo de 2014
8
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.
www.creatividadahora.com
Descargar