Ethernet shield Question

...per curiosità, che modem router è? (marca / modello)

BrainBooster:
.....che potrebbe essere per reagire così male ad un livello così basso?
MTU? (troppe ritrasmissioni o troppa frammentazione)
Porte hub non switching sul router e cavo dritto ?(nessuna autonegoziazione sull'uplink)
Porte antiche a 10mbit sul router con mancata/fallata autonegoziazione sulla velocità di comunicazione?.
sarei curioso di capire anch'io a che livello è l'inghippo...

Salve a anche a te e grazie per il tuo intevento,

Ti posso solo dire che l'indirizzo "pingato" in realtà mi dava come risultato "indirizzo non raggiungibile", quando lo shield veniva collegato direttamente al modem, a differenza dalla classica situazione, dove non sia ha nessuna risposta, da un indirizzo "pingato" e non assolutamente trovato in rete.
Un ultima cosa che può forse interessare e che i moduli ad onde convogliate che ho provato, andavano spesso in crash, con lo shield collegato e dovevo spesso resettarli.

Ciao

BrainBooster:
...per curiosità, che modem router è? (marca / modello)

netgear n300

Ciao

ciao

ma quando colleghi i cavi si accende la luce verde? Io ho un netgear 800equalcosa e funziona tranquillamente...

scusate ma avete notato che nel firmware il gateway e 192.168.0.1 mentre lo standard dei modem italiani ha impostato il gw 192.168.1.1

lucadentella:
ciao

ma quando colleghi i cavi si accende la luce verde? Io ho un netgear 800equalcosa e funziona tranquillamente...

Ciao, si funziona e sembra comunicare, visto che anche i led di stato dello shield lampeggiano, simultaneamente con quelli del modem.

Ciao

relinquished:
scusate ma avete notato che nel firmware il gateway e 192.168.0.1 mentre lo standard dei modem italiani ha impostato il gw 192.168.1.1

Si giusta osservazione ed infatti, ho tolto il dhcp e ho impostato la nostra numerazione con x.x.1.0., ma con gli stessi problemi.

Ciao

relinquished:
scusate ma avete notato che nel firmware il gateway e 192.168.0.1 mentre lo standard dei modem italiani ha impostato il gw 192.168.1.1

giusto per una precisazione: non esiste uno "standard dei modem italiani" :wink:
gli indirizzi 192.168.x.x sono all'interno del range di IP riservati per le LAN (ovvero nessun dispositivo internet avrà mai tali indirizzi):

questo significa che puoi scegliere tranquillamente una qualsiasi sottorete all'interno di tale range per la tua rete domestica senza problemi... o addirittura un'altra rete riservata (10.0.0.0/8...)

Ciao,
potresti fare questa prova?

Dovresti riabilitare il DHCP del router, compilare lo sketch qui sotto con l'IDE 1.0. Lanciandolo con l'Arduino collegato direttamente al router e aprendo il serial monitor dovresti vedere una serie di dati tra cui l'indirizzo ip, il gateway. (nella versione 1.0 dell'IDE è stato implementato il supporto del DHCP)
Lo sketch è quello riguardante il server NTP da me modificato per inviare altri dati sulla seriale. Una specie di piccolo debug.

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

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = {  
  0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA };

unsigned int localPort = 8888;      // local port to listen for UDP packets

IPAddress timeServer(192, 43, 244, 18); // time.nist.gov NTP server

const int NTP_PACKET_SIZE= 48; // NTP time stamp is in the first 48 bytes of the message

byte packetBuffer[ NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets 

// A UDP instance to let us send and receive packets over UDP
EthernetUDP Udp;

void setup() 
{
  Serial.begin(9600);
  Serial.println("Arduino start!"); 
  // start Ethernet
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    for(;;)
      ;
  }
  else
  {
    Serial.println("Ethernet configured using DHCP");
    Serial.print("Local IP: ");
    Serial.println(Ethernet.localIP());
    Serial.print("SubnetMask: ");
    Serial.println(Ethernet.subnetMask());
    Serial.print("Gateway: ");
    Serial.println(Ethernet.gatewayIP()); 
    Serial.print("DNS Server: ");
    Serial.println(Ethernet.dnsServerIP());
  }
  if (Udp.begin(localPort) == 0) {
    Serial.println("No UDP sockets available");
    // no point in carrying on, so do nothing forevermore:
    for(;;)
      ;
  }  
  else
  {
    Serial.println("UDP sockets ON");
  }
}

