Conectar Arduino a Internet con módulo Ethernet ENC28J60


¿Qué es el ENC28J60?

El ENC28J60 es un controlador de Ethernet diseñado para sistemas embebidos fabricado por Microchip Technology Inc. Podemos usar el ENC28J60 junto a un procesador como Arduino para conectar nuestros proyectos de electrónica y robótica con Internet.

El ENC28J60 se controla a través de bus SPI, por lo que la conexión con Arduino es muy sencilla. El ENC28J60 opera a 3.3, pero es tolerante a señales de 5V, por lo que su integración es aún más sencilla.

El ENC28J60 soporta velocidades de 10Mbits/s y los modos Dúplex (Full-Duplex) y Semi-dúplex (Half-Duplex) con detección y corrección automática de la polaridad. El ENC28J60 cumple con las especificaciones IEEE 802.3 10BASE-T.

El ENC28J60 incorpora filtrado de paquetes para limitar el número de paquetes entrantes, un módulo DMA interno para facilitar el flujo de datos y hardware especifico para el cálculo de las sumas de control (IP checksums).

El ENC28J60 es uno de los procesadores más baratos para dotar conectividad a nuestros proyectos, y es más barato que otras alternativas como el W5100.

Sin embargo, el ENC28J60 carece de una pila de TCP/IP por hardware como sí que incluye el W5100. Por tanto, su uso es más complejo y requiere una mayor carga del procesador.

Precio

El ENC28J60 es un módulo muy barato, siendo precisamente una de sus principales ventajas. Podemos encontrarlo por unos 2.10€, buscando en vendedores internacionales de eBay o AliExpress.

Esquema de montaje

La conexión de un módulo de Ethernet ENC28J60 es muy sencilla ya que la comunicación se realiza a través del SPI como vimos en esta entrada.

La conexión en este caso, vista desde Arduino, sería la siguiente.

Ejemplos de código

Para controlar los módulos de Ethernet ENC28J60 usaremos la librería Ethercard.h disponible en este enlace.

La librería proporciona varios ejemplos de uso del ENC28J60 que resulta aconsejable revisar. Los siguientes ejemplos son modificaciones a partir de los disponibles en la librería.

Cliente Ethernet – Leer páginas web

En este ejemplo Arduino actúa como cliente, es decir, se conecta a una página web para leerla. Leer una página completa y volcarla por el puerto serie es muy lento, y es una de las muestras de las limitaciones de Arduino frente a un ordenador.

Sin embargo, puede ser útil para Arduino capture información desde un servidor. Por ejemplo, podemos hacer que sincronice la hora, que lea una serie de parámetros de un fichero de texto, que realice una determinada acción si existe un fichero, etc.

Para mostrar en este ejemplo esta capacidad de lectura de datos desde un servidor en Internet vamos a usar www.pasted.co, una de muchas páginas web que nos permiten añadir un texto para compartirlo con más gente.

En la página www.pasted.co/2434bc64 he pegado el texto ~1.2.3.4.5~. Los ‘~’ los usaremos como separadores para encontrar el texto deseado ‘1.2.3.4.5’, que simula una serie de parámetros que queremos capturar de un servidor.

El siguiente ejemplo se conecta con esta dirección y realiza la búsqueda del texto 1.2.3.4.5, que muestra por puerto serie. En un ejemplo real emplearíamos estos valores, por ejemplo, para controlar un robot, cambiar los parámetros de medición de una estación, encender o apagar un dispositivo, etc.

Arduino no tiene potencia suficiente para gestionar la encriptación necesaria en páginas https, por lo que sólo podremos leer páginas http.

Servidor Ethernet – Visualizar entradas

En el siguiente código Arduino actúa como servidor, es decir, devuelve una página web cuando un cliente (un PC, un móvil, otro Arduino…) se conecta a él.

En este caso, vamos a mostrar una página web con el estado de las entradas digitales y analógicas de Arduino. Para ello, simplemente servimos una cadena de texto en html, en la que incluimos los valores de las entradas.

ar conectado en la misma red local que el Arduino. Si queremos conectar desde internet deberemos definir una conexión bridge en el router que direcciones la IP externa a la IP local del Arduino.

Servidor Ethernet – Controlar salidas

El este ejemplo Arduino actúa también como servidor, pero esta vez queremos que el usuario pueda realizar acciones sobre Arduino a través de la página web que servimos.

En este caso, vamos a controlar dos salidas digitales, a las que podemos conectar un Led para visualizar la respuesta.

Para ello, en primer lugar servimos la página web de forma similar al ejemplo anterior, pero en esta incluimos dos botones para cada salida.

Al pulsar en cada botón se realiza una nueva solicitud a Arduino, con diferente URL a la original. Arduino captura la nueva solicitud, y emplea la URL recibida para realizar las acciones oportunas.

Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección
tutoriales de Arduino
Previous Librería Arduino Threshold
Next Conectar Arduino por WiFi con el módulo ESP8266 ESP01

¡Deja un comentario!...

avatar
1000
wpDiscuz