Configurar una ethernet shield

Buenas crack

Bueno soy muy muy nuevo en el mundo de arduino. xD
en realidad hace 3 dias que me compre un kid ,, The arduino starter kit.. Me siento como un niño con una consola nueva.

Estado experimentando con leds , sensor tmp , servo ahora quiero llevar esto a la red bien

me pase por la tienda de componentes de mi ciudad y compre un sensor de temperatura nuevo ml35
y en el mostrador hacia una tarjeta de ethernet shield para arduino. sin pensar mucho la compre..

Ahora me doy cuenta que no es como la W5100 ..

aki mi tarjeta ...

bien lo primero que hice fue unirla a mi arduino UNO

conecte el arduino uno por el cable usb y le cargue el siguiente codigo

#include <SPI.h>
#include <Ethernet.h>

//Declaración de la direcciones MAC e IP. También del puerto 80
byte mac[]={0x00,0x22,0x48,0x9f,0xe2,0x3d}; //MAC
IPAddress ip(192,168,1,135); //IP
EthernetServer servidor(80);

int PIN_LED=8;
String readString=String(30);
String state=String(3);

void setup()
{
  Ethernet.begin(mac,ip); //Inicializamos con las direcciones asignadas
  servidor.begin();
  pinMode(PIN_LED,OUTPUT);
  digitalWrite(PIN_LED,HIGH);
  state="OFF";
}