void loop()
{
  Serial.println("Send Packet");      
  sendNTPpacket(timeServer); // send an NTP packet to a time server

    // wait to see if a reply is available
  delay(1000);  
  if ( Udp.parsePacket() ) {  
    // We've received a packet, read the data from it
    Udp.read(packetBuffer,NTP_PACKET_SIZE);  // read the packet into the buffer

    //the timestamp starts at byte 40 of the received packet and is four bytes,
    // or two words, long. First, esxtract the two words:

    unsigned long highWord = word(packetBuffer[40], packetBuffer[41]);
    unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]);  
    // combine the four bytes (two words) into a long integer
    // this is NTP time (seconds since Jan 1 1900):
    unsigned long secsSince1900 = highWord << 16 | lowWord;  
    Serial.print("Seconds since Jan 1 1900 = " );
    Serial.println(secsSince1900);               

    // now convert NTP time into everyday time:
    Serial.print("Unix time = ");
    // Unix time starts on Jan 1 1970. In seconds, that's 2208988800:
    const unsigned long seventyYears = 2208988800UL;     
    // subtract seventy years:
    unsigned long epoch = secsSince1900 - seventyYears;  
    // print Unix time:
    Serial.println(epoch);                               


    // print the hour, minute and second:
    Serial.print("The UTC time is ");       // UTC is the time at Greenwich Meridian (GMT)
    Serial.print((epoch  % 86400L) / 3600); // print the hour (86400 equals secs per day)
    Serial.print(':');  
    if ( ((epoch % 3600) / 60) < 10 ) {
      // In the first 10 minutes of each hour, we'll want a leading '0'
      Serial.print('0');
    }
    Serial.print((epoch  % 3600) / 60); // print the minute (3600 equals secs per minute)
    Serial.print(':'); 
    if ( (epoch % 60) < 10 ) {
      // In the first 10 seconds of each minute, we'll want a leading '0'
      Serial.print('0');
    }
    Serial.println(epoch %60); // print the second
  }
  // wait ten seconds before asking for the time again
  delay(10000); 
}

// send an NTP request to the time server at the given address 
unsigned long sendNTPpacket(IPAddress& address)
{
  // set all bytes in the buffer to 0
  memset(packetBuffer, 0, NTP_PACKET_SIZE); 
  // Initialize values needed to form NTP request
  // (see URL above for details on the packets)
  packetBuffer[0] = 0b11100011;   // LI, Version, Mode
  packetBuffer[1] = 0;     // Stratum, or type of clock
  packetBuffer[2] = 6;     // Polling Interval
  packetBuffer[3] = 0xEC;  // Peer Clock Precision
  // 8 bytes of zero for Root Delay & Root Dispersion
  packetBuffer[12]  = 49; 
  packetBuffer[13]  = 0x4E;
  packetBuffer[14]  = 49;
  packetBuffer[15]  = 52;

  // all NTP fields have been given values, now
  // you can send a packet requesting a timestamp: 		   
  Udp.beginPacket(address, 123); //NTP requests are to port 123
  Udp.write(packetBuffer,NTP_PACKET_SIZE);
  Udp.endPacket(); 
}

Se funziona, prova poi a scollegare Arduino, ad inserire l'altro switch in cascata e riprovare... e poi anche con i PowerLan.
Ho anche io una Ethernet Shield e ogni tanto fa i capricci.

Paolo.
p.s. ho la UNO R3 e la Ethernet Shield R3 uso l'IDE 1.0

...il router non dovrebbe avere nessun problema a parlarsi direttamente con lo shield

PaoloP:
Ciao,
potresti fare questa prova?

Dovresti riabilitare il DHCP del router, compilare lo sketch qui sotto con l'IDE 1.0. Lanciandolo con l'Arduino collegato direttamente al router e aprendo il serial monitor dovresti vedere una serie di dati tra cui l'indirizzo ip, il gateway. (nella versione 1.0 dell'IDE è stato implementato il supporto del DHCP)
Lo sketch è quello riguardante il server NTP da me modificato per inviare altri dati sulla seriale. Una specie di piccolo debug.

