Select Page

Descripción

En este post vamos a explicar en lineas generales el funcionamiento del Modulo Ethernet, basado en el chip Enc28j60. Ademas de una introduccion a los protocolos con los que trabaja Empezando por el SPI:

enc28j60_ethernet_interface_module1

Protocolos de comunicación: SPI
SPI es un protocolo serial síncrono que se utiliza para comunicar un microcontrolador con otro y con periféricos a distancias cortas. Para hacer una conexion SPI siempre habrá un dispositivo maestro (usualmente un microcontrolador) que controlará uno o varios periféricos (esclavos), se utilizan por lo generar 3 lineas de conexión  y una de selección que son:* SO o MISO (Master In Slave Out). La linea que utiliza el esclavo para enviar datos al maestro
* SI o MOSI (Master Out Slave In). Datos del maestro al esclavo.
* SCK (Serial clock). Pulsos de reloj para sincronizar la comunicación
* CS o Select. Se usa por el master para habilitar o deshabilitar un determinado periféricoLos microcontroladores atmel incluyen las 4 lineas para usar protocolo SPI las cuales obviamente están presentes en los pines del arduino, para el arduino uno se deben usar: Pin digital 10 para CS, Pin digital 11 para SI, Pin digital 12 para SO y Pin digital 13 para SCK, en el caso del arduino mega se usaría los sig. pines: 50 (MISO), 51 (MOSI), 52 (SCK), and 53 (CS).tabla-usbLa alimentación del módulo puede  es a 3.3 los cuales son suministrados por el arduino
En las bibliotecas de Arduino ya encontramos una librería ethernet, el problema es que esta librería esta diseñada para operar con un el Ethernet Shield basdado en el chip WiZnet W5100, por lo que no es compatible. Mas abajo hablaremos de la libreria-

Caracteristicas Técnicas

• IEEE 802.3 compatible Ethernet controller
• Integrated MAC and 10BASE-T PHY
• Receiver and collision squelch circuit
• Supports one 10BASE-T port with automatic
polarity detection and correction
• Supports Full and Half-Duplex modes
• Programmable automatic retransmit on collision
• Programmable padding and CRC generation
• Programmable automatic rejection of erroneous
packets
• SPI™ Interface with speeds up to 10 Mb/s
• Buffer: 8-Kbyte transmit/receive packet dual port SRAM
• Two programmable LED outputs for LINK, TX,
RX, collision and full/half-duplex status
• Seven interrupt sources with two interrupt pins
• 25 MHz clock
• Clock out pin with programmable prescaler
• Operating voltage range of 3.14V to 3.45V
• TTL level inputs
• Temperature range: -40°C to +85°C Industrial,
0°C to +70°C Commercial (SSOP only)
• 28-pin SPDIP, SSOP, SOIC, QFN packages

Conexionado

En este caso vamos a hacer el ejemplo con un Arduino Uno. Si estas usando una placa distinta presta atencion a la ubicacion en los pines del protocolo SPI en los Arduinos.

ENC-table

Arduino_ENC28J60_web_server

Código de Programacion

Librería ENC28J60

 En las bibliotecas de Arduino ya encontramos una librería ethernet, el problema es que esta librería esta diseñada para operar con un el Ethernet Shield basdado en el chip WiZnet W5100, por lo que no es compatible. El módulo que usaremos está basado en un chip ENC28J60 de Microchip que interactúa con Arduino y le permite la comunicación de datos mediante un puerto Ethernet.
Se integra el controlador de la MAC address, un buffer de 8 KB de transmisión/recepción de de paquetes de doble puerto y una FIFO circular que se gestionan a nivel de hardware, además permite la programación de retransmisión de datos en caso de colisión. La librería se puede descargar desde la sig. lhttp://www.open-electronics.org/wp-content/uploads/2012/06/EtherCard.zip
Antes de iniciar la operación de nuestro módulo debemos llevara acabo la configuración de los parámetros para comunicación en la red ethernet, datos como:
Dirección IP
Máscara de red
Puerta de enlace
Tamaño del buffer de datos.

También es factible operar con una dirección IP Dinámica, con lo que sólo será necesario llamara a la función DHCP para solicitarla al gateway de la red.

 Las principales funciones incluidas en la librería son:
ether.begin : Crea un objeto para interactuar con el controlador
ether.packetReceive(); Devuelve la cantidad de paquetes pendientes de recibir que estanalmacenados en el buffer.
ether.packetLoop(len); Da entrada todos los paquetes almacenados en el buffer, len es la cantidad de paquetes que se van a recibir;

ether.httpServerReply(homePage()); Responde al cliente que realizo la petición, homePage es una variable que apunta a un string o cadena de texto con formato HTML con una respuesta válida para el cliente.

El siguiente programa controla el encendido y apagado de un led mediante una pagina web que se accede desde la direccion ip del modulo enc-28j60 conectado al arduino:
Como ultimo paso introducimos en la barra de direccion de nuestro navegador, la IP del modulo ethernet y podremos controlar nuestro dispositivo.

Links

Datasheet