ethernet shield

Ich habe auch das originale Ethernetshield, da klappten sämtliche Sketche problemlos nach Anpassung der IP etc.. Wenn das Problem mit neuem Shield reproduzierbar ist, scheint es doch irgendwie an der Konfiguration zu liegen.

  • shield (x.y.z.88) hängt am router (x.y.z.1)
  • dhcp: ja, habe es aber auch ohne versucht
  • meinen rechner (x.y.z.9) kann ich anpingen
  • Ethernet.begin(mac, ip, gateway, subnet); (subnet:255.255.255.0)
  • auch wenn ich nur rechner und shield verbinde (switch, cross over) geht nichts

wenn ich mir die leds am shield so ansehe scheint alles zu passen:
-100m und fulld leuchten immer

  • link und rx blinken
  • was mir auffällt ist das tx nur dann blinkt wenn im netzwerk etwas geändert wird, wie z.b. ändern der ip addresse meines rechners, ???
    ist das normal??

Gibt es irgendwo eine Firewall ?

Meistens im Router ... http://ip mit der eingesetzten IP sollte beantwortet werden, wenn Arduino-shield den Status 200 sendet

nein, es gibt keine firewall.

Das ist ja eine ganz normale Konfiguration.

Das Shield sollte beim Aufruf im Browser über IP aufrufbar sein.

Fixe IP/DHCP:
standardmässig wird in den Beispielen mit einer fixen IP gearbeitet. Für DHCP muss die entsprechende Bibliothek vorhanden sein. Für die ersten Schritte empfehle ich aber die Standardkonfiguration mit fixer IP.

Wie bereits gesagt, würde ich dies mal in einem separaten Netz testen. Wenn du mit 2 Shields getestet hat, scheint es eher am Netzwerk zu liegen.
Eventuell mal Kabel austauschen oder Arduino und PC am Router umstecken.

Hallo,
es gibt wohl zwei Versionen vom ETH-Shield. Ich verwende die Version 5 und hatte bisher keine Probleme. Nur, einmal hatte ich eine SD Karte drin stecken, da hatte ich auch Probleme.

Gruss Kalli

also ich habe das ganze nochmals getestet:

  • an 2 verschiedenen routern
  • nur shield und rechner im lan
  • mit wireshark aufgezeichnet
  • webserver / webclient example aufs board geladen

ergebnis: das shield scheint während der gesamten aufzeichnungen nicht auf, aus welchen grund auch immer... ???

habe das board ohne shield mit diversen sensoren getestet, funktioniert alles, d.h. board sollte in ordnung sein, oder???
nur das shield macht irgendwie nicht das was es soll.

welche tests könnte ich noch durchführen??

Steckt vielleicht noch eine SD Karte drinnen. Die könnte nämlich den SPI lahm legen wen sie nicht definitiv abgewählt wird

nein, es steckt keine karte drinnen...

Da das Arduino-Board funktioniert und bereits 2 verschiedene Ethernet Shields verwendet wurden, kann es eigentlich nicht an der Arduino-Hardware liegen. Ich vermute hier eher ein Netzwerkproblem.

Ich würde, wie bereits mehrfach erwähnt, ein eigenes Netzwerk zum Test aufbauen. PC und Arduino über Hub oder Switch verbinden.

Wenn ich bisher Probleme mit den Ethernet Shields hatte, nutze ich immer den Webclient Sketch verwendet. Falls der Zugriff auf die Google Website erfolgreich war, kann man von einer korrekten Netzwerkverbindung ausgehen.

Zwei Dinge noch:

  1. Ab IDE Version 0018 muss mit der Ethernet-Library zusätzlich noch die SPI-Library eingefügt werden.
    #include <SPI.h>

  2. Versuch mal mit dem ARP-Befehl zu prüfen, welche Clients im Netz sichtbar sind
    http://www.its05.de/computerwissen-computerhilfe/pc-netzwerk/netzwerk_diagnoseprogramme_bef/arp_-_protokoll.html

  • ich arbeite mit der ide version 022
  • ich habe gestern das ganze (nur laptop + arduino im lan) mit 2 verschiedenen routern gestestet und das ganze mit wireshark aufgezeichnet, während der gesamten aufzeichnung (reseten des boards, lan kabel ab und anstecken, etc.) scheint die ip des boards nicht auf....

