Archivo de la etiqueta: W5100

Hardware Ethernet en Arduino

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

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

Anuncios

Ethernet Shield

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 la 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 la 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.

Por otra parte arduino.org a sacado el Arduino Etherner Shield 2 con el nuevo Wiznet 5500 http://www.arduino.org/products/shields/arduino-ethernet-shield-2

Este Shield usa la librería ethernet2: http://www.arduino.org/learning/reference/Ethernet-two-Library

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/

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:

WIZnet W5100

El integrado W5100 se conecta al arduino mediante SPI.

Para saber todo sobre el W5100 revisar: http://www.ermicro.com/blog/?p=1773

Básicamente el Wiznet W5100 implementa una pila TCP con todas las funciones del estándar IEEE 802.3 (Ethernet capa física y de enlace de datos) dentro del chip; esto hace que el chip Wiznet W5100 sea buena opción para integrar el sistema embebido en internet. La programación del chip de Wiznet W5100 es también fácil ya que sólo tenemos que escribir y leer desde y hacia los registros internos W5100 con el fin de utilizar el construir funciones de los protocolos TCP/IP.

El Wiznet W5100 actuará como un dispositivo esclavo SPI controlado por microcontrolador ATMega328 como el SPI Maestro. Necesita el protocolo SPI al menos cuatro señales, MOSI (Master Out Serial In), MISO (Master In Serial Out), SCK (señal de reloh proporcionada por el maestro) y CS (the SPI slave chip select). El chip W5100 también proporciona el pin de interrupción.

Especificaciones:

¿Es posible hacer pings con arduino?

Sí, pero por supuesto con una librería: http://playground.arduino.cc/Code/ICMPPing

¿Soporta Arduino IPv6?

El shield oficial de arduino basado en el WizNet 5100 implementa la pila de protocolos IPv4, por lo que está shield no puede ser utilizada para implementar la pila IPv6.

Para implementar la pila IPv6, es necesario usar un shield basado en hardware que permita la gestión de la funciones de las capas de IP y ethernet. Shields basados en el chip MicroChip ENC28J60 son adecuados para la implementación de IPv6. Esto requiere la implementación de una gestión de los estados TCP, resultando un código de arduino más complejo.

Datasheet Chip ethernet IPv6:

Más información sobre IPv6: https://sites.google.com/site/ghoelzl/ipv6

IPv6WebServer: https://sites.google.com/site/ghoelzl/ipv6ethershield/ipv6_http_server

Y aun más… http://www.tweaking4all.com/hardware/arduino/arduino-enc28j60-ethernet/

Y otro ejemplo: http://www.fut-electronics.com/wp-content/plugins/fe_downloads/Uploads/Ethernet-Module-ENC28J60-Arduino.pdf

Librerías:

Shields Arduino

Las shields son placas de circuitos modulares que se montan unas encima de otras para dar funcionalidad extra a Arduino. Los Shields son apilables.

Las shields se pueden comunicar con el arduino bien por algunos de los pines digitales o analógicos o bien por algún bus como el SPI, I2C o puerto serie, así como usar algunos pines como interrupción. Además estas shields se alimenta generalmente a través del Arduino mediante los pines de 5V y GND.

Cada Shield de Arduino debe tener el mismo factor de forma que el standard de Arduino con un espaciado de pines concreto para que solo haya una forma posible de encajarlo.

 

Debemos tener en cuenta que cuando instalemos un shield, habrá que leer su documentación que nos dirá si inhabilita algunas de los pines I/O o si usa un bus y que requisitos tiene para su utilización, así como el software o librería que necesita para su uso. Generalmente las shields tienene un ejemplo o una librería para su uso.

En algunos casos los shiels pueden tener el pineado que no permita apilar más.

Veamos algunos de los shields más importantes de Arduino:

Ethernet Shield: http://arduino.cc/en/Main/ArduinoEthernetShield

La placa Arduino se comunica con el módulo W5100 y la micro-SD utilizando el bus SPI (mediante el conector ICSP). Esto se encuentra en los pines digitales 11, 12 y 13 en el modelo UNO y en los pines 50, 51 y 52 del modelo MEGA. En ambas placas, el pin 10 es utilizado para seleccionar el W5100 y el pin 4 para la micro-SD. Estos pines no pueden ser utilizados para otros fines mientras la Ethernet Shield esté conectada. El en MEGA, el pin SS (53) no es utilizado pero debe dejarse como salida para que el bus SPI funcione correctamente.

