Diferencia entre revisiones de «Ethernet»

De ArduWiki
Saltar a: navegación, buscar
(Métodos)
(Descripción)
 
(No se muestran 23 ediciones intermedias del mismo usuario)
Línea 5: Línea 5:
  
 
La libreria admiten hasta cuatro conexiones simultáneas (entrantes o salientes o una combinación), gestiona el chip W5100 y W5500; todas las funciones son las mismas siendo sus códigos portables.
 
La libreria admiten hasta cuatro conexiones simultáneas (entrantes o salientes o una combinación), gestiona el chip W5100 y W5500; todas las funciones son las mismas siendo sus códigos portables.
 +
 +
{{Tip|Librería oficial, es decir que está preinstalada junto con la IDE de Arduino, no es necesario descargarla.}}
  
 
== Placas aplicables ==
 
== Placas aplicables ==
Línea 23: Línea 25:
  
 
== Métodos ==
 
== Métodos ==
 +
=== Ethernet ===
 +
La clase '''Ethernet''' inicializa la librería y la configuración de red.
 +
<pre>
 +
#include <SPI.h>
 +
#include <Ethernet.h>
 +
</pre>
 +
 +
{| class="wikitable"
 +
|+Clase Ethernet
 +
|-
 +
! Método !! Descripción
 +
|-
 +
| Ethernet.begin(mac,ip,dns,gateway,subred) || Inicializa la biblioteca de Ethernet y la configuración de red.
 +
|-
 +
| Ethernet.dnsServerIP() ||
 +
|-
 +
| Ethernet.gatewayIP() || Retorna la dirección IP de la puerta de enlace para el dispositivo.
 +
|-
 +
| Ethernet.hardwareStatus() || le indica qué chip del controlador Ethernet WIZnet se detectó durante Ethernet.begin(), si lo hay. Esto se puede usar para solucionar problemas. Si no se detectó un controlador Ethernet, es probable que haya un problema de hardware.
 +
|-
 +
| Ethernet.init(pin) || Se usa para configurar el pin CS (selección de chip) para el chip del controlador Ethernet. La biblioteca Ethernet tiene un pin CS predeterminado, que generalmente es correcto, pero con algunos hardware Ethernet no estándar, es posible que necesite usar un pin CS diferente.
 +
|-
 +
| Ethernet.linkStatus() || Le dice si el enlace está activo. Link OFF podría indicar que el cable Ethernet está desconectado o defectuoso. Esta función solo está disponible cuando se utilizan los chips del controlador Ethernet W5200 y W5500.
 +
|-
 +
| Ethernet.localIP() || Obtiene la dirección IP del modulo Ethernet. Útil cuando la dirección se asigna automáticamente a través de DHCP.
 +
|-
 +
| Ethernet.MACAddress(mac) || Llena el búfer suministrado con la dirección MAC del dispositivo.
 +
|-
 +
| Ethernet.maintani() || Renovación del DHCP. Cuando se les asigna una dirección IP a través de DHCP, los dispositivos de Ethernet reciben un contrato de arrendamiento de la dirección por un período de tiempo. Con este metodo es posible solicitar la renovación del servidor DHCP. Dependiendo de la configuración del servidor, puede recibir la misma dirección, una nueva o ninguna.
 +
|-
 +
| Ethernet.setDnsServerIP(DNS) || Establezca la dirección IP del servidor DNS. No debe usarse con DHCP.
 +
|-
 +
| Ethernet.setGatewayIP(Port) || Establezca la dirección IP de la puerta de enlace de red. No debe usarse con DHCP.
 +
|-
 +
| Ethernet.setLocalIP(IP) || Establezca la dirección IP del dispositivo. No debe usarse con DHCP.
 +
|-
 +
| Ethernet.setMACAddress(mac) || Establece la dirección MAC. No debe usarse con DHCP.
 +
|-
 +
| Ethernet.setRetransmissionCount() ||
 +
|-
 +
| Ethernet.setRetransmissionTimeout() ||
 +
|}
 +
 +
=== Server ===
 +
Es cuando Arduino actúa como servidor y responde alas ordenes de los clientes.
 +
 +