#include <SPI.h>         

#include <Ethernet.h>
#include <EthernetUdp.h>

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = {  
 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA };

unsigned int localPort = 8888;      // local port to listen for UDP packets

IPAddress timeServer(192, 43, 244, 18); // time.nist.gov NTP server

const int NTP_PACKET_SIZE= 48; // NTP time stamp is in the first 48 bytes of the message

byte packetBuffer[ NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets

// A UDP instance to let us send and receive packets over UDP
EthernetUDP Udp;

void setup()
{
 Serial.begin(9600);
 Serial.println("Arduino start!");
 // start Ethernet
 if (Ethernet.begin(mac) == 0) {
   Serial.println("Failed to configure Ethernet using DHCP");
   // no point in carrying on, so do nothing forevermore:
   for(;:wink:
     ;
 }
 else
 {
   Serial.println("Ethernet configured using DHCP");
   Serial.print("Local IP: ");
   Serial.println(Ethernet.localIP());
   Serial.print("SubnetMask: ");
   Serial.println(Ethernet.subnetMask());
   Serial.print("Gateway: ");
   Serial.println(Ethernet.gatewayIP());
   Serial.print("DNS Server: ");
   Serial.println(Ethernet.dnsServerIP());
 }
 if (Udp.begin(localPort) == 0) {
   Serial.println("No UDP sockets available");
   // no point in carrying on, so do nothing forevermore:
   for(;:wink:
     ;
 }  
 else
 {
   Serial.println("UDP sockets ON");
 }
}

void loop()
{
 Serial.println("Send Packet");      
 sendNTPpacket(timeServer); // send an NTP packet to a time server

// wait to see if a reply is available
 delay(1000);  
 if ( Udp.parsePacket() ) {  
   // We've received a packet, read the data from it
   Udp.read(packetBuffer,NTP_PACKET_SIZE);  // read the packet into the buffer

//the timestamp starts at byte 40 of the received packet and is four bytes,
   // or two words, long. First, esxtract the two words:

unsigned long highWord = word(packetBuffer[40], packetBuffer[41]);
   unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]);  
   // combine the four bytes (two words) into a long integer
   // this is NTP time (seconds since Jan 1 1900):
   unsigned long secsSince1900 = highWord << 16 | lowWord;  
   Serial.print("Seconds since Jan 1 1900 = " );
   Serial.println(secsSince1900);

// now convert NTP time into everyday time:
   Serial.print("Unix time = ");
   // Unix time starts on Jan 1 1970. In seconds, that's 2208988800:
   const unsigned long seventyYears = 2208988800UL;    
   // subtract seventy years:
   unsigned long epoch = secsSince1900 - seventyYears;  
   // print Unix time:
   Serial.println(epoch);

// print the hour, minute and second:
   Serial.print("The UTC time is ");       // UTC is the time at Greenwich Meridian (GMT)
   Serial.print((epoch  % 86400L) / 3600); // print the hour (86400 equals secs per day)
   Serial.print(':');  
   if ( ((epoch % 3600) / 60) < 10 ) {
     // In the first 10 minutes of each hour, we'll want a leading '0'
     Serial.print('0');
   }
   Serial.print((epoch  % 3600) / 60); // print the minute (3600 equals secs per minute)
   Serial.print(':');
   if ( (epoch % 60) < 10 ) {
     // In the first 10 seconds of each minute, we'll want a leading '0'
     Serial.print('0');
   }
   Serial.println(epoch %60); // print the second
 }
 // wait ten seconds before asking for the time again
 delay(10000);
}

// send an NTP request to the time server at the given address
unsigned long sendNTPpacket(IPAddress& address)
{
 // set all bytes in the buffer to 0
 memset(packetBuffer, 0, NTP_PACKET_SIZE);
 // Initialize values needed to form NTP request
 // (see URL above for details on the packets)
 packetBuffer[0] = 0b11100011;   // LI, Version, Mode
 packetBuffer[1] = 0;     // Stratum, or type of clock
 packetBuffer[2] = 6;     // Polling Interval
 packetBuffer[3] = 0xEC;  // Peer Clock Precision
 // 8 bytes of zero for Root Delay & Root Dispersion
 packetBuffer[12]  = 49;
 packetBuffer[13]  = 0x4E;
 packetBuffer[14]  = 49;
 packetBuffer[15]  = 52;

// all NTP fields have been given values, now
 // you can send a packet requesting a timestamp:  
 Udp.beginPacket(address, 123); //NTP requests are to port 123
 Udp.write(packetBuffer,NTP_PACKET_SIZE);
 Udp.endPacket();
}




Se funziona, prova poi a scollegare Arduino, ad inserire l'altro switch in cascata e riprovare... e poi anche con i PowerLan.
Ho anche io una Ethernet Shield e ogni tanto fa i capricci.

Paolo.
p.s. ho la UNO R3 e la Ethernet Shield R3 uso l'IDE 1.0

Salve Paolo,

domani proverò anche il codice da te postato :), nel frattempo ho fatto un altro esperimento che consiste nello scollegare il cavo ethernet dalllo switch/router, in cascata al modem router d' acceso e ho collegato lo shield direttamente al modem router, notando con un certo stupore che l' ip del modulo shield, questa volta viene raggiunto, salvo che non si spenga e riaccenda il modem, o si resetti Arduino.

