El Arduino ethernet shield nos da la capacidad de conectar un Arduino a una red ethernet. Es la parte física que implementa la pila de protocolos TCP/IP.
Está basada en el chip ethernet Wiznet W5100. El Wiznet W5100 provee de una pila de red IP capaz de soportar TCP y UDP. Soporta hasta cuatro conexiones de sockets simultáneas. Usa la librería Ethernet para leer y escribir los flujos de datos que pasan por el puerto ethernet. Me permitirá escribir sketches que se conecten a internet usando esta shield.
Datasheet de W5100: https://www.sparkfun.com/datasheets/DevTools/Arduino/W5100_Datasheet_v1_1_6.pdf
Librería ethernet: http://arduino.cc/en/Reference/Ethernet
El shield provee un conector ethernet estándar RJ45. 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 genéricas.
El botón de reset en la shield resetea ambos, el W5100 y la placa Arduino.
La shield contiene varios LEDs para información:
- ON: indica que la placa y la shield están alimentadas
- LINK: indica la presencia de un enlace de red y parpadea cuando la shield envía o recibe datos
- 100M: indica la presencia de una conexión de red de 100 Mb/s (de forma opuesta a una de 10Mb/s)
- RX: parpadea cuando el shield recibe datos
- TX: parpadea cuando el shield envía datos
El jumper soldado marcado como “INT” puede ser conectado para permitir a la placa Arduino recibir notificaciones de eventos por interrupción desde el W5100, pero esto no está soportado por la librería Ethernet. El jumper conecta el pin INT del W5100 al pin digital 2 de Arduino.
El slot SD en la shield usa la librería http://arduino.cc/en/Reference/SD para manejarlo. El propio chip W5100 incluye el manejo de tarjetas SD.
Para usar la Ethernet Shield solo hay que montarla sobre la placa Arduino. Para cargar los sketches a la placa con el shield, conectarla al ordenador mediante el cable USB como se hace normalmente. Luego conectar el puerto Ethernet a un ordenador, a un switch o a un router utilizando un cable ethernet standard (CAT5 o CAT6 con conectores RJ45). La conexión al ordenador puede requerir el uso de un cable cruzado (aunque muchos ordenadores actuales, pueden hacer el cruce de forma interna).
Un tutorial sencillo para comenzar con el shield ethernet en: http://www.artinteractivo.com/arduino-ethernet
Para cualquier duda sobre el ethernet Shield consultar: http://arduino.cc/en/Main/ArduinoEthernetShield
Puntos a recordar del Ethernet Shield:
- Opera a 5V suministrados desde la placa de Arduino
- El controlador ethernet es el W5100 con 16K de buffer interno. No consume memoria.
- El shield se comunica con el microcontrolador por el bus SPI, por lo tanto para usarlo siempre debemos incluir la libreria SPI.h: http://arduino.cc/en/Reference/SPI
- Soporta hasta 4 conexiones simultáneas
- Usar la librería Ethernet para manejar el shield: http://arduino.cc/en/Reference/Ethernet
- El shield dispone de un lector de tarjetas micro-SD que puede ser usado para guardar ficheros y servirlos sobre la red. Para ello es necesaria la librería SD: http://arduino.cc/en/Reference/SD
- Al trabajar con la SD, el pin 4 es usado como SS.
Arduino UNO se comunica con W5100 y la tarjeta SD usando el bus SPI a través del conector ICSP. Por este motivo los pines 10, 11, 12 y 13 en el UNO y los 50, 51, 52 y 53 en el Mega no podrán usarse. En ambas placas los pines 10 y 4 se usan para seleccionar el W5100 y la tarjeta SD. El Ethernet y el SD no pueden trabajar simultáneamente y debemos tener cuidado al usar ambos de forma conjunta.
Para conectar el shield, se deben seguir estas instrucciones: http://arduino.cc/en/Guide/ArduinoEthernetShield
El esquemático lo podéis encontrar en: http://arduino.cc/en/uploads/Main/arduino-ethernet-shield-06-schematic.pdf
Arduino Ethernet Shield 2
Arduino Ethernet Shield es una placa que aparece en la web de arduino.cc como retirado, pero sigue estando disponible como clones o versiones derivadas.
Existe una nueva versión del Ethernet Shield llamadal Arduino Etherner Shield 2 con el nuevo Wiznet 5500: https://www.arduino.cc/en/Main/ArduinoEthernetShield
Este Shield usa la librería Ethernet 2 cuya sintaxis es igual que la librería Ethernet: https://www.arduino.cc/en/Reference/Ethernet
Data sheet de W5500: https://www.sos.sk/productdata/15/26/12/152612/W5500_datasheet_v1.0.2_1.pdf
Mejoras de W5500: https://feilipu.me/2014/11/16/wiznet-w5500-ioshield-a/
Otros Arduinos con Ethernet
Existe un Arduino Ethernet que es casi igual a un arduino UNO + Ethernet Shield: https://www.arduino.cc/en/Main/arduinoBoardEthernet
También existe el Arduino Leonardo ETH que es casi lo mismo que un Arduino Leonardo + un Ethernet Shield 2: https://www.arduino.cc/en/Main/ArduinoBoardLeonardoEth
Práctica: Uso Ethernet Shield
IP Dinámica con Arduino. DHCP
Configurar Arduino con el ethernet shield de forma que coja la IP dinámicamente por DHCP y lo muestre por pantalla.
Solución: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio32-DHCP
IP Fija con Arduino
Configurar Arduino con el ethernet shield de forma que le asignamos una IP fija con la siguiente configuración:
- IP: 192.168.6.1YY. Siendo YY el número = 30 + número del kit. Por ejemplo para el kit 4 la IP es la 192.168.6.134 y para el kit 16 la IP es es 192.168.6.146.
- Subnent: 255.255.255.0
- Gateway: 192.168.6.1
- DNS: 8.8.8.8