La clase '''server''' crea servidores que pueden enviar y recibir datos a clientes conectados (programas que se ejecutan en otras computadoras o dispositivos).
 +
<pre>
 +
EthernetServer server = EthernetServer(puerto);
 +
</pre>
 +
 
{| class="wikitable"
 
{| class="wikitable"
|+Metodos mas usados
+
|+Clase Server
 
|-
 
|-
! Metodo !! Descripcion
+
! Método !! Descripción
 
|-
 
|-
| connect() ||  
+
| server.begin() || Le dice al servidor que comience a escuchar las conexiones entrantes.
 
|-
 
|-
| begin() ||  
+
| server.available() || Obtiene un cliente que está conectado al servidor y tiene datos disponibles para leer. La conexión persiste cuando el objeto de cliente devuelto queda fuera de alcance; puede cerrarlo llamando al cliente.stop().
 
|-
 
|-
| beginMulticast() ||  
+
| server.accept() || La función tradicional server.available() solo le informaría de un nuevo cliente después de enviar los datos, lo que hace que algunos protocolos como FTP sean imposibles de implementar correctamente.
 
|-
 
|-
| beginPacket() ||  
+
| server.write() || Escribir datos a todos los clientes conectados a un servidor. Estos datos se envían como un byte o serie de bytes.
 
|-
 
|-
| accept() ||  
+
| server.print(dato, base) || Imprime datos en todos los clientes conectados a un servidor. Imprime los números como una secuencia de dígitos, cada uno con un carácter ASCII (por ejemplo, el número 123 se envía como los tres caracteres '1', '2', '3').
 
|-
 
|-
| write() || Escribir
+
| server.println(dato, base) || Imprime datos, seguidos de una nueva línea, a todos los clientes conectados a un servidor. Imprime los números como una secuencia de dígitos, cada uno con un carácter ASCII (por ejemplo, el número 123 se envía como los tres caracteres '1', '2', '3').
 +
|}
 +
 
 +
=== Client ===
 +
Es el modo por el cual el Arduino pide información a un servidor.
 +
 
 +
La clase de '''client''' crea clientes que pueden conectarse a servidores, enviar y recibir datos.
 +
<pre>
 +
EthernetClient client;
 +
</pre>
 +
 
 +
{| class="wikitable"
 +
|+Clase Cliente
 
|-
 
|-
| availableForWrite() ||
+
! Método !! Descripción
 
|-
 
|-
| available() ||  
+
| client.connect() || Connects to a specified IP address and port. The return value indicates success or failure. Also supports DNS lookups when using a domain name.
 
|-
 
|-
| read() || Leer
+
| client.connected() || Si el cliente está conectado o no. Tenga en cuenta que un cliente se considera conectado si la conexión se ha cerrado pero todavía hay datos no leídos.
 
|-
 
|-
| peek() ||  
+
| client.write(dato) || Escriba datos en el servidor al que está conectado el cliente. Estos datos se envían como un byte o serie de bytes.
 
|-
 
|-
| flush() ||  
+
| client.available() || Devuelve el número de bytes disponibles para leer (es decir, la cantidad de datos que el servidor al que está conectado ha escrito al cliente).
 
|-
 
|-
| stop() ||  
+
| client.read() || Lea el siguiente byte recibido del servidor al que está conectado el cliente (después de la última llamada para leer ()).
 +
|-
 +
| client.flush() || Espera hasta que se hayan enviado todos los caracteres salientes en el búfer.
 +
|-
 +
| client.print(dato, base) || Imprime datos en el servidor al que está conectado un cliente. Imprime los números como una secuencia de dígitos, cada uno con un carácter ASCII (por ejemplo, el número 123 se envía como los tres caracteres '1', '2', '3').
 +
|-
 +
| clinet.println(dato, base) || Imprime datos, seguidos de un retorno de carro y una nueva línea, al servidor al que está conectado un cliente. Imprime los números como una secuencia de dígitos, cada uno con un carácter ASCII (por ejemplo, el número 123 se envía como los tres caracteres '1', '2', '3').
 +
|-
 +
| client.stop() || Desconecta el cliente
 
|}
 
|}
 +
 +