Ciao e grazie per il tuo intervento

mmm sembra tanto qualche problema di risoluzione ARP...

se colleghi direttamente Arduino (spento) al router, lo accendi e dal pc fai

ping
arp -a

ti appare qualche voce nella arp table?

lucadentella:
mmm sembra tanto qualche problema di risoluzione ARP...

se colleghi direttamente Arduino (spento) al router, lo accendi e dal pc fai

ping
arp -a

ti appare qualche voce nella arp table?

Ciao Luca,

No, zero, solo una piccola cosa, ma importante è che l'unico segno di vita, rimane che pingando l' IP risulta "irrangiungibile", a differenza di quando il ping, non riesce a raggiungere un indirizzo ip che come risultato è uno zero bello tondo, questa è l'unica cosa che ti posso dire :roll_eyes:

Ciao

Ciao

veramente strano... ma se colleghi qualcos'altro al router funziona? Che so due PC connessi in rete locale?

Per adesso ho provato con dispositivi tipo convertitore USB/ETHERNET, oppure con un server video, sempre moduli configurabili, con indirizzi ip statici e vengono visti senza problemi; mi sono collegato anche con il portatile e anche in quel caso nessun problema.

Adesso ho riprovato con "arp -a" e funziona solo con switch collegato in cascata, visualizzandomi il mac della scheda, se poi collego lo shield al modem, l'arp è impossibile da trovare e la risposta del ping è "host non raggiungibile".

Se stacco lo switch, in cascata dopo che quest'ultimo è stato mappato dal modem e inserisco al suo posto lo shield, mi viene visto, ma non devo spegnere niente, altrimenti è come se si smemorizzasse qualcosa nel modem e a quel punto dovrei "fregarlo", reinserendo lo switch, per poi toglierlo a "caldo" e così via...... da non credere eheh :roll_eyes:

Ciao

sembra che per qualche motivo lo stack Ethernet non piaccia al tuo router... prova a cambiare il mac address che hai assegnato ad Arduino e vediamo...
Se metti una arp statica su PC digitando

arp -s

funziona?

Ma dai log del router non vedi nulla di strano?

lucadentella:
sembra che per qualche motivo lo stack Ethernet non piaccia al tuo router... prova a cambiare il mac address che hai assegnato ad Arduino e vediamo...
Se metti una arp statica su PC digitando

arp -s

funziona?

Ciao Luca, niente da fare: "aggiunta alla voce arp non riuscita"

Questa cosa è un po' irritante, perchè significa che il chip d'interfacciamento ethernet dello shield, non garantisce il 100% di compatibilità coi

modem router, dal momento che svariati dispositivi connessi al mio modem, hanno funzionato, senza nessun problema.