Usa la librería ethernet: http://www.arduino.cc/en/Reference/Ethernet

Arduino Wifi Shield: http://arduino.cc/en/Main/ArduinoWiFiShield

Permite conectar un Arduino a Internet mediante Wifi y hace uso de la librería WiFi Library http://arduino.cc/en/Reference/WiFi

También dispone de un slot para una tarjeta micro SD.

Este shield se comunica con Arduino a través del bus SPI mediante los pines ICSP y usa los pines 4 y 10 al igual que la Shield Ethernet. También hace uso del pin 7 que no puedes ser usado.

Debe tenerse en cuenta que dado que la tarjeta SD y la wifi usan el mismo bus SPI, no pueden trabajar simultáneamente, debe tenerse este aspecto en cuenta durante la programación si usamos ambos periféricos. Esta tarjeta también dispone de un interfaz en placa para actualizaciones de firmware y diagnósticos.

Este shield ya está descatalogado y ha sido sustituido por el Arduino WiFi Shield 101

Arduino WiFi Shield 101: https://www.arduino.cc/en/Main/ArduinoWiFiShield101

Este nuevo shield es una mejora de la anterior wifi shield desarrollado junto con Atmel que usa el módulo WINC1500 y también añade funciones de cifrado hardware gracias al chip de cifrado ATECC508A diseñado para el mercado de IoT. Los pines 5 y 7 son usados por este shield.

Usa una nueva librería llamada WiFi101 https://www.arduino.cc/en/Reference/WiFi101 que también usan otros Arduinos con wifi integrado como el MKR1000. Esta librería es muy compleja y ocupa más del 60% de la memoria disponible en el Arduino UNO, dejando poco espacio para los sketches. Si se van a realizar programas complejos, este shield es recomendable usarlo con Arduino Zero, 101 o Mega.

Arduino GSM Shield:

Conecta Arduino a Internet mediante GPRS, usando una tarjeta SIM. También permite enviar y recibir mensajes (SMSs) y llamadas de voz.

Telefónica presentó la nueva versión del proyecto Arduino GSM/GPRS Shield, un dispositivo que incorpora conexión GPRS/GSM a una placa base de hardware libre, dando como resultado un dispositivo de bajo coste conectado gracias a la tecnología machine to machine (M2M) de Telefónica. ¿El fin? Abrir nuevas posibilidades para que el llamado internet de las cosas pueda prosperar de forma sencilla y económica con la colaboración de Arduino.

Como cualquier otro elemento de Arduino, está disponible la documentación de HW y SW y es open source. Usa los pines 2 y 3 (software serial) y el pin 7 (reset), pero hay una serie de condicionantes para su uso con los Arduinos Mega, Yun y Leonardo debido a que los pines que se usan para comunicar deben tener implementada interrupción en el pin 2.

Para su uso es necesaria la librería GSM Library: http://arduino.cc/en/Reference/GSM

En este caso por el consumo de esta shield, se hace necesario alimentar a Arduino mediante una fuente externa y no desde el USB ya que no es capaz de proporcionar suficiente energía.

También es posible hacer llamadas de voz haciendo unas pequeñas modificaciones, añadiendo un micrófono y un altavoz.

Arduino Motor Shield: http://arduino.cc/en/Main/ArduinoMotorShieldR3

Permite manejar dos motores DC, controlando su dirección y velocidad. Está basado en un chip de doble puente H L298:

