Arduino Ethernet Shield

En este último tutorial, conectaremos nuestro Arduino a una red Ethernet, usaremos un Arduino Ethernet Shield (escudo) práctico y fácil de usar. De esta sencilla forma, podremos acceder a contenidos web como cliente, usar Arduino como servidor web para mostrar datos de sensores e infinidad de cosas que se os puedan ocurrir.

Haremos un sencillo ejemplo para familiarizarnos con la shield Ethernet. El objetivo será crear un servidor web en nuestro Arduino para mostrar datos con los que trabaja Arduino, en este caso veremos el tiempo que a trascurrido desde que se puso en marcha el microcontrolador.

Un servidor web no es más que un dispositivo que atiende peticiones de otro dispositivo cliente a través de una dirección IP, es decir, si nosotros accedemos a la IP de Arduino (proporcionada por la Ethernet Shield) mediante un navegador, estaremos solicitando una información, Arduino como servidor, nos servirá la información solicitada.

ethernet arduino 5

Material necesario

Solo necesitaremos nuestro Arduino (nosotros usaremos Arduino Mega el cual puedes adquirir en comprar Arduino Mega), una tarjeta Ardunio Ethernet Shield (Comprar Ardunio Ethernet Shield), un cable Ethernet y el cable de porgamación USB.

arduino ethernet shield
Arduino Ethernet Shield.

ethernet arduino 7
Cable Ethernet.

ethernet arduino 8
Arduino Mega.

Código Arduino Ethernet Shield

Aunque en el código existen comentarios de las partes más importantes, hay que tener en cuenta algunas cuestiones:

  • byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    Es la configuración del identificador único MAC del adaptador de red (Arduino Ethernet Shield), este debe ser único en la red. Aseguraos de que no existe otro dispositivo con esta misma dirección.
  • IPAddress ip(192,168,1,177);
    Es la IP que Arduino tomará como servidor a la cual tendremos que acceder para ver los datos. Debe estar dentro del rango de red para poder ser visible. Intenta usar una IP lo más cercana posible a la IP del PC con el que trabajáis.
  • #include <Ethernet.h>
    Librería para usar la shield Ethernet (incluida en la IDE de Arduino).

Este código imprime información a través de dos medios. Una a través del puerto serie y otra como servidor a través del navegador. Por esto, cuando existe un cliente solicitando información, primero imprime (carácter a carácter) la información que el cliente solicita a través del puerto serie y luego atiende la petición imprimiendo los datos en el navegador.

ethernet arduino 9
Conectaremos la Shield sobre Arduino.

ethernet arduino 11
Y conectaremos el cable USB y Ethernet.

ethernet arduino 1
Una vez cargado el código en Arduino, si todo esta correcto, debe aparecer la IP del servidor en el monitor serie.

ethernet arduino 2
Accederemos mediante un navegador a la IP del ahora servidor web Arduino.

ethernet arduino 3
Si todo está correcto, aparecerá un mensaje como el de la foto, junto al tiempo trascurrido desde que se encendió Arduino en milisegundo. Esta información se refrescará cada 5 segundos.

ethernet arduino 4
En el puerto serie podremos ver las peticiones del cliente. El simple hecho de acceder a la dirección IP de Arduino ya es una petición.

sello garantizado

4 comentarios en “Arduino Ethernet Shield

  1. Hola!
    Acabo de adquirir mi arduino uno con su ethernet shield hace cerca de una semana y pues estuve entendiendo uno por uno los programas de ejemplos (Los basicos y los de ethernet), y se me presento este problema cuando probe el ejemplo de servidor web en el cual no puedo acceder a la ip del server mediante el navegador (El programa corre perfectamente, verifique la ip del router que es 192.168.1.1 la mascara 255.255.255.0, no me detecta ping al server con el cual use 192.168.1.177)

  2. Hola,
    un artículo interesante.

    Yo estoy en el caso contrario al que explicas, estoy usando arduino como “cliente” y una raspberry como “servidor”.
    Tengo conectados varios sensores al arduino, uno de ellos recoge datos de temperatura y humedad.
    Me veo que si envío más de un dato por GET, el código no funciona bien.

    “client.print(“GET /testArduino2.php?tipo=”);”

    He probado con varios “client.print”, añadiendo detrás de “tipo=” un & y las siguientes variables pero no me funciona bien.

    Podrías decirme cómo enviar más de una variable?

    Muchísimas Gracias.

Deja un comentario