La librería Ethernet es la usada para manejar el Ethernet Shield que es un shield que implementa la pila de protocolos TCP/IP y luego dentro de la programación de Arduino se implementan los protocolos en la capa de aplicación. La librería se usa entre otras cosas para mandar por Ethernet el protocolo programado en Arduino.
Para manejar el Ethernet Shield deberemos conocer todos los métodos que nos ofrece la librería Ethernet y así poder usarla.
Reference de librería Ethernet: 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. Facilita el trabajo con direcciones IPs.
- IPAddress() – Define una dirección IP
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 clientes conectados al servidor.
- print() – Escribe datos a todos los clientes conectados al servidor.
- println() – Escribe datos a todos los cliente conectados al servidor seguido de una nueva línea.
NOTA: Cuando se crea un servidor con la clase server, dejo un puerto escuchando peticiones por ese puerto. En el caso que entre una nueva petición, esta queda en el buffer. Cuando el buffer tiene datos, llamo a la función server.available() que devuelve un cliente (de la clase client) que está conectado al servidor y está disponible para leer.
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
Arduino nos ofrece varios ejemplos para comprender el uso de la librería:
- ChatServer: set up a simple chat server.
- WebClient: make a HTTP request.
- WebClientRepeating: Make repeated HTTP requests.
- WebServer: host a simple HTML page that displays analog sensor values.
- BarometricPressureWebServer: outputs the values from a barometric pressure sensor as a web page.
- UDPSendReceiveString: Send and receive text strings via UDP.
- UdpNtpClient: Query a Network Time Protocol (NTP) server using UDP.
- DnsWebClient: DNS and DHCP-based Web client.
- DhcpChatServer: A simple DHCP Chat Server
- DhcpAddressPrinter: Get an IP address via DHCP and print it out
- TelnetClient: A simple Telnet client
Snippets para ethernet: http://playground.arduino.cc/Main/SketchList#ethernetShield
Librería Ethernet2
Para usar la nueva Arduino Ethernet Shield 2 con el W5500, es necesaria la librería Ethernet 2: https://www.arduino.cc/en/Reference/Ethernet
El uso de esta librería es similar a la de Ethernet y los métodos son los mismos. Por lo tanto un sketch para Ethernet funciona con ethernet2 simplemente cambiando la llamada a la librería correcta, es decir, poner #include <Ethernet2.h> en lugar de #include <Ethernet.h>
Esta librería hay que usarla para el Arduino Ethernet Shield 2, Arduino Leonardo Ethernet y cualquier otra placa o shield con chip W5500.
Por otra parte el propio fabricante de los chips ethernet Wiznet ha liberado una librería para sus dispositivos: https://github.com/Wiznet/WIZ_Ethernet_Library y adafruit también ha desarrollado una librería ethernet 2: https://github.com/adafruit/Ethernet2
Pingback: Saber Más Avanzado 2017 | Aprendiendo Arduino
Pingback: Saber más Arduino Avanzado 2018 | Aprendiendo Arduino