hier der code:

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

byte mac[] = {  0x90, 0xA2, 0xDA, 0x00, 0x2B, 0xC4 };
byte ip[] = { 192,168,1,88 };
byte gateway[] = { 192,168,1,1 };
byte subnet[] = { 255,255,255,0 };
byte server[] = { 74,125,87,99 }; // Google

Client client(server, 80);

void setup() {
  Ethernet.begin(mac, ip, gateway, subnet);
  Serial.begin(9600);
  delay(1000);
  Serial.println("connecting...");

  if (client.connect()) {
    Serial.println("connected");
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
  } 
  else {
    Serial.println("connection failed");
  }
}

void loop()
{
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    for(;;)
      ;
  }
}

Was erscheint im Serial Monitor wenn du den Sketch aufrufst?

Langsam gehen mir die Ideen aus? :wink:

connecting...
connection failed

disconnecting.

wobei connect() in dieser while schleife den rückgabewert auf 0 setzt, hab das ganze mal durchgetestet:
Client.cpp

while (status() != SnSR::ESTABLISHED) {
    delay(1);
    if (status() == SnSR::CLOSED) {
      _sock = MAX_SOCK_NUM;
      return 0;
    }
  }

Mach mal aus

 if (client.connect())

ein:

Client client = server.available();
if (client)
{.....

// Edit : Klammer zuviel ist nun weg

available() ist in der server klasse zu finden und hat keinen übergabeparameter (server ip), daher wird das nicht funktionieren.

Nun.

Was willst du mit der Server IP wenn du auf dem Server bist ? Du musst in solchen Dingen zwischen Client und Server unterscheiden, logischerweise. Du meldest einmal an, mit Mac, IP usw. und ab da ist der Arduino der Server. Ist er es nicht, muckst er nicht !

Der weiter vorne gepostete Client Sketch ist in Ordnung.

@kuxi
Lies mal die Einstellungsdaten aus dem W5100 zurück. Damit sichergestellt ist, dass die grundlegende Kommunikation mit dem Chip funktioniert.

#include <SPI.h>
#include <../Ethernet/utility/w5100.h>
#include <Ethernet.h>

byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[]  = { 192,168,1,177 };

void setup()
{
  Serial.begin(9600);

  Ethernet.begin(mac, ip);
  // W5100.setIPAddress(ip);

  byte ip2[4] = { 0,0,0,0 };
  W5100.getIPAddress(ip2);

  Serial.println(ip2[0], HEX);
  Serial.println(ip2[1], HEX);
  Serial.println(ip2[2], HEX);
  Serial.println(ip2[3], HEX);
}

void loop()
{
}

danke für diesen tipp!!

  • duemilanove: die kommunikation mit dem chip funktioniert nicht! es wird beim einen shield 0.0.0.0 und beim anderen (nkc) 2.0.0.2 zurückgegeben

  • hab mittlerweile ein uno board: die kommunikation funktioniert beim nkc ethernet shield wiz812nj und es passt auch die ip und daher funktionieren auch die beispiele! jedoch funktioniert die kommunikation mit dem originalen ethernet shield hier auch nicht.

wenigstens funktioniert jetzt ein shield. :slight_smile: würde aber jedoch noch immer gerne wissen wieso die kommunikation bei den anderen kombinationen nicht funktioniert??

Prüfe mal die Pins des W5100, meistens sind Lötbrücken zwischen den Massepins. Bei einem Ethernet-Shield hatten wir jedoch auch schon mal eine Brücke zwischen einem Datenpin und Masse.
Anbei ein Bild der Platine.

Hi,
chek den Router mal ganz genau, versuch, das er ner best. mac-adresse ne best. ip gibt, und dann gib bei deinem Arduino nur mal die mac. Adresse an