Problem configurazione DHCP ethernet shield

Salve ragazzi,

ho cercato sul forum nei vari post e in rete una soluzione al mio problema, ma senza successo.
Utilizzando l ethertnet shield di arduino con qualsiasi sketch di esempio ottengo sempre "Failed to configure Ethernet using DHCP"
L' ide è l 1.01, la linea è fastweb ed ho un router d-link.
non riesco a venirne a capo.
:frowning:
Grazie

Il router è configurato per l'assegnazione degli ip dinamici? Hai attivato il Server DHCP del router?

Ti rimando a questo topic simile --> http://arduino.cc/forum/index.php/topic,90196.0.html
Cerca anche "Fastweb" sul forum, ci sono topic che permettono di configurare anche il loro router.

PaoloP:
Il router è configurato per l'assegnazione degli ip dinamici? Hai attivato il Server DHCP del router?

Ti rimando a questo topic simile --> http://arduino.cc/forum/index.php/topic,90196.0.html
Cerca anche "Fastweb" sul forum, ci sono topic che permettono di configurare anche il loro router.

Intanto ti ringrazio per l'interessamento e l'aiuto.
Il router non è di fastweb ma in d-link ed è attivo sia il dhcp che l'assegnazione auto degli IP.
Ho anche controllato il post al link che hai indicato ma non ho risolto, ho utilizzato lo sketch postato in quella discussione , ma mi da sempre Failed to configure Ethernet using DHCP
:frowning:

Ho scoperto che im modello dello shieldha il seguente processore "enc28j60 processor"
Ho scaricato la libreria EtherCard da GitHub - njh/EtherCard: EtherCard is an IPv4 driver for the ENC28J60 chip, compatible with Arduino IDE, l'ho installata e ho provato gli sketch ma ho ancora il solito problema .

Lo sketch è il seguente:

// Ping a remote server, also uses DHCP and DNS.
// 2011-06-12 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php

#include <EtherCard.h>

// ethernet interface mac address, must be unique on the LAN
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

byte Ethernet::buffer[700];
static uint32_t timer;

// called when a ping comes in (replies to it are automatic)
static void gotPinged (byte* ptr) {
  ether.printIp(">>> ping from: ", ptr);
}

void setup () {
  Serial.begin(9600);
  Serial.println("\n[pings]");
  
  if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
    Serial.println( "Failed to access Ethernet controller");
  if (!ether.dhcpSetup())
    Serial.println("DHCP failed");

  ether.printIp("IP:  ", ether.myip);
  ether.printIp("GW:  ", ether.gwip);

#if 1
  // use DNS to locate the IP address we want to ping
  if (!ether.dnsLookup(PSTR("www.google.com")))
    Serial.println("DNS failed");
#else
  ether.parseIp(ether.hisip, "74.125.77.99");
#endif
  ether.printIp("SRV: ", ether.hisip);
    
  // call this to report others pinging us
  ether.registerPingCallback(gotPinged);
  
  timer = -9999999; // start timing out right away
  Serial.println();
}

void loop () {
  word len = ether.packetReceive(); // go receive new packets
  word pos = ether.packetLoop(len); // respond to incoming pings
  
  // report whenever a reply to our outgoing ping comes back
  if (len > 0 && ether.packetLoopIcmpCheckReply(ether.hisip)) {
    Serial.print("  ");
    Serial.print((micros() - timer) * 0.001, 3);
    Serial.println(" ms");
  }
  
  // ping a remote server once every few seconds
  if (micros() - timer >= 5000000) {
    ether.printIp("Pinging: ", ether.hisip);
    timer = micros();
    ether.clientIcmpRequest(ether.hisip);
  }
}

Ho avuto una serie di problemi:

1)nel codice originale usa come baudrate 57600 , ma con questo valore il serial monitor visualizza caratteri "random".
Ho sostituito il valore con 9600 (l'unico a funzionare)

2)La maggiorparte delle volte(una sola volta non è successo quanto sto per spiegare)i lserial monitor si ferma alla scritta Ping.

3)L'unica volta in cui è andato oltre alla scritta ping ,sul serial monitor è stato visualizzato
Failed to access Ethernet controller
e tutti i valori a 0.0.0.0 ovviamente.

Per la Enc28j60 ci sono altri esperti qui sul forum.
Fai una ricerca sul forum ci sono molti post su quella scheda.

Se ti da' come errore "Failed to access Ethernet controller" e' perche' il Pin Cs ( Chip Select ) e' diverso da quello preimpostato nella libreria. Quindi non ti trova la shield

Ora non ricordo qual'e' il pin di default, ma in genere sono solo due, il pin 8 o 10

Modifica la riga del setup in modo da assegnargli il valore

if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0)
oppure
if (ether.begin(sizeof Ethernet::buffer, mymac, 8 ) == 0)