Mi piacerebbe sapere a questo punto, quale alternativa si potrebbe scegliere, per avere un interfacciamento sicuro, allo stesso livello dei

prodotti venduti "home consumer".

BrainBooster:
Ma dai log del router non vedi nulla di strano?

Salve Brain,

no, purtroppo è come se non esistesse lo shield collegato, ma ribadisco che la spia della LAN è accesa e lampeggia in concomitanza dello

shield stesso.

La cosa che non mi riesco a spiegare è del perchè, se inserisco in cascata lo switch, il mio modem lo "mappa", stacco lo

switch, collego lo shield al suo posto e da questo momento in poi, l'ip, risulta raggiungibile, salvo reset, di Arduino, o spegnimenti e

riaccensioni del modem, altrimenti si "smemorizza"questa ipotetica "mappatura" e addio indirizzo.... :0

Ciao

PaoloP:
Ciao,
potresti fare questa prova?

Dovresti riabilitare il DHCP del router, compilare lo sketch qui sotto con l'IDE 1.0. Lanciandolo con l'Arduino collegato direttamente al router e aprendo il serial monitor dovresti vedere una serie di dati tra cui l'indirizzo ip, il gateway. (nella versione 1.0 dell'IDE è stato implementato il supporto del DHCP)
Lo sketch è quello riguardante il server NTP da me modificato per inviare altri dati sulla seriale. Una specie di piccolo debug.

#include <SPI.h>         

#include <Ethernet.h>
#include <EthernetUdp.h>

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = {  
 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA };

unsigned int localPort = 8888;      // local port to listen for UDP packets

IPAddress timeServer(192, 43, 244, 18); // time.nist.gov NTP server

const int NTP_PACKET_SIZE= 48; // NTP time stamp is in the first 48 bytes of the message

