Hardware Ethernet en Arduino

Para poder añadir conectividad de Ethernet a Arduino disponemos de varios tipos de Ethernet Shield y breakout boards, pero principalmente el chip que tiene el interfaz ethernet y la pila de protocolos TCP/IP es el chip Wiznet W5100 y más recientemente el W5500, pero podemos encontrarnos shields intermedios basados en el W5200. La librería a usar dependerá del chip ethernet usado al estilo de un driver en un ordenador.

Existen otras shields o breakout boards basadas en otros chips y con otras librerías como el ENC28J60:

Cómo elegir la correcta librería para añadir Ethernet cn enc28j60 a Arduino: http://www.homautomation.org/2014/10/27/how-to-choose-the-right-library-to-add-ethernet-enc28j60-to-your-arduino/

Ethernet Shield V1

El Arduino Ethernet Shield V1 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.

Ethernet Shield permite a una placa Arduino conectarse a internet. 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 escribir programas que se conecten a internet usando la shield.

Datasheet de W5100: https://www.sparkfun.com/datasheets/DevTools/Arduino/W5100_Datasheet_v1_1_6.pdf

Para manejar este shield disponemos de la 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.

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.

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

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.

Nuestro 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 W5100 y el SD no pueden trabajar simultáneamente y debemos tener cuidado al usar ambos de forma conjunta.

El esquemático lo podéis encontrar en: http://arduino.cc/en/uploads/Main/arduino-ethernet-shield-06-schematic.pdf

El Ethernet shield es compatible con PoE gracias a un módulo adicional que extrae la energía eléctrica del cable ethernet, anteriormente inyectada desde el switch.

Las características del módulo PoE:

  • IEEE802.3af compliant
  • Low output ripple and noise (100mVpp)
  • Input voltage range 36V to 57V
  • Overload and short-circuit protection
  • 9V Output
  • High efficiency DC/DC converter: typ 75% @ 50% load
  • 1500V isolation (input to output)

Data sheet: http://arduino.cc/en/uploads/Main/PoE-datasheet.pdf

Ethernet Shield V2

Arduino Ethernet Shield V1 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 llamada Arduino Ethernet 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

Arduino Ethernet Shield 2:

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

Para las tarjetas basadas en el chip wiznet 5200:

Power over Ethernet

El Ethernet shield es compatible con PoE gracias a un módulo adicional que extrae la energía eléctrica del cable ethernet, anteriormente inyectada desde el switch.

Las características del módulo PoE:

  • IEEE802.3af compliant
  • Low output ripple and noise (100mVpp)
  • Input voltage range 36V to 57V
  • Overload and short-circuit protection
  • 9V Output
  • High efficiency DC/DC converter: typ 75% @ 50% load
  • 1500V isolation (input to output)

Data sheet: http://arduino.cc/en/uploads/Main/PoE-datasheet.pdf

Más información sobre el Power Over Ethernet:

Como funciona PoE: http://www.bb-elec.com/Learning-Center/All-White-Papers/Ethernet/Power-over-Ethernet-PoE.aspx

Phantom Feeding:

Alimentación sobre cables libres:

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

Solución: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio33-Configurar_IP

Grabar Datos en Tarjeta SD

El Ethernet shield tiene disponible una ranura para tarjetas microSD. Arduino es capaz de leer y escribir en la tarjeta microSD mediante la librería SD: https://www.arduino.cc/en/Reference/SD

Leer la documentación de la librería SD y entender qué hace cada una de las clases y sus métodos.

Insertar una tarjeta microSD y hacer un programa que grabe los datos de temperatura en un archivo llamado temp_log.csv cada 5 segundos. Los datos a guardar son: segundos desde inicio con la función millis() y la temperatura del sensor TMP36.

Opcionalmente crear un menú con 3 opciones:

  • 1 – Muestra el último dato guardado en la SD
  • 2 – Vuelca el contenido del fichero temp_log.csv por consola
  • 3 – Borra el contenido del fichero

Esquema de conexión:

Solución: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio34-SD_Datalogger

Anuncios

Un pensamiento en “Hardware Ethernet en Arduino

  1. Pingback: Saber Más Avanzado 2017 | Aprendiendo Arduino

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s