=== UDP ===
 +
El protocolo UDP (Protocolo de Datagrama de Usuario), es ligero por lo que no tiene la parte de seguridad. No existe un control del envio de paquetes, es decir no se preocupa de el estado como lleguen los datos. Su puerto esta abierto a cualquier dispositivo. Se usa para transmitir datos a alta velocidad como en resolución de DNS, streaming, VoIP y juegos online.
 +
 +
La clase EthernetUDP permite enviar y recibir mensajes UDP.
 +
<pre>
 +
#include <EthernetUdp.h>
 +
EthernetUDP Udp;
 +
</pre>
  
 
{| class="wikitable"
 
{| class="wikitable"
|+Otros metodos
+
|+Clase EthernetUDP
 +
|-
 +
! Método !! Descripción
 +
|-
 +
| Udp.begin(puerto) || Inicializa la biblioteca de ethernet UDP y la configuración de red.
 +
|-
 +
| Udp.status() ||
 +
|-
 +
| Udp.hardwareStatus() ||
 
|-
 
|-
! Metodo !! Descripcion
+
| Udp.status() ||
 
|-
 
|-
| status() ||  
+
| Udp.remoteIP() ||  
 
|-
 
|-
| hardwareStatus() ||  
+
| Udp.remotePort() ||  
 
|-
 
|-
| remoteIP() ||  
+
| Udp.remoteIP() ||  
 
|-
 
|-
| remotePort() ||  
+
| Udp.getSocketNumber() ||  
 
|-
 
|-
| getSocketNumber() ||  
+
| Udp.localIP() ||  
 
|-
 
|-
| localIP() ||  
+
| Udp.localPort() ||  
 
|-
 
|-
| localPort() ||  
+
| Udp.MACAddress() ||  
 
|-
 
|-
| MACAddress() ||  
+
| Udp.setConnectionTimeout() ||  
 
|-
 
|-
| setConnectionTimeout() ||  
+
| Udp.setRetransmissionCount() ||  
 
|-
 
|-
| setRetransmissionCount() ||  
+
| Udp.setLocalIP() ||  
 
|-
 
|-
| setLocalIP() ||  
+
| Udp.setSubnetMask() ||  
 
|-
 
|-
| setSubnetMask() ||  
+
| Udp.setGatewayIP() ||  
 
|-
 
|-
| setGatewayIP() ||  
+
| Udp.setDnsServerIP() ||  
 
|-
 
|-
| setDnsServerIP() ||  
+
| Udp.stop() ||  
 
|}
 
|}
  
 
== Advertencias ==
 
== Advertencias ==
* Arduino se comunica con el mudulo (shield) usando el bus [[SPI]] con los pines digitales 11, 12 y 13 en el [[UNO]] y los pines 50, 51 y 52 en el [[MEGA]]. En ambas placas, el pin 10 se usa como SS.  
+
* Arduino se comunica con el modulo (shield) usando el bus [[SPI]] con los pines digitales 11, 12 y 13 en el [[UNO]] y los pines 50, 51 y 52 en el [[MEGA]]. En ambas placas, el pin 10 se usa como SS.  
 
* En el [[MEGA]] el pin de hardware SS (53) no se usa para seleccionar el W5100, pero debe mantenerse como salida o la interfaz [[SPI]] no funcionará.
 
* En el [[MEGA]] el pin de hardware SS (53) no se usa para seleccionar el W5100, pero debe mantenerse como salida o la interfaz [[SPI]] no funcionará.
  
== Ejemplo ==
+
== Ejemplos ==
Al modulo (shield) se le debe asignar una dirección MAC y una dirección IP fija utilizando la función Ethernet.begin(). Una dirección MAC es un identificador global único para un dispositivo en particular. Los blindajes Ethernet actuales vienen con una pegatina que indica la dirección MAC que debe usar con ellos.  Las direcciones IP válidas dependen de la configuración de su red. Es posible usar DHCP para asignar dinámicamente una IP al escudo. Opcionalmente, también puede especificar una puerta de enlace de red y una subred.
+
* Al modulo (shield) se le debe asignar una dirección MAC y una dirección IP fija usando la función '''Ethernet.begin()'''. Una dirección MAC es un identificador global único para un dispositivo en particular. Los modulo (shield) Ethernet actuales vienen con una pegatina que indica la dirección MAC que debe usar con ellos.   
 +
