Pages: 1 [2] 3 4   Go Down
Author Topic: Ethernet shield Question  (Read 2893 times)
0 Members and 1 Guest are viewing this topic.
Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 7
Posts: 2961
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

(Italy)
Offline Offline
Full Member
***
Karma: 2
Posts: 171
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ha gia' risposto a questa domanda:

Per quanto riguarda l'hw, possiedo un Arduino UNO, con shield ethernet che trovate rappresentata in questa immagine: http://arduino.cc/en/Guide/ArduinoEthernetShield

questa e' la board ufficiale, quindi wiznet, non a caso dice di usare lo sketch incluso in Ide, nell'ide non c'e' supporto ufficiale per l'ENC

mi associo alla domanda di lucadentella, ed azzardo che potrebbe essere guasto il router, visto che e' nuovo fattelo sostituire, male non fa
Ma dubito che possa trattarsi di un guasto, ho provato un convertitore USB/ETHERNET, è un piccolo dispositivo server video e tutto viene "visto" regolarmente; ci potrebbe essere qualche casistica di guasto in linea con questo tipo di problema?O forse un BUG nel firmware, visto che l'ho appena aggiornato?Non dimenticate che comunque lo switch router è collegato in cascata ad una di quelle porte maledette smiley-mad e funziona senza problemi.La cosa che mi fa arrabbiare è che lo shield, dovrebbe funzionare in maniera fluida, proprio come una qualsiasi periferica acquistata, non ci dovrebbero essere problemi di questo tipo, visto che per ora, tutto quello che ho collegato al mio modem, funziona senza problemi, quindi per logica, ci deve essere una differenza, abbastanza pesante tra un dispositivo ethernet acquistato e lo shield stesso, una qualche remota incompatibilità che ogni tanto si fa sentire.Purtroppo dovrei approfondire di più l' argomento, per capire cosa non piace al mio modem di "sto" shield.

Ciao
Logged

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 7
Posts: 2961
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

(Italy)
Offline Offline
Full Member
***
Karma: 2
Posts: 171
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

.....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
« Last Edit: February 05, 2012, 06:56:05 am by matrix77 » Logged

(Italy)
Offline Offline
Full Member
***
Karma: 2
Posts: 171
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Ciao
Logged

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao

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

lucadentella.it

napoli
Offline Offline
Full Member
***
Karma: 0
Posts: 167
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

(Italy)
Offline Offline
Full Member
***
Karma: 2
Posts: 171
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

(Italy)
Offline Offline
Full Member
***
Karma: 2
Posts: 171
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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" smiley-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):
http://tools.ietf.org/html/rfc1918

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...)
Logged

lucadentella.it

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 104
Posts: 6617
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Code:
#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
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 7
Posts: 2961
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

(Italy)
Offline Offline
Full Member
***
Karma: 2
Posts: 171
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Code:
#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
Salve Paolo,

domani proverò anche il codice da te postato smiley, 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
« Last Edit: February 05, 2012, 03:54:59 pm by matrix77 » Logged

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

mmm sembra tanto qualche problema di risoluzione ARP...

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

ping <ip-arduino>
arp -a

ti appare qualche voce nella arp table?
Logged

lucadentella.it

(Italy)
Offline Offline
Full Member
***
Karma: 2
Posts: 171
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

mmm sembra tanto qualche problema di risoluzione ARP...

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

ping <ip-arduino>
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 smiley-roll

Ciao
Logged

Pages: 1 [2] 3 4   Go Up
Jump to: