CONTENIDO ►
Al diseñar mecanismos autónomos o crear un sistema doméstico inteligente, muchas personas pueden tener la necesidad de conectar un Arduino al ENC28J60 Ethernet LAN Shield / Network Module. Esto permitirá que el Arduino sea controlado a través de una red local a través de un ordenador o dispositivo móvil (si un punto de acceso Wi-Fi está disponible). Vamos a ver cómo conectar el HanRun HR911105A al Arduino en artículo.
Para esta actividad necesitaremos:
- Arduino Uno / Arduino Nano / Arduino Mega
- Módulo ENC28J60 Ethernet Shield;
- LEDs y resistencias de 220 Ohm;
- protoboard;
- cables de conexion;
- libreria EtherCard.h
ENC28J60 Ethernet Module datasheet, pinout

Características HanRun Ethernet Shield:
- Alimentación: 3,3 V
- Chip: ENC28J60-I/SO
- 25 MHZ
- Interfaz ethernet: HR911105A
- Tamaño de la placa: 56 x 34 mm
Siga las instrucciones paso a paso y podrá controlar el encendido de los LED a través de su red local mediante el ordenador. Y si el router tiene la capacidad de crear un punto de acceso Wi-Fi, se puede acceder al control a través de cualquier dispositivo móvil (teléfono o tableta). A continuación se muestra el diagrama de cableado del módulo LAN HanRun HR911105A, así como un boceto de control Arduino a través de Wi-Fi que funciona.
Conectar HanRun ENC28J60 Ethernet Shield Arduino