byte packetBuffer[ NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets

// A UDP instance to let us send and receive packets over UDP
EthernetUDP Udp;

void setup()
{
 Serial.begin(9600);
 Serial.println("Arduino start!");
 // start Ethernet
 if (Ethernet.begin(mac) == 0) {
   Serial.println("Failed to configure Ethernet using DHCP");
   // no point in carrying on, so do nothing forevermore:
   for(;:wink:
     ;
 }
 else
 {
   Serial.println("Ethernet configured using DHCP");
   Serial.print("Local IP: ");
   Serial.println(Ethernet.localIP());
   Serial.print("SubnetMask: ");
   Serial.println(Ethernet.subnetMask());
   Serial.print("Gateway: ");
   Serial.println(Ethernet.gatewayIP());
   Serial.print("DNS Server: ");
   Serial.println(Ethernet.dnsServerIP());
 }
 if (Udp.begin(localPort) == 0) {
   Serial.println("No UDP sockets available");
   // no point in carrying on, so do nothing forevermore:
   for(;:wink:
     ;
 }  
 else
 {
   Serial.println("UDP sockets ON");
 }
}

void loop()
{
 Serial.println("Send Packet");      
 sendNTPpacket(timeServer); // send an NTP packet to a time server

// wait to see if a reply is available
 delay(1000);  
 if ( Udp.parsePacket() ) {  
   // We've received a packet, read the data from it
   Udp.read(packetBuffer,NTP_PACKET_SIZE);  // read the packet into the buffer

//the timestamp starts at byte 40 of the received packet and is four bytes,
   // or two words, long. First, esxtract the two words:

unsigned long highWord = word(packetBuffer[40], packetBuffer[41]);
   unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]);  
   // combine the four bytes (two words) into a long integer
   // this is NTP time (seconds since Jan 1 1900):
   unsigned long secsSince1900 = highWord << 16 | lowWord;  
   Serial.print("Seconds since Jan 1 1900 = " );
   Serial.println(secsSince1900);

// now convert NTP time into everyday time:
   Serial.print("Unix time = ");
   // Unix time starts on Jan 1 1970. In seconds, that's 2208988800:
   const unsigned long seventyYears = 2208988800UL;    
   // subtract seventy years:
   unsigned long epoch = secsSince1900 - seventyYears;  
   // print Unix time:
   Serial.println(epoch);

// print the hour, minute and second:
   Serial.print("The UTC time is ");       // UTC is the time at Greenwich Meridian (GMT)
   Serial.print((epoch  % 86400L) / 3600); // print the hour (86400 equals secs per day)
   Serial.print(':');  
   if ( ((epoch % 3600) / 60) < 10 ) {
     // In the first 10 minutes of each hour, we'll want a leading '0'
     Serial.print('0');
   }
   Serial.print((epoch  % 3600) / 60); // print the minute (3600 equals secs per minute)
   Serial.print(':');
   if ( (epoch % 60) < 10 ) {
     // In the first 10 seconds of each minute, we'll want a leading '0'
     Serial.print('0');
   }
   Serial.println(epoch %60); // print the second
 }
 // wait ten seconds before asking for the time again
 delay(10000);
}

// send an NTP request to the time server at the given address
unsigned long sendNTPpacket(IPAddress& address)
{
 // set all bytes in the buffer to 0
 memset(packetBuffer, 0, NTP_PACKET_SIZE);
 // Initialize values needed to form NTP request
 // (see URL above for details on the packets)
 packetBuffer[0] = 0b11100011;   // LI, Version, Mode
 packetBuffer[1] = 0;     // Stratum, or type of clock
 packetBuffer[2] = 6;     // Polling Interval
 packetBuffer[3] = 0xEC;  // Peer Clock Precision
 // 8 bytes of zero for Root Delay & Root Dispersion
 packetBuffer[12]  = 49;
 packetBuffer[13]  = 0x4E;
 packetBuffer[14]  = 49;
 packetBuffer[15]  = 52;

// all NTP fields have been given values, now
 // you can send a packet requesting a timestamp:  
 Udp.beginPacket(address, 123); //NTP requests are to port 123
 Udp.write(packetBuffer,NTP_PACKET_SIZE);
 Udp.endPacket();
}




Se funziona, prova poi a scollegare Arduino, ad inserire l'altro switch in cascata e riprovare... e poi anche con i PowerLan.
Ho anche io una Ethernet Shield e ogni tanto fa i capricci.

Paolo.
p.s. ho la UNO R3 e la Ethernet Shield R3 uso l'IDE 1.0

Salve Paolo e grazie per il tuo intervento...

Ho collegato direttamente lo shield al modem router e una volta caricato il tuo sketch in Arduino, ho potuto constatare che tramite serial monitor, si visualizza l'ip assegnato e una serie di send a ciclo infinito; ogni pacchetto trasmesso, viene evidenziato dal lampeggio dello shield e dalle spie di stato LAN del modem.Poi ho anche riprovato con lo switch in cascata collegandoci lo shield, ma sembra non funzionare.
A questo punto, il cerchio si stringe un po', o almeno credo, ma non riesco personalmente, a circoscrivere il problema.

Ciao e grazie ancora

matrix77:
Ho collegato direttamente lo shield al modem router e una volta caricato il tuo sketch in Arduino, ho potuto constatare che tramite serial monitor, si visualizza l'ip assegnato e una serie di send a ciclo infinito; ogni pacchetto trasmesso, viene evidenziato dal lampeggio dello shield e dalle spie di stato LAN del modem.Poi ho anche riprovato con lo switch in cascata collegandoci lo shield, ma sembra non funzionare.
A questo punto, il cerchio si stringe un po', o almeno credo, ma non riesco personalmente, a circoscrivere il problema.

Ciao e grazie ancora

Lo sketch permette ad Arduino di richiedere al router un indirizzo IP tramite DHCP. Se lo hai ottenuto allora il router ha reagito ad una richiesta della scheda assegnando al'indirizzo MAC il primo indirizzo IP disponibile. Inoltre gli passa anche altri parametri come il gateway predefinito, in questo caso lo stesso indirizzo del router e la maschera di sottorete.
Inoltre se hai potuto visualizzare il tempo ricevuto del server NTP funziona anche il routing dei pacchetti trasmessi e ricevuti. Quindi il tuo router fa il router.
Collegando direttamente l'Arduino al router, nelle pagine web interne del router dovresti vedere elencato il MAC e l'IP dato all'Arduino.
Hai provato a richiamare le pagine del router dopo aver lanciato lo sketch?