Páginas

lunes, 21 de enero de 2013

Módulo Ethernet Arduino



 

  

 

 

 

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.


Vamos a empezar por los basados en el ENC28J60 que he de decir que lo he utilizado y para proyectos pequeños cumple con su función pero que en proyectos más grandes me ha dado algunos problemas, ya que se volvía inestable y dejaba de responder. Pienso que se debía a la versión de la librería que estaba usando y espero que en las nuevas versiones se haya solucionado.





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í.  

16 comentarios:

  1. muy bueno y muy claro, realizas una gran labor explicativa.muchas gracias

    ResponderEliminar
  2. muy buen blog, una labor formidable explicativa, con muchos ejemplos y documentación clara.
    gracias y un saludo

    ResponderEliminar
  3. Muchas gracias Manuel, lo que espero es poder ayudar a los que empiezan.

    Un saludo.

    ResponderEliminar
  4. Muy bueno blog, Cuando te referias a que solo te funciono en proyectos pequenos porque tiene algunos problemas, ya pudiste resolverlos?

    ResponderEliminar
    Respuestas
    1. Hola, desgraciadamente es un problema de la librería no se si últimamente han sacado alguna actualización.

      Un saludo.

      Eliminar
  5. 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?

    Un saludo

    ResponderEliminar
    Respuestas
    1. 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.

      Un saludo.

      Eliminar
  6. Gracias por tu respuesta. ¿Sabes cómo quedaría la configuración para el Nano? ¿Bajo qué pines ha de ir?

    ResponderEliminar
    Respuestas
    1. No, con el nano no he probado nada de esto. Saludos

      Eliminar
  7. hola buenos dias soy un principiante
    por 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

    ResponderEliminar
    Respuestas
    1. Hola, si quieres dar tus primeros pasos con Arduino en mi blog puedes seguir algunos diseños muy básicos.

      Un saludo.

      Eliminar
  8. Una pregunta, esas librerias son unicamente para arduino??

    ResponderEliminar
  9. hola , he intentado bajar el ejemplo y me sale error.
    favor de cargar otra vez o mejor aun enviar no un enlace

    ResponderEliminar
    Respuestas
    1. Hola, he revisado los enlaces. Prueba ahora a ver si te funciona. Arriba a la derecha te baja SALTAR PUBLICIDAD

      Un saludo.

      Eliminar
  10. buen codigo gracias me ha ayudado mucho este ejemplo....

    ResponderEliminar