| ENC28J60 | Arduino Uno | Arduino Nano | Arduino Mega |
| GND | GND | GND | GND |
| 5V / 3.3V | 5V / 3.3V | 5V / 3.3V | 5V / 3.3V |
| SCK | 13 (SCK) | 13 (SCK) | 52 (SCK) |
| SO | 12 (MISO) | 12 (MISO) | 50 (MISO) |
| ST | 11(MOSI) | 11 (MOSI) | 51 (MOSI) |
| CS | 10 (SS) | 10 (SS) | 53 (SS) |
Conecte la placa Arduino Uno y el HR911105A como en la imagen de arriba. Tenga en cuenta que el módulo Ethernet de 10 pines ENC28J60 Enternet HR911105A se alimenta de un conector de 3,3 V y el módulo de 12 pines de 5 V. Además, las designaciones de los conectores en el HanRun HR911105A pueden ser cambiadas por el fabricante, por ejemplo ST en lugar de SO. La conexión de los cables a las patillas debe ser de buena calidad.
Programa Arduino para HanRun Ethernet module ENC28J60
#include "EtherCard.h" static byte mymac[] = {0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A }; // MAC Address static byte myip[] = {192, 168, 1, 55 }; // IP Address byte Ethernet::buffer[1200]; BufferFiller bfill; int LedPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; boolean PinStatus[] = {1, 2, 3, 4, 5, 6, 7, 8}; const char http_OK[] PROGMEM = "HTTP/1.0 200 OK\r\n" "Content-Type: text/html\r\n" "Pragma: no-cache\r\n\r\n"; const char http_Found[] PROGMEM = "HTTP/1.0 302 Found\r\n" "Location: /\r\n\r\n"; const char http_Unauthorized[] PROGMEM = "HTTP/1.0 401 Unauthorized\r\n" "Content-Type: text/html\r\n\r\n" "<h1>401 Unauthorized</h1>"; void homePage() { bfill.emit_p(PSTR("$F" "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>" "<meta name='viewport' content='width=device-width, initial-scale=1.0'>" "<title>Contrôle Arduino via Wi-Fi</title>" "<h1 style='color:#0ea6f2'>Contrôle Arduino via Wi-Fi</h1>" "<font size='3em'>" "<font style='display:none;'>LED 0: <a href='?ArduinoPIN1=$F'>$F</a></font>" "LED 1: <a href='?ArduinoPIN2=$F'>$F</a><br /><br />" "LED 2: <a href='?ArduinoPIN3=$F'>$F</a><br /><br />" "LED 3: <a href='?ArduinoPIN4=$F'>$F</a><br /><br />" "</font>"), http_OK, PinStatus[1] ? PSTR("off") : PSTR("on"), PinStatus[1] ? PSTR("<font color='green'>ON</font>") : PSTR("<font color='red'>OFF</font>"), PinStatus[2] ? PSTR("off") : PSTR("on"), PinStatus[2] ? PSTR("<font color='green'>ON</font>") : PSTR("<font color='red'>OFF</font>"), PinStatus[3] ? PSTR("off") : PSTR("on"), PinStatus[3] ? PSTR("<font color='green'>ON</font>") : PSTR("<font color='red'>OFF</font>"), PinStatus[4] ? PSTR("off") : PSTR("on"), PinStatus[4] ? PSTR("<font color='green'>ON</font>") : PSTR("<font color='red'>OFF</font>")); } void setup() { Serial.begin(9600); if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0); if (!ether.dhcpSetup()); ether.printIp("My Router IP: ", ether.myip); ether.staticSetup(myip); ether.printIp("My SET IP: ", ether.myip); for (int i = 2; i <= 5; i++) { pinMode(LedPins[i], OUTPUT); PinStatus[i] = false; } } void loop() { delay(1); word len = ether.packetReceive(); word pos = ether.packetLoop(len); if (pos) { bfill = ether.tcpOffset(); char *data = (char *) Ethernet::buffer + pos; if (strncmp("GET /", data, 5) != 0) { bfill.emit_p(http_Unauthorized); } else { data += 5; if (data[0] == ' ') { homePage(); for (int i = 2; i <= 5; i++) { digitalWrite(LedPins[i], PinStatus[i + 1]); } } // "14" = el número de caracteres de la cadena "?ArduinoPIN1=on " else if (strncmp("?ArduinoPIN1=on ", data, 16) == 0) { PinStatus[1] = true; bfill.emit_p(http_Found); } else if (strncmp("?ArduinoPIN2=on ", data, 16) == 0) { PinStatus[2] = true; bfill.emit_p(http_Found); } else if (strncmp("?ArduinoPIN3=on ", data, 16) == 0) { PinStatus[3] = true; bfill.emit_p(http_Found); } else if (strncmp("?ArduinoPIN4=on ", data, 16) == 0) { PinStatus[4] = true; bfill.emit_p(http_Found); } // "15" = el número de caracteres de la cadena "?ArduinoPIN1=off " else if (strncmp("?ArduinoPIN1=off ", data, 17) == 0) { PinStatus[1] = false; bfill.emit_p(http_Found); } else if (strncmp("?ArduinoPIN2=off ", data, 17) == 0) { PinStatus[2] = false; bfill.emit_p(http_Found); } else if (strncmp("?ArduinoPIN3=off ", data, 17) == 0) { PinStatus[3] = false; bfill.emit_p(http_Found); } else if (strncmp("?ArduinoPIN4=off ", data, 17) == 0) { PinStatus[4] = false; bfill.emit_p(http_Found); } else { bfill.emit_p(http_Unauthorized); } } ether.httpServerReply(bfill.position()); } }
Explicación del código para HanRun Ethernet module ENC28J60:
- byte Ethernet::buffer[1200]; hemos liberado memoria en el microcontrolador para el portapapeles. Cuando aumentamos los datos en la página Web, necesitamos aumentar el buffer para que no se produzcan «cuelgues»;
- los LEDs se encienden/apagan en función del número de caracteres de la cadena ArduinoPIN4=on o ArduinoPIN1=off.
Después de ensamblar el diagrama de cableado, se debe cargar la librería para el funcionamiento del módulo Ethernet LAN HanRun HR911105A. Las bibliotecas se utilizan para simplificar el código. Pueden ser controladores para equipos adicionales o funciones de uso frecuente. El IDE de Arduino ya dispone de un conjunto de librerías estándar de uso frecuente. Pero en nuestro caso necesitamos cargar una nueva librería EtherCard.h
Conclusión. La IP local de la placa Arduino está prescrita en el código. Todas las funciones básicas están comentadas en el sketch, por lo que no deberías tener problemas para configurar el programa. Ve a la dirección IP 192.168.1.55 en tu ordenador o teléfono – deberías ver una página como en la foto de arriba. Si la conexión de la ENC28J60 HanRun Ethernet Shield falla, debes comprobar la configuración del router Wi-Fi.

Deja una respuesta