Go Down

Topic: ENC28J60 ethernet + App NetIO (iPhone) [SOUCIONADO A MEDIAS] (Read 1 time) previous topic - next topic

Lisergio

Apr 05, 2013, 06:19 pm Last Edit: Apr 10, 2013, 02:14 pm by Lisergio Reason: 1
Antes de nada, decir que ya he usado el buscador..  :smiley-roll:

Me acaba de llegar el modulo ethernet con chip ENC28J60, y como he podido comprobar, la librería ethernet.h no funciona, y he buscado y descargado la librería ethercard, que es la que debería de funcionar...

he cargado un código de ejemplo usando DHCP, y se conecta a mi red de forma correcta...

Ahora bien...
La app NetIO , usa la librería ethernet.h, asi que mi duda es, si hay posibilidad alguna, de modificar un sketch básico para hacerlo funcionar con esta otra librería (ethercard.h)...

Dejo un código de ejemplo: (extraído de otra web)


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

byte mac[] = { 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5 };
byte ip[] = { 192, 168, 1, 6 };

#define BUFFER 10
EthernetServer servidorArduino(3200);

int led = 3;
int pulsador = 4;

void setup(){
 Serial.begin(9600);
 Ethernet.begin(mac, ip);
 servidorArduino.begin();
 pinMode(led, OUTPUT);    
 pinMode(pulsador, INPUT);
}

void loop()
{
 int index = 0;
 char comando[BUFFER];

 EthernetClient clienteApp = servidorArduino.available();
 if (clienteApp) {
   if (clienteApp.connected()) {
         while (clienteApp.available()) {
         char caracter = clienteApp.read();
         if (caracter != '\n') {
           comando[index] = caracter;
           index++;
           if (index >= BUFFER) index = BUFFER -1;
           continue;
         }
       comando[index] = '\0';
     }

     if (strstr(comando, "holaArdu")) {
       clienteApp.println("done");
     }

     if (strstr(comando, "SLIDER")) {
       clienteApp.println("OK");
       analogWrite(led, atoi(&comando[7]) * 4);
     }

     if (strstr(comando, "BOTON")) {
       if (digitalRead(pulsador) == HIGH) {  
         clienteApp.println("ON");  
       } else {
         clienteApp.println("OFF");
       }
     }
   }
 }
}



Sergegsx

Mi ethernet 48j60 lo uso de posapapeles, pelee demasiado para hacerlo funcionar y acaque pidiendo uno compatible con las librerias x ebay.
Pero si que debe funcionar solo que esta mucho menos documentado y no es compatible directo con la libreria arduino.
Suerte

Heke

#2
Apr 05, 2013, 09:42 pm Last Edit: Apr 05, 2013, 09:45 pm by Heke Reason: 1
Pero SergeGsx

¿es que no viste el hilo que puse en su momento?

http://arduino.cc/forum/index.php?PHPSESSID=7d778f8ba8a3f2f0a3f8d98a322df06a&topic=106474.0

Que no hice nada simplemente copie el ejemplo de la web que cito en dicho post.

Y funcionaba perfecto, sigue el ejemplo y veras que no tienes problemas.

Mira como iba el mio con un puñetero diecimila:



Y aqui con la burrada de no haberle puesto un regulador de 3v3, cogiendo la corriente del diecimila:

CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

Lisergio

Como ya he dicho arriba, con los ejemplos me ha funcionado perfecto....
Pero lo que no consigo es adaptar el código de arriba , a esta librería...

como seleccionar el puerto de escucha...

EthernetServer servidorArduino(3200);

leer el mensaje que entra y guardarlo en un char...

if (clienteApp.connected()) {
          while (clienteApp.available()) {
          char caracter = clienteApp.read();
          if (caracter != '\n') {
            comando[index] = caracter;
            index++;
            if (index >= BUFFER) index = BUFFER -1;
            continue;
          }
        comando[index] = '\0';
      }

Enviar un mensaje para que lo lea la app

if (digitalRead(pulsador) == HIGH) {   
          clienteApp.println("ON"); 
        } else {
          clienteApp.println("OFF");

Lisergio

Cambiar el puerto de escucha ya lo he logrado!!!!
Al menos de forma un tanto peculiar... como no he conseguido hacerlo desde el propio código lo he hecho modificando el archivo ethercard.cpp...

casi al final del código están las siguientes lineas...

uint8_t EtherCard::mymac[6];  // my MAC address
uint8_t EtherCard::myip[4];   // my ip address
uint8_t EtherCard::mymask[4]; // my net mask
uint8_t EtherCard::gwip[4];   // gateway
uint8_t EtherCard::dhcpip[4]; // dhcp server
uint8_t EtherCard::dnsip[4];  // dns server
uint8_t EtherCard::hisip[4];  // dns result
uint16_t EtherCard::hisport = 80; // tcp port to browse to

en la ultima linea, cambiar el "80" por el puerto que queramos usar...

y alguna idea sobre como leer el mensaje que nos llega y guardarlo por ejemplo en un str???

gracias a todos y yo sigo con mi investigación....

Sergegsx

Heke te agradezco la informacion, tanto esta como la que en su dia me diste. Pero al final opte por tirar del shield oficial. Tenia varios oficiales y queria que todos fuesen compatibles con el codigo.
Thanks

Lisergio

Viendo todos los comentarios negativos de este adaptador de red... Acabo de comprar en ebay uno con chip w5100....
pero no me rindo, ....

lo haré funcionar con la app !!!

un saludo y recibiré la ayuda con los brazos abiertos...

Lisergio

Casi lo tengo!!!!

he conseguido controlar 5 lees con 5 botones en el iphone.... para ello he conseguido leer las tramas que se envian desde el iphone y se guardan en el buffer ....

Alguien sabría decirme como enviar un string desde la placa arduino??? (claro esta con la libreria ethercard.h)...
En cuanto solucione esto, si es que funciona.. pongo el código que he usado... si no funciona al menos funcionara en un sentido....

un saludo...

Go Up