Tutorial: Controlar un LED con Arduino y ENC28J60 en Modo Servidor Web - Tecneu

Tutorial: Controlar un LED con Arduino y ENC28J60 en Modo Servidor Web

Comentarios

Introducción 

En este tutorial vamos a construir un servidor web utilizando un Arduino y un módulo Ethernet ENC28J60, para controlar el estado de un LED y visualizar un contador a través de una página web con una interfaz simple y funcional que permite el control de un LED conectado a un Arduino a través de una red. La página está diseñada para actualizarse automáticamente cada segundo.

La página consta de un título "Ejemplo con ENC28J60 Tecneu", y dos botones, uno rojo etiquetado como 'OFF' y uno verde etiquetado como 'ON'. Estos botones permiten al usuario enviar una solicitud HTTP GET al Arduino para encender ('ON') o apagar ('OFF') el LED.

Además, la página muestra, en tiempo real, el valor de un contador que se incrementa cada segundo y el estado lógico del LED.

El fondo de la página web es de color azul claro y el encabezado está centrado y con un texto azul. Los botones tienen un tamaño suficientemente grande para ser fácilmente identificables y utilizables.

 

Materiales

- Arduino UNO
- Módulo Ethernet ENC28J60
- Led
- Resistencia de 220 Ohm
- Cables de conexión

Diagrama

Conecta el módulo ENC28J60 al Arduino UNO asi como el LED. Aquí tienes un listado con las conexiones necesarias:

* VCC del ENC28J60 --> 3.3V del Arduino
* GND del ENC28J60 --> GND del Arduino
* SCK del ENC28J60 --> Pin 13 del Arduino
* SO del ENC28J60 --> Pin 12 del Arduino
* SI del ENC28J60 --> Pin 11 del Arduino
* CS del ENC28J60 --> Pin 10 del Arduino
* Conecta el ánodo del LED (lado más largo del LED) al pin 2 del Arduino y el cátodo a GND a través de una resistencia de 220 Ohm.

ENC28J60 Diagrama esquematico

Instalación de la biblioteca EtherCard

La biblioteca EtherCard permite a un Arduino interactuar con una red Ethernet y puede ser utilizada para desarrollar proyectos de Internet de las Cosas (IoT) como servidores web, clientes web y otros proyectos de red.

Para instalarla, ve a Sketch -> Include Library -> Manage Libraries -> Buscar EtherCard -> Instalar.

Incluye las siguientes funcionalidades:

  • Soporta protocolos de red como ARP, IP, ICMP, UDP y TCP.
  • Puede ser usada para crear servidores y clientes de protocolos de red.
  • Soporta DHCP para la configuración automática de la dirección IP, la máscara de red, la puerta de enlace y el servidor DNS.
  • Admite el envío y la recepción de paquetes de datos a través de la red.

La librería EtherCard ofrece una API de alto nivel que simplifica las tareas de programación de la red. Sin embargo, manejar la red a este nivel puede ser complejo y requiere un conocimiento sólido de los protocolos de red.


Código de Programación

El siguiente código utiliza una placa Arduino y un módulo Ethernet ENC28J60 para crear un servidor web básico que puede interactuar con un LED y mostrar información en una página web.

El Arduino está configurado para encender y apagar un LED en función de las solicitudes HTTP GET que recibe. Específicamente, se enciende el LED si se recibe "GET /?data1=1" y se apaga si se recibe "GET /?data1=0".

El programa también mantiene un contador que se incrementa cada segundo. Este contador junto con el estado del LED se muestra en una página web que se sirve desde el Arduino.

Cada vez que se accede a la página, se actualiza automáticamente cada segundo gracias a la etiqueta <meta http-equiv="refresh" content="1">.

Nota: En la línea de código:

 static byte mymac[] = { 0x74, 0x69, 0x69, 0x2D, 0x30, 0x31 };

Se está definiendo una dirección MAC estática para la tarjeta de red Ethernet del Arduino.

Esta dirección MAC está dada en formato hexadecimal y consta de 6 bytes (48 bits en total).

Un aspecto a tener en cuenta es que cada dispositivo de red en una red determinada debe tener una dirección MAC única. Si tienes múltiples dispositivos con la misma dirección MAC en la misma red, puede causar conflictos.

En este caso, puedes definir cualquier dirección MAC que desees, siempre y cuando respetes la unicidad de la MAC en tu red.

Prueba tu servidor web

Carga el código en tu placa Arduino, conecta tu módulo a la red y abre el monitor serial a 9600 baudios.

Durante la configuración, Arduino intenta obtener una dirección IP utilizando DHCP. Si la configuración de DHCP falla, imprime un mensaje de error en la consola serial. Si el proceso es exitoso, imprime la dirección IP obtenida en la consola serial.

Abre la dirección IP de tu Arduino en un navegador web conectado a la misma red. Se mostrará una página como la que se muestra a continuación:

La página web tiene dos botones, uno para encender el LED ("ON") y otro para apagarlo ("OFF"). Al presionar estos botones, se envían las solicitudes HTTP GET correspondientes al Arduino.

De esta manera, mediante el uso de una tarjeta Ethernet y la librería Ethercard, se está controlando el estado de un LED y se está mostrando información en una página web servida directamente desde el Arduino.

Recomendaciones

Es importante tener en cuenta que, aunque el Arduino es una plataforma muy versátil, tiene limitaciones en términos de la cantidad de memoria dinámica disponible. A medida que agregas más datos y complejidad a tu página web (tales como elementos de diseño, CSS, JavaScript, imágenes, etc.), el tamaño del buffer que necesitas para almacenar y servir esa página aumentará.

Si la página web se vuelve demasiado grande, puedes superar la cantidad de memoria dinámica disponible en tu Arduino, lo que puede llevar a comportamientos inesperados, errores en tiempo de ejecución o incluso al fallo total del programa. 

Conclusiones e ideas de proyectos

A lo largo de este tutorial, aprendimos cómo crear un servidor web básico utilizando un Arduino y un módulo Ethernet ENC28J60. Vimos cómo se puede controlar la configuración de un LED y mostrar información a través de una página web.

  • Control de dispositivos domésticos: Podrías adaptar este código para controlar varios dispositivos en tu hogar, como luces, electrodomésticos o sistemas de riego automatizados.
  • Monitoreo de sensores: Podrías agregar sensores al Arduino (por ejemplo, de temperatura, humedad, luz) y mostrar sus lecturas en la página web.
  • Seguridad de la casa: Utilizando sensores de movimiento o de apertura de puertas/ventanas, podrías configurar un sistema de alarma básico. Cuando se detecte actividad, podrías encender un LED, sonar una alarma y/o enviar una notificación a tu página web.
  • Estación meteorológica personalizada: Con varios sensores ambientales (temperatura, humedad, presión atmosférica, velocidad y dirección del viento, etc.), podrías construir una estación meteorológica personalizada y mostrar los datos en tu página web.


Recuerda, los proyectos basados en Arduino y el Internet de las cosas ofrecen un mundo de posibilidades para el hogar, la educación y más allá. Las limitaciones de memoria y de rendimiento son retos que empujan a los ingenieros a encontrar soluciones creativas y eficientes. ¡Feliz construcción!

 

 

Productos Relacionados

Ver artículo

Ver artículo

Comentarios 

Sin comentarios

Dejar un comentario
Tu correo no será publicado, los campos requeridos estan marcados con *
Artículos relacionados
Suscríbete
Suscríbete a nuestro boletín y recibe las últimas ofertas y novedades.