* Las direcciones IP válidas dependen de la configuración de su red.  
 +
* Es posible usar DHCP para asignar dinámicamente una IP al modulo (shield).  
 +
* Opcionalmente, también puede especificar una puerta de enlace de red y una subred.
 +
 
 +
=== Client ===
 +
* [[WebClient|Web Client]] Hace una petición HTTP al servidor.
 +
* [[WebClientRepeating|Web Client Repeating]] Hace peticiónes HTTP repetitiva al servidor.
 +
* [[WebClientData|Web Client Data]] Envia un dato a un servidor Xampp.
 +
 
 +
=== Server ===
 +
* [[WebServer|Web Server]] Alojar (host) una página HTML simple que muestra valores de sensores analógicos.
 +
* [[ChatServer|Chat Server]] Configura un chat server.
  
* [http://arduwiki.perut.org/index.php/ChatServer ChatServer] Configura un chat server.
+
=== Otros ===
* [http://arduwiki.perut.org/index.php/WebClient WebClient] Hace una petición a HTTP.
+
* [[UDPSendReceiveString|UDP Send Receive String]] Envía y recive texto via UDP.
* [http://arduwiki.perut.org/index.php/WebClientRepeating WebClientRepeating] Hace petición HTTP repetitiva.
 
* [http://arduwiki.perut.org/index.php/WebServer WebServer] Alojar (host) una página HTML simple que muestra valores de sensores analógicos.
 
* [http://arduwiki.perut.org/index.php/UDPSendReceiveString UDPSendReceiveString]: Envía y recive texto via UDP.
 
 
* UdpNtpClient: Query a Network Time Protocol (NTP) server using UDP.
 
* UdpNtpClient: Query a Network Time Protocol (NTP) server using UDP.
 
* DnsWebClient: DNS and DHCP-based Web client.
 
* DnsWebClient: DNS and DHCP-based Web client.
Línea 110: Línea 209:
 
== Referencias externas ==
 
== Referencias externas ==
 
* [https://www.arduinolibraries.info All libraries]
 
* [https://www.arduinolibraries.info All libraries]
* [http://www.arduino.cc/en/Reference/Ethernet Ethernet]
+
* [http://www.arduino.cc/en/Reference/Ethernet Ethernet] - Arduino
 
* [https://naylampmechatronics.com/blog/27_Tutorial-Ethernet-Shield-y-Arduino.html Tutorial Ethernet] - Naylamp
 
* [https://naylampmechatronics.com/blog/27_Tutorial-Ethernet-Shield-y-Arduino.html Tutorial Ethernet] - Naylamp
 +
* [https://www.youtube.com/watch?v=idHOUiCzIRA Arduino Ethernet] - Rincon Ingenierial
 +
* [https://www.youtube.com/watch?v=MuNi8edyQVw Conexion de Arduino a internet] - El profe Garcia
 +
* [http://diymakers.es/crear-servidor-web-con-arduino/ Crear servidor web con Arduino] - Diy Makers
  
 
[[Category:Librerias]]
 
[[Category:Librerias]]
 +
[[Category:Libreria Ethernet]]

Revisión actual del 17:18 16 mar 2020

Descripción

La libreria Ethernet2.h de Paul Stoffregen están diseñadas para funcionar con Arduino Ethernet Shield (Ethernet.h) o Arduino Ethernet Shield 2 y Leonardo Ethernet (Ethernet2.h).

Esta librerias permiten que una placa Arduino se conecte a Internet. La placa puede servir como un servidor que acepta conexiones entrantes o un cliente que hace las conexiones salientes.

La libreria admiten hasta cuatro conexiones simultáneas (entrantes o salientes o una combinación), gestiona el chip W5100 y W5500; todas las funciones son las mismas siendo sus códigos portables.

Tip: Librería oficial, es decir que está preinstalada junto con la IDE de Arduino, no es necesario descargarla.


Placas aplicables

Actualmente (2018) se comercializan Ethernet Shield W5100 y Ethernet Shield W5500 compatibles con UNO, MEGA y Leonardo. Además disponen de un zócalo para una memoria MicroSD por si se quiere almacenar o recuperar datos de forma masiva.

Sintaxis

#include <SPI.h>
#include <Ethernet.h>
Ethernet.begin(mac,ip,gateway,subnet); 

Parámetros

mac
ip
gateway
subnet

Métodos

Ethernet

La clase Ethernet inicializa la librería y la configuración de red.

#include <SPI.h>
#include <Ethernet.h>
Clase Ethernet
Método Descripción
Ethernet.begin(mac,ip,dns,gateway,subred) Inicializa la biblioteca de Ethernet y la configuración de red.
Ethernet.dnsServerIP()
Ethernet.gatewayIP() Retorna la dirección IP de la puerta de enlace para el dispositivo.
Ethernet.hardwareStatus() le indica qué chip del controlador Ethernet WIZnet se detectó durante Ethernet.begin(), si lo hay. Esto se puede usar para solucionar problemas. Si no se detectó un controlador Ethernet, es probable que haya un problema de hardware.
Ethernet.init(pin) Se usa para configurar el pin CS (selección de chip) para el chip del controlador Ethernet. La biblioteca Ethernet tiene un pin CS predeterminado, que generalmente es correcto, pero con algunos hardware Ethernet no estándar, es posible que necesite usar un pin CS diferente.
Ethernet.linkStatus() Le dice si el enlace está activo. Link OFF podría indicar que el cable Ethernet está desconectado o defectuoso. Esta función solo está disponible cuando se utilizan los chips del controlador Ethernet W5200 y W5500.
Ethernet.localIP() Obtiene la dirección IP del modulo Ethernet. Útil cuando la dirección se asigna automáticamente a través de DHCP.
Ethernet.MACAddress(mac) Llena el búfer suministrado con la dirección MAC del dispositivo.
Ethernet.maintani() Renovación del DHCP. Cuando se les asigna una dirección IP a través de DHCP, los dispositivos de Ethernet reciben un contrato de arrendamiento de la dirección por un período de tiempo. Con este metodo es posible solicitar la renovación del servidor DHCP. Dependiendo de la configuración del servidor, puede recibir la misma dirección, una nueva o ninguna.
Ethernet.setDnsServerIP(DNS) Establezca la dirección IP del servidor DNS. No debe usarse con DHCP.
Ethernet.setGatewayIP(Port) Establezca la dirección IP de la puerta de enlace de red. No debe usarse con DHCP.
Ethernet.setLocalIP(IP) Establezca la dirección IP del dispositivo. No debe usarse con DHCP.
Ethernet.setMACAddress(mac) Establece la dirección MAC. No debe usarse con DHCP.
Ethernet.setRetransmissionCount()
Ethernet.setRetransmissionTimeout()

Server

Es cuando Arduino actúa como servidor y responde alas ordenes de los clientes.

La clase server crea servidores que pueden enviar y recibir datos a clientes conectados (programas que se ejecutan en otras computadoras o dispositivos).

EthernetServer server = EthernetServer(puerto);
Clase Server
Método Descripción
server.begin() Le dice al servidor que comience a escuchar las conexiones entrantes.
server.available() Obtiene un cliente que está conectado al servidor y tiene datos disponibles para leer. La conexión persiste cuando el objeto de cliente devuelto queda fuera de alcance; puede cerrarlo llamando al cliente.stop().
server.accept() La función tradicional server.available() solo le informaría de un nuevo cliente después de enviar los datos, lo que hace que algunos protocolos como FTP sean imposibles de implementar correctamente.
server.write() Escribir datos a todos los clientes conectados a un servidor. Estos datos se envían como un byte o serie de bytes.
server.print(dato, base) Imprime datos en todos los clientes conectados a un servidor. Imprime los números como una secuencia de dígitos, cada uno con un carácter ASCII (por ejemplo, el número 123 se envía como los tres caracteres '1', '2', '3').
server.println(dato, base) Imprime datos, seguidos de una nueva línea, a todos los clientes conectados a un servidor. Imprime los números como una secuencia de dígitos, cada uno con un carácter ASCII (por ejemplo, el número 123 se envía como los tres caracteres '1', '2', '3').

Client

Es el modo por el cual el Arduino pide información a un servidor.

La clase de client crea clientes que pueden conectarse a servidores, enviar y recibir datos.

EthernetClient client;
Clase Cliente
Método Descripción
client.connect() Connects to a specified IP address and port. The return value indicates success or failure. Also supports DNS lookups when using a domain name.
client.connected() Si el cliente está conectado o no. Tenga en cuenta que un cliente se considera conectado si la conexión se ha cerrado pero todavía hay datos no leídos.
client.write(dato) Escriba datos en el servidor al que está conectado el cliente. Estos datos se envían como un byte o serie de bytes.
client.available() Devuelve el número de bytes disponibles para leer (es decir, la cantidad de datos que el servidor al que está conectado ha escrito al cliente).
client.read() Lea el siguiente byte recibido del servidor al que está conectado el cliente (después de la última llamada para leer ()).
client.flush() Espera hasta que se hayan enviado todos los caracteres salientes en el búfer.
client.print(dato, base) Imprime datos en el servidor al que está conectado un cliente. Imprime los números como una secuencia de dígitos, cada uno con un carácter ASCII (por ejemplo, el número 123 se envía como los tres caracteres '1', '2', '3').
clinet.println(dato, base) Imprime datos, seguidos de un retorno de carro y una nueva línea, al servidor al que está conectado un cliente. Imprime los números como una secuencia de dígitos, cada uno con un carácter ASCII (por ejemplo, el número 123 se envía como los tres caracteres '1', '2', '3').
client.stop() Desconecta el cliente

UDP

El protocolo UDP (Protocolo de Datagrama de Usuario), es ligero por lo que no tiene la parte de seguridad. No existe un control del envio de paquetes, es decir no se preocupa de el estado como lleguen los datos. Su puerto esta abierto a cualquier dispositivo. Se usa para transmitir datos a alta velocidad como en resolución de DNS, streaming, VoIP y juegos online.

La clase EthernetUDP permite enviar y recibir mensajes UDP.

#include <EthernetUdp.h>
EthernetUDP Udp;
Clase EthernetUDP
Método Descripción
Udp.begin(puerto) Inicializa la biblioteca de ethernet UDP y la configuración de red.
Udp.status()
Udp.hardwareStatus()
Udp.status()
Udp.remoteIP()
Udp.remotePort()
Udp.remoteIP()
Udp.getSocketNumber()
Udp.localIP()
Udp.localPort()
Udp.MACAddress()
Udp.setConnectionTimeout()
Udp.setRetransmissionCount()
Udp.setLocalIP()
Udp.setSubnetMask()
Udp.setGatewayIP()
Udp.setDnsServerIP()
Udp.stop()

Advertencias

  • Arduino se comunica con el modulo (shield) usando el bus SPI con los pines digitales 11, 12 y 13 en el UNO y los pines 50, 51 y 52 en el MEGA. En ambas placas, el pin 10 se usa como SS.
  • En el MEGA el pin de hardware SS (53) no se usa para seleccionar el W5100, pero debe mantenerse como salida o la interfaz SPI no funcionará.

Ejemplos

  • Al modulo (shield) se le debe asignar una dirección MAC y una dirección IP fija usando la función Ethernet.begin(). Una dirección MAC es un identificador global único para un dispositivo en particular. Los modulo (shield) Ethernet actuales vienen con una pegatina que indica la dirección MAC que debe usar con ellos.
  • Las direcciones IP válidas dependen de la configuración de su red.
  • Es posible usar DHCP para asignar dinámicamente una IP al modulo (shield).
  • Opcionalmente, también puede especificar una puerta de enlace de red y una subred.

Client

Server

  • Web Server Alojar (host) una página HTML simple que muestra valores de sensores analógicos.
  • Chat Server Configura un chat server.

Otros

  • UDP Send Receive String Envía y recive texto 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

Vea también


Referencias externas