Módulo Ethernet
Poder conectar sensores,
reles, etc … al Arduino es muy interesante pero para poder consultar todo esto
desde una interface sencilla y a distancia es fundamental poder servir todos
estos datos a través de una web.
Para esto necesitamos
conectarlo a una red y como no, necesitaremos un interface Ethernet. Los módulos
Ethernet para Arduino son uno de los componentes más interesantes con los que
podemos trabajar.
En el mercado existen
básicamente de 2 tipos. Los basados en el chip ENC28J60 y W5100. Cada uno tiene
sus ventajas. Los módulos basados en el ENC28J60 son más económicos y pequeños.
Permitiendo de una forma barata poder montar un servidor web. Como
contrapartida decir que no están soportado por Arduino de forma estándar aunque
cada vez hay más librerías y mejor terminadas.
Los módulos basados en el
W5100 son más grandes y con un coste económico mayor, aunque cada vez más se
están abaratando. Lo bueno que tienen estos módulos es que son más sencillos
de utilizar ya que vienen para montar directamente sobre el Arduino y están
soportados de manera estándar.
Lo primero que observamos es
que tenemos 10 pins y 7 hay que conectarlos al Arduino.
Módulo Ethernet
|
Arduino
|
Arduino Mega
|
VCC
|
3,3V
|
3,3V
|
GND
|
GND
|
GND
|
CS
|
10
|
53
|
SO
|
12
|
51
|
SCK
|
13
|
52
|
SI
|
11
|
50
|
RESET
|
RESET
|
RESET
|
Para poder utilizar este
módulo necesitamos utilizar 2 librerías:
etherShield.h Bajar Librería
ether_28j60.h Bajar Librería
Tienes que bajarlas y
descomprimirlas en el directorio del IDE -> libraries
En el fichero: directorio IDE
\libraries\etherShield\ enc28j60.c
Tienes que cambiar si lo vas
a conectar a un Arduino Mega o a cualquier otro. Por defecto viene para
conectarlo a un Arduino no Mega.
Para Arduino Mega:
//#define
ENC28J60_CONTROL_CS 53
//#define SPI_MOSI 51
//#define SPI_MISO 50
//#define SPI_SCK 52
Para los demás Arduinos:
#define
ENC28J60_CONTROL_CS 10
#define SPI_MOSI 11
#define SPI_MISO 12
#define SPI_SCK 13
Como estas librerías se hicieron para versiones antiguas de IDE, tenemos 2 opciones. Utilizar un IDE antiguo por ejemplo el 22 o bien modificar 2 ficheros:
En el fichero Directorio IDE\libraries\etherShield\enc28j60.c
Sustituir la línea:
#include "WConstants.h"
por:
#include "Arduino.h"
Sustituir la línea:
#include "WProgram.h"
por:
#include "Arduino.h"
Una vez hecho esto podemos cargar un ejemplo como este:
// Modulo Ethernet ENC28J60 // http://arubia45.blogspot.com.es/ // Librerias necesarias #include "etherShield.h" #include "ETHER_28J60.h" // Le asignamos una máscara de red única. static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24}; // Le damos una IP dentro del rango de nuestra red static uint8_t ip[4] = {192, 168, 1, 15}; // Por último definimos un puerto para la web, el 80 es el de por defecto. static uint16_t port = 80; ETHER_28J60 ethernet; void setup() { ethernet.setup(mac, ip, port); } void loop() { if (ethernet.serviceRequest()) { ethernet.print("<H>Hola Mundo</H>"); ethernet.respond(); } delay(100); }
Bajar Ejemplo
Una vez que tengamos subido el sketch de ejemplo podemos irnos al navegador y ponemos en la barra de navegación la IP.
Un módulo como este se puede comprar por unos 3€, por ejemplo en eBay: Comprar eBay
El desarrollo de las librerías para este chip parece parado desde hace 1 año aproximadamente, si encuentro alguna otra librería la publicaré aquí.
muy bueno y muy claro, realizas una gran labor explicativa.muchas gracias
ResponderEliminarmuy buen blog, una labor formidable explicativa, con muchos ejemplos y documentación clara.
ResponderEliminargracias y un saludo
Muchas gracias Manuel, lo que espero es poder ayudar a los que empiezan.
ResponderEliminarUn saludo.
Muy bueno blog, Cuando te referias a que solo te funciono en proyectos pequenos porque tiene algunos problemas, ya pudiste resolverlos?
ResponderEliminarHola, desgraciadamente es un problema de la librería no se si últimamente han sacado alguna actualización.
EliminarUn saludo.
Buenas, muchas gracias por tu blog... Oye, ¿Por qué se indica que han de ser esos pines? ¿No se pueden configurar? ¿Y con el Nano?
ResponderEliminarUn saludo
Hola, en algunos casos los pines tienen que ser esos porque el Arduino tiene ciertas funcionalidades por unos determinados pines y otros se podrían cambiar pero tendrías que cambiar también la librería.
EliminarUn saludo.
Gracias por tu respuesta. ¿Sabes cómo quedaría la configuración para el Nano? ¿Bajo qué pines ha de ir?
ResponderEliminarNo, con el nano no he probado nada de esto. Saludos
Eliminarhola buenos dias soy un principiante
ResponderEliminarpor fin di con un lugar para encontrar estas benditas !!!!!! librerias
tengo algunos ejemplos muy basicos que funciona en un NANO
pero no tengo conocimiento de los comandos ni que hace cada uno
existe algun manual o sitio para aprender un poco mas
no logro entender ni si quiera un comando
gracias
Hola, si quieres dar tus primeros pasos con Arduino en mi blog puedes seguir algunos diseños muy básicos.
EliminarUn saludo.
Una pregunta, esas librerias son unicamente para arduino??
ResponderEliminarHola, sí sólo para Arduino.
ResponderEliminarhola , he intentado bajar el ejemplo y me sale error.
ResponderEliminarfavor de cargar otra vez o mejor aun enviar no un enlace
Hola, he revisado los enlaces. Prueba ahora a ver si te funciona. Arriba a la derecha te baja SALTAR PUBLICIDAD
EliminarUn saludo.
buen codigo gracias me ha ayudado mucho este ejemplo....
ResponderEliminar