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:
Gracias por tu aporte fue de gran ayuda para mi. Espero me puedas pasar como controlar la placa arduino con esta libreria, gracias mi correo es alltrips.stafe@gmail.com
ResponderEliminarMuy agradecido. Añadir como incentivo q por 11-12€ lo compramos en tiendas ebay de españa.Busquen por ENC28J60.
ResponderEliminarsoy de argentino muchas gracias me diste una mano barbara!!!!!
ResponderEliminarexcelente tutorial!!!!!!
un abrazo y felices fiestas!
pd: donde esta la segunda parte del tutorial.
Gracias e igualmente saludos al cono sur!!, la segunda parte del tutorial esta aca http://tecnotinker.blogspot.mx/2012_12_01_archive.html
Eliminarbuenas, yo tengo el arduino mega 2560 donde cambio la asignación de los pines??
ResponderEliminarNo es necesario hacer cambios en el codigo ya que la biblioteca se ajusta automaticamente dependiendo de la configuracion del ide, si usas un mega solo asegurate de usar los pines adecuados, en el articulo indico cuales son (50, 51, 52 y 53)
ResponderEliminarHola, excelente aporte! Tengo problemas al correr el programa, en el monitor serial se queda en [pings] sin hacer más nada, tampcoresponde ping, ya revise las conexiones y están OK. Usaba antes este módulo ethernet con PIC sin problemas, me llama la atencion que los pines reset y WOL queden desconectados.
ResponderEliminarAlguna sugerencia?
Saludos.-
Hmm no me das mucha informacion, cual es la ip de la computadora donde estas haciendo las pruebas?, si la configuracion de red es correcta otra opcion posible es que la libreria no sea 100% compatible con el módulo que estás usando, a mi me paso eso al principio y tuve que probar 2 o 3 librerias diferentes hasta que encontre esta que viene en el tutorial
EliminarEl GW de la red en la que estoy trabajando es 192.168.0.1/24 y conecto el módulo a un switch común y corriente. El tema es que en el serial monitor se queda [pings] y no pasa nada de nada.
EliminarEl módulo es igual al de la foto tuya (en mi caso marca LC Studio)y ya lo utilicé antes sin ningún problema. ¿Tendrás los links de las otras librerías para probar?
Saludos.-
Bueno encontré algunas cosas que están mal en la librería para esta configuración: el archivo enc28j60.cpp tiene los pines asignados para el caso de arduino uno y mega, pero en el caso del mega para el pin SS indica 2, lo corregí a 53, y además configuré el pin como salida y lo puse en alto.
EliminarAhora los led's del módulo en el conector ethernet están uno encendido y el otro parpadea, pero en el monitor serial sigue apareciendo solamente [pings] y no responde.
a mi me pasa exactamente lo mismo que a luciano B, aunque sin querer invertí la polaridad en el modulo ethernet (cosa de hacer las cosas con prisa) y no se si me cargué el módulo, porque cuando lo enchufo en el router, la luz del puerto en este, aparece naranja en vez de amarilla.
Eliminargracias por el tutorial
Hola luciano, tambien estoy teniendo problemas con las librerias, en que parte modificaste el Pin SS en el archivo enc28j60?
Eliminarya he conseguido que me funcione con otras librerías que me he descargado EtherShield_Arduino_v1.zip.
ResponderEliminargracias de nuevo
David, puedes poner que pines conectas al Mega ?
EliminarGracias a ti David, puedes compartir la liga de la libreria para futuras referencias?
ResponderEliminarHola que tal.
ResponderEliminarInteresante post, pero no me funciona en mi Arduino DUE, genera errores cuando compilo. Alguna idea o sugerencia.
Hola hasta hoy no he tenido oportunidad de probarlo en el DUE pero alguien comento que la libreria tiene un error de asignacion de pines en el mega, se me ocurre que tal vez esto pudiera originar el problema, tampoco estoy muy enterado si las librerias de los avr (mega y uno) se pueden utilizar directamente en los DUE, quiza quieras mirar alguna otra libreria
EliminarTengo un problema con esta librería. Tengo una placa arduino mega, los pines se que son los 50, 51,52,53.
ResponderEliminarMi problema es al compilar el código, me da un error:
Ethernet no fue declarado y me señala en rojo, la línea de
byte Ethernet::buffer[700];
Alguien tiene idea de como solucionar este problema....
Probá con un ide de Arduino anterior, esa librería, leí por ahí, que no funciona con los ides nuevos, a menos que se le hagan modificaciones.
EliminarSds.
Saludos;
ResponderEliminarLos pines para leonardo cambian?, es que tego una placa leonardo y ya conecte todo como lo indicas, pero no consigo que me funcione.
Excelente la explicación, ojala vengan muchos tutoriales como este, saludos
ResponderEliminarExcelente el Articulo!, debo aclarar que en mi caso, con arduino uno, tuve que cambiar el parámetro del serial a 9600 (estando desde el ejemplo en 57600.. o algo asi), y que solo funciona conectandolo directamente al router. No pude arreglarmelas solo para establecer una comunicacion directa con la pc sin router de por medio. Si alguien tuvo el ingenio, estaria agradecido por la respuesta. Saludos!!!
ResponderEliminarProbá con un cable cruzado, norma A de una lado, norma B del otro, suerte!.
EliminarMi problema es que solo se queda en [getStaticIP] y no hace nada, lo conecto directamente al router y se queda igual, mi router utiliza la ip 192.168.1.1 por lo mismo esa direccion pongo como gateway y no hace nada, luego de un rato y en ciertas ocasiones me dice Failed to access Ethernet controller
ResponderEliminarServer: 74.125.79.99
se puede modificar el el pin del SS, no lo veo en el codigo. Arme una placa que esta cableado diferente y no funciona
ResponderEliminarPuedes poner el diagrama o imagenes de tu placa?
EliminarNo se si a estas alturas, alguien me va responder sobre las dudas, pero allá va.
ResponderEliminarNo lo consigo, me pasa como a Joao, se queda con getstaticip. Utilizo la página de google.es que me responde al ping con el md me da 216,58,210,131, conexión directa al router y pongo correctamente una dirección vacía de mi red y el Gateway. Lo que no veo es donde poner la clave web del router ??? No hace falta ???
Que puedo estar haciendo mal ???
gracias y un saludo
Exactamente a que te refieres con clave web, si es conexion mediante cable ethernet no requieres clave
EliminarHola, Estoy trabajando con la shiled 28j60 v1.1 y arduino uno, y envío datos a una base de datos, pero al enviarlos se envían desfasados, es decir envío dos datos, dato1 primero y luego dato2 y entonces luego de enviar dato2 ahi solamente se envía dato1. Creo que puede ser el Buffer, por si alguien quiere realizar el proyecto y hacer comentarios esta en: http://www.tweaking4all.nl/hardware/arduino/arduino-ethernet-data-push/
ResponderEliminarHola, espero alguien pueda ayudarme, tengo el problema de que modulo no logra hacer ping a ninguna dirección IP, Privada o Local, sin embargo al hacer el ping desde CMD hacia el modulo, si obtengo respuesta, considere de incio alguna restriccion de Firewall en el modem pero se encuentra deshabilitado, alguna sugerencia para este probema?
ResponderEliminarPodrías probar conectarlo directamente a la PC, también asegúrate que estén en el mismo segmento de la red, ej : Arduino 192.168.0.2 y pc 192.168.0.3.
EliminarEn Windows 7 tenés que habilitar el icmp en el Firewall o deshabilitarlo para hacer la prueba, en mi caso funcionó con cable directo no cruzado, pero probá ambos, suerte!.
Hola, yo lo tengo funcionando un rato largo , más de una hora y de repente ya no responde a los ping el ENC28J60, teniendo alimentado el Arduino 1 por usb, será que la librería falla?.
ResponderEliminartengo una duda, no conosco la mac, como podria obtenerla?
ResponderEliminarToma una MAC DE cualquier dispositivo, solo asegurate de que sea valida, saludos, por ejemplo una tarjeta de red que tengas o un celular que ya no ocupes, otra cosa, asegurate que esa misma mac no se repita en en tu red local, tiene que ser unica, es decir vas a clonar la mac, saludos.
EliminarToma una MAC de una tarjeta de red Zarco66 o bien busca en google direcciones mac, ya que este módulo al parecer no cuenta con una mac propia, yo tome una de un celular viejito.
ResponderEliminarHola, buenísimo el tutorial. Quisiera saber si se puede acceder y manejar la placa arduino UNO con el módulo ethernet ENC28J60 desde JAVA. Estoy diseñando un sistema web pero no quiero conectar el servidor por COM3 al arduino. Quiero manejarlo por red. Saludos y gracias.
ResponderEliminarBuenas,
ResponderEliminarMe gustaría saber que diferencias hay entre la ethernet shield de Arduino con el W5100 y está que usas para este proyecto. Que beneficios tiene esta sobre la de W5100?
Un saludo.
En su momento el modulo enc28j60 era mas economico, actualmente ya no hay tanta diferencia en costos y el w5100 tiene la ventaja de estar soportado por la libreria ethernet que viene con arduino
ResponderEliminarbuenos dias ingeniero y muy buen tutorial te cuento que tenia uno y lo arrumbe pensando que no me serviria y pues ya lo tengo trabajando lo probe con mi ip local y bien;lo probe con la ip publica y abri el puerto de mi router y ok;mi duda comienza cuando cambia mi ip publica ya no puedo conectarme a mi arduino por que logico ya cambio mi ip publica por ser dinamica ahora pues me cree una cuenta en no-ip pero ahora no logro conectarme mi pregunta es si tengo que tener encendida una computadora con el ejecutable DUC que me bajo de la misma pagina para que me este redireccionando mi ip o hay alguna forma de que se redireccione tan solo con tener mi arduino conectado.
ResponderEliminarGracias Ing.
Normalmente los modems tienen la opcion de configurar el servicio de dns dinamico, revisa las opciones de configuracion del tuyo
EliminarSaludos, La IDE de Arduino no me permite subir el codigo al micro, me arroja el sig error:
ResponderEliminarC:\Users\Jesús Eduardo\Documents\Arduino\libraries\EtherCard/EtherCard.h:167:15: note: no known conversion for argument 1 from 'const char*' to 'int*'
Se encontraron múltiples librerías para "EtherCard.h"
Usado: C:\Users\Jesús Eduardo\Documents\Arduino\libraries\EtherCard
No usado: C:\Users\Jesús Eduardo\Documents\Arduino\libraries\ethercard-master
exit status 1
no matching function for call to 'EtherCard::dnsLookup(const char*)'
Que estoy haciendo mal?
Me pasa lo mismo que a ti
EliminarHolaa buenas trades a todos estoy con un proyectito que me estas dando dolores de cabezaaa. Necesito interconectar un arduino UNO, un Molulo Lan, Un modulo RFID, Un modulo RELE y un modulo Sensor de paso de corriente y mediante un modulo LAN enviar y recibir los datos de estos modulos. ALGUIEN QUE PUEDA TIRARME UNA SOGAAAAAAAAAA UN SALVAVIDAAAAASS
ResponderEliminarExactamente que necesitas?
EliminarBuenas,
ResponderEliminarMi proyecto es algo un poco raro, creo yo, ¿se podría conectar este módulo a un esp8266, de manera que se conecte a ethernet si esta cableado o a wifi si no lo está?, por cuestiones de tamaño, no me puedo permitir usar otras shields más grandes en el proyecto.
Muchas gracias
Hola al descargar la libreria no me sale el ejemplo que planteaste me podes dar una mano?
ResponderEliminar