Paso 3: Understaing el código :)
He adjuntado un código de ejemplo (archivo .ino) que sería utilizado como referencia durante la explicación. Que no explicando cada línea del código, si tienes alguna duda por favor lo publique en la sección de comentarios. Está bien, permite empezar entonces.
Empezamos con incluyendo los header archivos que son necesarios para el programa a ejecutar.
Archivos de encabezado
Ethernet.h--> esta biblioteca consta de las funciones que se cuida de gestionar las conexiones de cliente, conectarse a servidores y recibir/enviar solicitudes y un montón de otras cosas.
SPI.h--> este es un archivo de encabezado importantes, define cómo tu arduino controla el shield ethernet. y la ranura para tarjetas SD presente en él. SPI es un protocolo de comunicación. Consulte la documentación proporcionada por la Web de arduino para más detalles. Documentación de SPI.
Funciones de la biblioteca de Ethernet
Mac--generalmente si tienes una versión genuina u original de la EthernetShield último, debe tener una dirección MAC impresa en la espalda. Pero si tiene una versión clonada es obligatorio asignar un usuario definidas MAC, esto funciona con la versión original de EthernetShield.
Usted podría hacer lo mismo con la IP también, pero no lo recomiendo porque cuando tu arduino con una dirección IP predefinida y trata de conectarse al router puede no lo hace, si el router ya ha asignado a algún otro dispositivo con la misma IP que el DHCP manejar la asignación de direcciones IP.
EthernetServer--Crea un servidor que escucha las conexiones entrantes en el puerto especificado. En el ejemplo he asignado a un número de puerto 12345. Se puede utilizar cualquier número de Puerto podría desea, pero asegúrese de que ningún otro servicio se está ejecutando en ese puerto.
EthernetServer.begin()---intenta establecer conexión con el router usando el usuario definido dirección MAC. Aunque tiene otros argumets dependiendo de la situación. Por favor revisa el link Ethernet.begin
Serial.Begin()---Se abre un puerto serie de arduino con una velocidad en baudios especificada. Es útil para depurar el código, en caso de errores.
Mecanismo de control de cliente
La inicialización debe hacerse sólo una vez, por lo tanto va en el bloque setup(). Considerando que el servidor debe comprobar para clientes esperando conectarse de vez en cuando por lo tanto esa parte del código va en un bloque de loop().
Revisa estos enlaces que indicamos a continuación para comprender el funcionamiento del código.
Nuestro servidor comprueba una conexión de cliente cada 2 segundos y si un cliente intenta conectarse se recibe su solicitud se imprime en el terminal de la serie y responde con una página HTML.