Para manejar un motor DC se puede usar otro integrado de puente H el L293 (http://www.ti.com/lit/ds/symlink/l293.pdf) como en el proyecto 2 de https://aprendiendoarduino.wordpress.com/2015/04/16/tema-5-taller-de-proyectos-con-arduino/, pero este shield nos facilita mucho su uso.

Este shield usa dos canales y cada canal usa 4 pines, en total nos ocupa 8 pines del Arduino

Un módulo con el mismo puente H pero sin formato shield: http://tienda.bricogeek.com/motores/285-controlador-de-motores-doble-puente-h-l298.html

Por otra parte, arduino.org ha lanzado otras shields y nuevas versiones de las ethernet y GSM. Todas las shields de arduino.org en http://www.arduino.org/products/shields

Además existen múltiples shields no oficiales de Arduino que nos permiten ampliar las capacidades de la placa Arduino. Unos ejemplos:

EmonTx Shield: http://openenergymonitor.org/emon/emontxshield/smt

Un shield para medir corriente eléctrica bajo el proyecto open energy monitor: http://openenergymonitor.org/emon/

Posee 4 entradas para conectar 4 toroidales abiertos y una entrada para conectar el sensor de voltaje mediante un transformador AC-AC, también tiene la posibilidad de montar un transmisor RF.

Grove Shield: http://www.seeedstudio.com/depot/Grove-Base-Shield-p-754.html

Un Shield para el sistema grove que facilita la conexión de sensores y actuadores.

Relay Shield: http://www.seeedstudio.com/depot/relay-shield-v20-p-1376.html?cPath=132_134

Este shield proporciona 4 relés para manejar dispositivos que no pueden controlarse directamente con las I/O de Arduino. Dispone de unos indicadores de uso de los relés.

En este caso se usan 4 pines digitales para usar cada uno de los relés.

Más información y ejemplos en: http://www.seeedstudio.com/wiki/Relay_Shield_V2.0

Shield Relay Driver de 8 canales: http://www.freetronics.com.au/collections/shields/products/relay8-8-channel-relay-driver-shield#.VQxwlo5k6t8

Este shield permite manejar hasta 8 relés (que no están en el shield) usando solo dos pines de I/O del Arduino. Se comunica con Arduino usando el bus I2C, de forma que aplilando varias de estas shields podemos manejar 16, 24 y más relés.

Guía de uso: http://www.freetronics.com.au/pages/relay8-8-channel-relay-driver-shield-quickstart-guide#.VQyBVI5k6t8

GPS Shield: http://www.adafruit.com/products/1272

Con un slot para micro SD donde guardar logs. No es compatible con Arduino Mega ni Due, RTC incluido.

Conexión por puerto serie o conexión directa.

Más información en: https://learn.adafruit.com/adafruit-ultimate-gps-logger-shield

Xbee Shield: https://www.sparkfun.com/products/12847 y http://www.seeedstudio.com/depot/xbee-shield-v20-p-1375.html

Para comunicación inalámbrica mediante Xbee. Conexión a UART de la MCU o a cualquier otro puerto por software serial.

Más información: http://www.seeedstudio.com/wiki/XBee_Shield_V2.0

TFT Shield:  http://www.electan.com/arduino-shield-tft-tactil-color-240×320-p-3187.html

Pantalla táctil resistiva con un slot para micro SD integrado. Comunicación a Arduino a través de bus SPI.

Bluetooth Shield: http://www.seeedstudio.com/depot/Bluetooth-Shield-p-866.html

Comunicación inalámbrica por bluetooth. Conecta con la UART del Arduino o software serial con selector de puerto serie..

Terminal Shield: http://www.freetronics.com.au/collections/shields/products/terminal-shield-for-arduino#.VQxwn45k6t8

Shield con borneros y placa de prototipado que nos permite conectar fácilmente cualquier sensor o actuador a un Arduino.

Además de los Shield, también tenemos disponibles módulos independientes para conectar directamente a Arduino:

Otras Shields Interesantes:

Existen muchísimos shields que seguro que alguno es capaz de cubrir las necesidades de nuestro proyecto. En cada web de los fabricantes tenemos variedad donde elegir.

Un listado completo donde encontrar cualquier tipo de shield: http://shieldlist.org/

Para aprender más sobre los shields: https://learn.sparkfun.com/tutorials/arduino-shields

Y por supuesto tenemos kits de robótica:

También hay Shields para Raspberry Pi:

Grove Pi tiene un “Arduino”: http://www.dexterindustries.com/GrovePi/engineering/port-description/

Tema 6 – Comunicaciones con Arduino (2)

Librería Ethernet. Shield Ethernet y W5100.

 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

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 un número de 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.

Para usar la Ethernet Shield solo hay que montarla sobre la placa Arduino. Para cargar los sketches a la placa conectarla al ordenador mediante el cable USB como se hace normalmente. Luego conectar la 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 simultaneas
  • 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.

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

 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

 

 WIZnet W5100

 El integrado W5100 se conecta al arduino mediante SPI.

 

Para saber todo sobre el W5100 revisar este enlace que es muy completo: http://www.ermicro.com/blog/?p=1773

Básicamente el Wiznet W5100 implementa una pila TCP con todas las funciones del estándar IEEE 802.3 (Ethernet capa fisica y de enlace de datos) dentro del chip; esto hace que el chip Wiznet W5100 sea buena opción para integrar el sistema embebido en internet. La programación del chip de Wiznet W5100 es también fácil ya que sólo tenemos que escribir y leer desde y hacia los registros internos W5100 con el fin de utilizar el construir funciones de los protocolos TCP/IP.

El Wiznet W5100 actuará como un dispositivo esclavo SPI controlado por microcontrolador ATMega328 como el SPI Maestro. Necesita el protocolo SPI al menos cuatro señales, MOSI (Master Out Serial In), MISO (Master In Serial Out), SCK (señal de reloh proporcionada por el maestro) y CS (the SPI slave chip select). El chip W5100 también proporciona el pin de interrupción.

Para inicializar el chip W5100, tenemos que escribir en cada uno de los registros comunes W5100 nombrados MR ((Mode Register), SUBR (Subnet mask Register), SAR (Source Hardware Register), SIPR (Source IP Register), RMSR (Receive Memory Size Register) y TMSR (Transmit Memory Size Register).

Todos los registros de W5100 registros de direcciones tiene 16 bits de ancho y el registro en sí es de 8 bits de ancho; como utilizamos el microcontrolador ATMega328 de 8 bits, con el fin de realizar la operación de escritura o lectura tenemos que pasar los primeros 8 bits MSB (byte más significativo) y seguir los siguientes 8-bit LSB (byte menos significativo) de la direccion de memoria del registro de W5100. El Wiznet W5100 también utiliza dos comandos para diferenciar entre la escritura (0xF0) y operación de lectura (0x0F). La escritura y lectura en el SPI de Wiznet se implementa con SPI_Write () y SPI_Read ().

Especificaciones:

 Ver en el pdf el mapa de memoria y los registros comunes.

 ¿Es posible hacer pings con arduino? Sí, pero con una librería: http://playground.arduino.cc/Code/ICMPPing

¿Soporta Arduino IPv6?

El shield oficial de arduino basado en el WizNet 5100 implementa la pila de protocolos IPv4, por lo que esta shield no puede ser utilizada para implementar la pila IPv6.

Para implementar la pila IPv6, es necesario usar un shield basado en hardware que permita la gestión de la funciones de las capas de IP y ethernet. Shields basados en el chip MicroChip ENC28J60 son adecuados para la implementación de IPv6. Esto requiere la implementación de una gestión de los estados TCP, resultando un código de arduino más complejo.

 Datasheet Chip ethernet IPv6:

 Más información sobre IPv6: https://sites.google.com/site/ghoelzl/ipv6

 IPv6WebServer: https://sites.google.com/site/ghoelzl/ipv6ethershield/ipv6_http_server

 Y aun más… http://www.tweaking4all.com/hardware/arduino/arduino-enc28j60-ethernet/

 Y otro ejemplo: http://www.fut-electronics.com/wp-content/plugins/fe_downloads/Uploads/Ethernet-Module-ENC28J60-Arduino.pdf

 Librerías:

Wifi Shield

El WiFi Shield de Arduino conecta Arduino a Internet de forma inalámbrica.

Toda la información sobre este Shield en :

Y los datasheet de los integrados:

 Para conectarte al 32UC3: http://arduino.cc/en/Hacking/WiFiShield32USerial

Y la librería para manejar el shield en: http://arduino.cc/en/Reference/WiFi

 Actualizar su firmware: http://arduino.cc/en/Hacking/WiFiShieldFirmwareUpgrading

 

Wifi library:

 Otro integrado wifi muy usado con arduino es: CC3000 

 Y la librería: https://github.com/sparkfun/SFE_CC3000_Library

 Y un buen paso a paso para usar esta shield:

 Y un ejemplo de uso práctico para hacer domótica en casa:

 Librería Ethernet

Para manejar el Ethernet Shield usaremos la librería Ethernet, deberemos conocer todos los métodos que nos ofrece la librería para poder usarla.

http://arduino.cc/en/Reference/Ethernet

 La librería ethernet se compone de 5 clases, cada una con sus métodos

 Ethernet Class: Inicializa la librería ethernet y las configuraciones de red

  • begin() – Inicializa la librería Ethernet (Constructor)
  • localIP() – Obtiene la dirección IP. Útil al usar DHCP
  • maintain() – Solicita una renovación al servidor DHCP

 IPAddress Class: trabaja con IPs locales y remotas

 Server Class: crea un servidor que puede mandar y recibir datos de los clientes conectados.

  • Server() – Constructor de la clase server. No se usa directamente
  • EthernetServer() – Crea un servidor que escucha por las conexiones entrantes del puerto definido.
  • begin() – Le dice al servidor que comience a escuchar.
  • available() – Devuelve el cliente que está conectado al servidor y tiene datos disponibles a leer.
  • write() – Escribe datos a todos los cliente conectados al servidor.
  • print() – Escribe datos a todos los cliente conectados al servidor.
  • println() – Escribe datos a todos los cliente conectados al servidor seguido de una nueva línea.

 Client Class: crea un cliente que se conecta a un servidor y puede mandar y recibir datos

  • Client – Constructor de la clase client. No se usa directamente
  • EthernetClient() – Crea un cliente que se conecta a una determinada IP y puerto
  • if (EthernetClient) – Indica si el cliente Ethernet está preparado
  • connected() – Devuelve si el cliente está o no conectado
  • connect() – Conecta a una IP y puerto especificado. Soporta DNS lookup. Devuelve unos códigos en función del éxito o fallo de la conexión.
  • write() – Escribe datos al servidor al que está conectado.
  • print() – Escribe datos al servidor al que está conectado
  • println() – Escribe datos al servidor al que está conectado, seguido de una nueva línea
  • available() – Devuelve el número de bytes disponibles para leer.
  • read() – Lee el siguiente byte recibido desde el servidor.
  • flush() – Borrar todos los bytes que han sido escritos en el cliente pero no leidos
  • stop() – Desconecta el cliente del servidor

 EthernetUDP Class: habilita el envío y recepción de mensajes UDP

  • begin() – Inicializar la librería UDP
  • read() – Lee datos UDP
  • write() – Escribe datos UDP a la conexión remota.
  • beginPacket() – Comienza una conexión para escribir paquetes UDP
  • endPacket() – Finaliza una conexión UDP después de escribir
  • parsePacket() – Comprueba la presencia de un paquete UDP
  • available() – Devuelve el nº de bytes disponible para leer en el buffer
  • stop() – Desconecta del servidor
  • remoteIP() – Obtiene la IP de la conexión remota
  • remotePort() – Obtiene el puerto de la conexión remota

 Más información sobre el protocolo UDP: http://es.wikipedia.org/wiki/User_Datagram_Protocol

 Y varios ejemplo para usar:

 Snippets para ethernet: http://playground.arduino.cc/Main/SketchList#ethernetShield

 Recordar que tenemos un arduino Ethernet que es casi igual a un arduino UNO + un ethernet shield: http://arduino.cc/en/Main/arduinoBoardEthernet

 Ejercicio25-EthernetClient Crea un cliente ethernet que se conecte a una web y escriba los datos recogidos. Guarda los datos en un string.

webclient: http://playground.arduino.cc/Code/WebClient

Prueba a conectarte a varias páginas web y usa el servicio DNS poniendo la url en lugar de la IP.

Trata de conectarte a la AEMET para ver si sería posible obtener el tiempo de logroño.

Usa la API de http://www.openweathermap.org/ para obtener los datos del tiempo en una ciudad en concreto

Tiene aemet una API?

Serías capaz de sacar la temperatura en logroño actualizada por el display LCD sin necesidad de un sensor de temperatura?

Solución: https://github.com/jecrespo

 Un poco de información:

 Ejercicio26-EthernetServer Crea un servidor web sencillo que devuelva la petición http que le ha llegado. Luego añade el valor leído por un sensor.

Implementar también un servidor de telnet simple.

webserver: http://playground.arduino.cc/Code/WebServerST

Solución: https://github.com/jecrespo

 Ejercicio27-Boton Crea una web embebida con un botón que al pulsarlo desde el navegador encienda un led.

Ejercicio: http://diymakers.es/crear-servidor-web-con-arduino/

http://www.jackbarber.co.uk/notes/arduino-web-server-led-control

Solución: https://github.com/jecrespo

Ejercicio28-ChatEthernet: Hacer el mismo chat del puerto serie con ethernet

Chat server: http://arduino.cc/en/pmwiki.php?n=Tutorial/ChatServer

y chat client: http://arduino.cc/en/Tutorial/ChatClient

Solución: https://github.com/jecrespo