void loop()
{
  EthernetClient cliente= servidor.available();
  
  if(cliente)
  {
    boolean lineaenblanco=true;
    while(cliente.connected())//Cliente conectado
    {
      if(cliente.available())
      {
        char c=cliente.read();
        if(readString.length()<30)//Leemos petición HTTP caracter a caracter
        {
          readString.concat(c); //Almacenar los caracteres en la variable readString
        }
        if(c=='\n' && lineaenblanco)//Si la petición HTTP ha finalizado
        {
          int LED = readString.indexOf("LED=");
          if(readString.substring(LED,LED+5)=="LED=T")
          {
            digitalWrite(PIN_LED,LOW);
            state="ON";
          } else if (readString.substring(LED,LED+5)=="LED=F")
          {
            digitalWrite(PIN_LED,HIGH);
            state="OFF";
          }
          
          
          //Cabecera HTTP estándar
          cliente.println("HTTP/1.1 200 OK");
          cliente.println("Content-Type: text/html");
          cliente.println();
          //Página Web en HTML
          cliente.println("<html>");
          cliente.println("<head>");
          cliente.println("<title>LAMPARA ON/OFF</title>");
          cliente.println("</head>");
          cliente.println("<body width=100% height=100%>");
          cliente.println("<center>");
          cliente.println("<h1>LAMPARA ON/OFF</h1>");
          cliente.print("

");
          cliente.print("Estado de la lampara: ");
          cliente.print(state);
          cliente.print("



");
          cliente.println("<input type=submit value=ON style=width:200px;height:75px onClick=location.href='./?LED=T\'>");
          cliente.println("<input type=submit value=OFF style=width:200px;height:75px onClick=location.href='./?LED=F\'>");
          cliente.println("</center>");
          cliente.println("</body>");
          cliente.println("</html>");
          cliente.stop();//Cierro conexión con el cliente
          readString="";
        }
      }
    }
  }
}

entre en mi router .. 192.168.1.1

y configure el dhcp

En la foto se aprecia como coloque esta IP 192.168.1.135

abri los puertos 80, 8080. tcp,udp

el siguiente paso fue conectar el "cable rj43 al router y a ethernet shield" y usb al placa arduino Uno
desde el firefox 192.168.1.135 :sob:

pero nada ..

también hice un barrido a la red
nmap 192.168.1.1/24
.................KAKA...................

no hay ningún servido ..

estoy viendo que esta tarjeta tiene un chip ENC28J60.

puede ser este mi problema ?
Alguien me puede echar una mano ??

Por lo que veo en las fotos, es un shield de la marca Velleman. Esto me lleva a aquí:

Si nos vamos a descargas, encontramos un ejemplo para descargar, comprimido en zip.

https://www.velleman.eu/downloads/files/downloads/ka04_sample_code.zip

Dentro de ese zip, hay un código de ejemplo, y una carpeta llamada "EtherCard", que es la librería que debes usar con esa placa.

La carpeta "EtherCard", cópiala en la carpeta "Arduino\libraries" dentro de "Mis documentos" de Windows, y así podrás usar el código de ejemplo.

Edito: he probado a instalar la librería y compilar el código y me da errores por todas partes...
Posible incompatibilidad con el IDE 1.6.0

pasate a ver esto que me parecio ver una solucion para vos ...saludos

http://forum.arduino.cc/index.php?topic=274675.0

Gracias por la ayuda :wink:

ayer me di por vencido con la placa KA04.. La librería EtherCard me petaba . yo no tuve pelotas a hacerla andar ..

me acerque a la tienda y le explique el caso .. que cuando compila el código me da fallo .. llegue al foro de la marca velleman .. explique el caso. a día de hoy no me respondieron .. por interne no hay tutoriales ni manuales de esta tarjeta solo puntos de venta ...

Ya que estaba comente que el problema. también era mio por no informarme que existen varias tarjetas ..y que lo que estaba comprando no era de arduino ..

El chico me la cambio por otra la original .. tarde 0,01 en ponerla andar la primera prueba fue ChatServer por el puerto 23 .

Telnet open 192.168.1.177 y mensaje Hello KItty :slight_smile: xD

en la imagen esta el código mencionado antes .. al principio del post . También se encendió el led pin 8 solo que los botones están al revés

La lección aprendida. mejor de la casa :wink: mas manuales mas soporte mas conocimiento .
Gracias nuevamente a los dos

de nada y siga participando .... Si no te es molestia, podrias armar un pequeño tuto de como lo hiciste?

de nada y siga participando .... Si no te es molestia, podrias armar un pequeño tuto de como lo hiciste?

Los pasos a seguir son muy simples

Lo primero es comprar la tarjeta de arduino ethernet shield "Controller: W5100"

pasamos a la imagen para ver un detalle importante ..

En el revés de la tarjeta muestra una pegatina que identifica la mac adres : 90:A2:DA:0F:CC:2F // en este caso //

bien el siguiente paso es configurar el router ..

En Linux en la consola ifconfig

En windows desde cmd ipconfig

Ahora podemos ver la puerta de enlace .. que normal mente es 192.168.1.1

Abrimos un navegado /Firefox/Microsof explorer /Chrome/etzz/ escribimos la puerta de enlace que nos dio la consola en este caso .. 192.168.1.1

pide usuario y contraseña ..

si no la sabes tienes que buscar información sobre el router ..pero casi seguro que la contraseña por defecto es..
usuario :1234 usuario : admin user: admin
pass:1234 Pass: admin pass: 1234

una vez dentro del router ..

hay que configurar el DHCP esto se suele encontrar en la configuración por el apartado de LAN..

en mi router hay un botón donde dice "add entries" le damos . Pide mac y ip la mac

mac: //de la tarjeta en mi caso : 90:A2:DA:0F:CC:2F
ip : // ip que le queremos asignar : 192.168.1.135 // puedes hacer un pin 192.168.1.135 para ver que no hay nada .. xD

Aplica los cambios al router . hay que abrir el puerto 80 que es el de servidor web ..

dentro del router hay un apartado donde dice NAT

una vez configurado le aplicamos los cambios y ya tienes el router configurado

tenemos que unir la tarjeta arduino uno con la ethernet shield esto es muy simple // no ser bestia
conecta el cabe usb : y carga este Sketch
configura el Sketch con tu mac y ip...

#include <SPI.h>
#include <Ethernet.h>

//Declaración de la direcciones MAC e IP. También del puerto 80
byte mac[]={0x90,0xA2,0xDA,0x0F,0xCC,0x2F}; //MAC
IPAddress ip(192,168,1,135); //IP
EthernetServer servidor(80);

int PIN_LED1=8;
String readString1=String(30);
String state1=String(3);
int PIN_LED2=9;
String state2=String(3);


void setup()
{
  Ethernet.begin(mac, ip); //Inicializamos con las direcciones asignadas
  servidor.begin();
  pinMode(PIN_LED1,OUTPUT);
  digitalWrite(PIN_LED1,HIGH);
  state1="OFF";
  pinMode(PIN_LED2,OUTPUT);
  digitalWrite(PIN_LED2,HIGH);
  state2="OFF";
  
}

void loop()
{
  EthernetClient cliente= servidor.available();
  
  if(cliente)
  {
    boolean lineaenblanco=true;
    while(cliente.connected())//Cliente conectado
    {
      if(cliente.available())
      {
        char c=cliente.read();
        if(readString1.length()<30)//Leemos petición HTTP caracter a caracter
        {
          readString1.concat(c); //Almacenar los caracteres en la variable readString
        
        }
        if(c=='\n' && lineaenblanco)//Si la petición HTTP ha finalizado
        {
          int LED1 = readString1.indexOf("LED1=");
          int LED2 = readString1.indexOf("LED=");
          if(readString1.substring(LED1,LED1+6)=="LED1=T")
          {
            digitalWrite(PIN_LED1,LOW);
            state1="ON";
          } else if (readString1.substring(LED1,LED1+6)=="LED1=F")
          {
            digitalWrite(PIN_LED1,HIGH);
            state1="OFF";
          }
          if(readString1.substring(LED2,LED2+5)=="LED=T")
          {
            digitalWrite(PIN_LED2,LOW);
            state2="ON";
          } else if (readString1.substring(LED2,LED2+5)=="LED=F")
          {
            digitalWrite(PIN_LED2,HIGH);
            state2="OFF";
          }  
          
          //Cabecera HTTP estándar
          cliente.println("HTTP/1.1 200 OK");
          cliente.println("Content-Type: text/html");
          cliente.println();        
          //Página Web en HTML
          cliente.println("<html>");
          cliente.println("<head>");
          cliente.println("<title>LAMPARA ON/OFF</title>");
          cliente.println("</head>");
          cliente.println("<body width=100% height=100%>");
          cliente.println("<center>");
          cliente.println("<h1>LAMPARA ON/OFF</h1>");
          cliente.print("

");
          cliente.print("Estado de la lampara: ");
          cliente.print(state1);
          cliente.print("



");
          cliente.println("<input type=submit value=ON style=width:200px;height:75px onClick=location.href='./?LED1=T\'>");
          cliente.println("<input type=submit value=OFF style=width:200px;height:75px onClick=location.href='./?LED1=F\'>");
          cliente.print("

");
          cliente.print("Estado de la lampara: ");
          cliente.print(state2);
          cliente.print("



");
          cliente.println("<input type=submit value=ON style=width:200px;height:75px onClick=location.href='./?LED=T\'>");
          cliente.println("<input type=submit value=OFF style=width:200px;height:75px onClick=location.href='./?LED=F\'>");
          cliente.print("

");
          cliente.println("</center>");
          cliente.println("</body>");
          cliente.println("</html>");
          cliente.stop();//Cierro conexión con el cliente
          readString1="";
        }
      }
    }
   }
  }

montar igual que en la imagen ..

una vez el montaje realizado y cargado el Sketch en tu arduino.
conectas el cable RJ43 en tu tarjeta ethernet sheild y al router .. // vigila por que tiene que ser este cable RJ43 ..
conecta el arduino uno al usb de un pc .. mi router tiene conexion de usb a si que lo conecto en el usb del router ..

abrimos un navegador /Firefox/Microsof explorer /Chrome/etzz y escribimos la dirección ip que le asignaste a la tarjeta ethernet :192.168.1.135

ahora ya puedes apagar los leds ;-)

Lo que te pedia resKte (o yo creo entender) que esto mismo lo copies y crees un nuevo hilo en Documentación con este titulo y quede ahi como un tutorial.

surbyte:
Lo que te pedia resKte (o yo creo entender) que esto mismo lo copies y crees un nuevo hilo en Documentación con este titulo y quede ahi como un tutorial.

Ok ya esta colgado :wink:

Excelente, gracias por aceptar la sugerencia!!

Muy buen tuto, gracias por colaborar con esta comunidad de lengua española .....

Hola, muy buenas tardes, estoy realizando un proyecto a traves del arduino ethernet shield, estoy tratando de mover 2 servomotores, pero como quiero guardar la posicion de esos servos necesito guardar la posicion en una variable y a la hora de subirlo a la tarjeta ethernet shield no funciona, como declaro para que esa variable la reconozca la tarjeta??? este es mi codigo:

#include <SPI.h> //libreria para comunicar con los dispositivos SPI como maestro
#include <Ethernet.h> //libreria para el arduino ethernet shield
#include <Servo.h>  // Libreria del servomotor 
#include <EEPROM.h> // libreria EEPROM

Servo servoX; //se crea el objeto del servo, es como mandarlo llamar X
Servo servoY; //objeto del servo Y

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 0, 60 }; // ip in lan
//byte gateway[] = { 192, 168, 15, 1 };                   // internet access via router
//byte subnet[] = { 255, 255, 255, 0 };                  //subnet mask
EthernetServer server(80);                             //server port
String readString; 

int posX = 0;    // variable entera para la posicion del servo en X
int posY = 0;    // variable entera para la posicion del servo en Y

int gradosX; //variable entera para mostrar los grados en el que se encuentra el servo
int gradosY;
char lect; //variable char para leer los caracteres 


//Inicio de void setup
void setup() 
{ 

servoX.attach(5,650,2500);  // pin de entrada del servo X
servoY.attach(6,650,2500);  //pin de entrada del servo Y

Ethernet.begin(mac, ip);
server.begin();

//enable serial data print 
 Serial.begin(9600); 
 Serial.println("server servo/pin 5 test 1.0"); // so I can keep track of what is loaded
 Serial.println("server servo/pin 6 test 1.0"); // so I can keep track of what is loaded

} 

//Inicia el void loop 
void loop() 
{ 
// Create a client connection
 EthernetClient client = server.available();
 if (client) {
    while (client.connected()) {
     if (client.available()) {
       char c = client.read();
      

       //read char by char HTTP request
       if (readString.length() < 100) {

         //store characters to string 
         readString += c; 
         //Serial.print(c);
       } 

       //if HTTP request has ended
       if (c == '\n') {

         ///////////////
         Serial.println(readString); //print to serial monitor for debuging 

         client.println("HTTP/1.1 200 OK"); //send new page
         client.println("Content-Type: text/html");
         client.println();

         client.println("<HTML>");
         client.println("<HEAD>");
         client.println("<TITLE>Arduino Servo WEB</TITLE>");
         client.println("</HEAD>");
         client.println("<BODY>");

         client.println("<H1>Link para controlar un servo</H1>");
         
         client.println("<a href=\"/?DER\"\">DERECHA</a>"); 
         client.println("<a href=\"/?IZQ\"\">IZQUIERDA</a>"); 

         client.println("<a href=\"/?ARR\"\">ARRIBA</a>"); 
         client.println("<a href=\"/?ABA\"\">ABAJO</a>"); 



         client.println("</BODY>");
         client.println("</HTML>");

         delay(1);
         //stopping client
         client.stop();



//Mover servo X
//if (pulsador_der == HIGH) // se pregunta si esta en alto el pulsador derecho, de ser asi cumple lo siguiente:
if(readString.indexOf("?DER") >0)//checks for on
{

//posX+=1;
servoX.write(0);  
posX=constrain(posX,0,180);    
delay(200);
} 
//if (pulsador_izq == HIGH) //se pregunta si esta en alto el pulsador izquierdo, de ser asi cumple lo siguiente:
if(readString.indexOf("?IZQ") >0)//checks for on
{
 
 //posX-=1;
 servoX.write(180);  
 posX=constrain(posX,0,180);
 delay(200);
} 
//mover servo Y

//if (pulsador_arr == HIGH) // se pregunta si esta en alto el pulsador derecho, de ser asi cumple lo siguiente:
if(readString.indexOf("?ARR") >0)//checks for on
{
 
//posY++;
servoY.write(0);
posY=constrain(posY,0,180);       
delay(100);
}

//if(pulsador_aba == HIGH) //se pregunta si esta en alto el pulsador izquierdo, de ser asi cumple lo siguiente:
if(readString.indexOf("?ABA") >0)//checks for on
{
 
  //posY--;
  servoY.write(180);
  posY=constrain(posY,0,180);     
 delay(100);
}

//clearing string for next read
         readString="";
       }
     }
   }
 }

//GUARDAR POSICIONES 
/*if (Serial.available()>0){
     lect = Serial.read(); //comunicacion serial para la lectura de la eeprom

  if(lect == 'A'){                //GUARDAR 1RA POSICION
    EEPROM.update(1, posX);    
    EEPROM.update(10, posY);   
    Serial.println("GUARDADO");
   

  }
 if(lect == 'B'){                //GUARDAR 2DA POSICION
    EEPROM.update(2, posX);
    EEPROM.update(9, posY);
    Serial.println("GUARDADO");


 }

if(lect == 'C'){                //GUARDAR 3RA POSICION
    EEPROM.update(3, posX);
    EEPROM.update(8, posY);
    Serial.println("GUARDADO"); 
     
    
} 
   
   while(lect == 'X'){               //REPRODUCIR POSICIONES 
         gradosX = EEPROM.read(1);
         gradosY = EEPROM.read(10);
         servoX.write(gradosX);
         servoY.write(gradosY);
         delay(3000);
         Serial.println("POSICION_1");
         Serial.println(gradosX);
         Serial.println(gradosY);

         
         gradosX = EEPROM.read(2);
         gradosY = EEPROM.read(9);
         servoX.write(gradosX);
         servoY.write(gradosY);
         delay(3000);
         Serial.println("POSICION_2");
         Serial.println(gradosX);
         Serial.println(gradosY);
         
         gradosX = EEPROM.read(3);
         gradosY = EEPROM.read(8);
         servoX.write(gradosX);
         servoY.write(gradosY);
         delay(3000);
         Serial.println("POSICION_3");
         Serial.println(gradosX);
         Serial.println(gradosY);
 }           
 
} */
}

Crea un nuevo hilo por favor y lee las normas del foro para que puedas usar las etiquetas que correspondan.
Es un tema que esta sin movimientos desde el mes de Marzo de este año.

Hola, necesito ayuda, trato de guardar los datos de temperatura capturados de un LM35 en una base de datos en mysql, alguien me podria decir como le puedo hacer, Gracias.

Si. Empieza leyendo las normas del foro y haz un hilo nuevo con tu problema. Este tema esta solucionado