jueves, 5 de julio de 2012

Uso del módulo ethernet ENC28J60 con Arduino : Parte 1

Hola, en esta ocación quiero compartir un tutorial para utilizar un módulo ENC28J60 que proporciona conectividad ethernet a cualquier microcontrolador, en este caso lo usaremos mediante un Arduino o sea un Atmega328

En el mercado encontraremos diferentes presentaciones de este módulo, algunas vienen en formato de Shield, yo consegui una tarjeta mas pequeña pero que se cablea facilmente al Arduino

El módulo que se uso para este tutorial es el siguiente:

Tambíen existe la version "shield":

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 módulo diferente, el WIZnet W5100, por lo que no es compatible, despues de probar varias opciones al fin encontre una que funcionó sin problemas y que se puede descargar desde la sig. liga:

* Actualización al 26/11/2016

La versión actualizada de la librería la encuentran en la siguiente liga:

https://github.com/jcw/ethercard/archive/master.zip


Bueno empezaremos cableando el módulo ethernet al Arduino, para esto usamos el siguiente diagrama:


Cabe mencionar que la comunicacion entre el módulo ethernet y el arduino se lleva acabo utilizando un protocolo que se llama SPI o Serial Peripheral Interface


SPI es un protocolo serial sincrono 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érico

Los 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).

La alimentación del módulo puede ser a 3.3 o 5V, yo usé ambos para las pruebas y no encontré ninguna diferencia así que lo deje puesto a 3.3V.


Así queda nuestro módulo cableado:



Después de cablear el módulo lo que sigue es instalar la librería, como estoy usando la versión de Windows, las rutas serán en ese formato, primero busco el archivo que descargué, el mio quedó guardado con el mismo nombre EtherCard.zip


A continuación descomprimo el archivo y envío la carpeta descomprimida al directorio de Arduino/libraries (o la ruta donde esté instalado el ide de arduino)




Después de este paso abrimos el IDE de arduino y en el menu de Ejemplos ya deben aparecer los ejemplos de la libreria EtherCard



Seleccionamos el ejemplo pingsStaticIP


En las variables myip y gwip colocamos primero la ip que querramos asignar al arduino (en mi caso 192.168.1.188) y después la ip de nuestra puerta de enlace o gateway, en méxico para las redes de infinitum y una gran mayoría de las redes domésticas este valor es el que se muestra (192.168.1.254), una vez hecho este pequeño cambio descargamos el script al arduino y abrimos el monitor serial donde vemos el arranque del script:


Si analizamos el script vemos que hay una rutina que obtiene via dns la direccion ip del dominio www.google.com y se queda enviándole pings, en el monitor vemos los tiempos de respuesta del servidor de google (Esta parte solo funcionará si estamos conectados a internet).

Si nosotros abrimos una ventana de comandos y hacemos ping a la dirección ip del arduino debemos ver una respuesta como la de abajo, en la pantalla del monitor serial tambíen podemos ver las solicitudes de ping enviadas por la pc y recibidas por el arduino


Si lograron llevar acabo con éxito todos los pasos felicidades! oficialmente acaban de darle conectividad de red a su arduino.

En la segunda parte del tutorial aprenderemos como convertir nuestro arduino en un servidor web para poder monitorear y controlar las salidas y entradas de la placa, hasta la próxima!

Con información tomada de: