Go Down

Topic: ethernet shield (Read 3610 times) previous topic - next topic

kuxi

hallo,

versuche mittlerweise seit 4 wochen ohne erfolg das ethernet shield zum laufen zu bringen:
- arduino duemilanove + original ethernet shield (wiz5100)
- webserver und webclient examples (ip, gateway, subnet an mein netzwerk angepasst)
- ich kann das board nicht mal anpingen
- mittlerweile neues shield ohne erfolg getestet
- diverse shield reset experimente aus dem forum ohne erfolg getestet

ich bin am ende und hab keine ahnung was ich noch alles herumexperimentieren könnte, aber vielleicht gib es ja von euch da draußen noch einen tip????  ;)

Webmeister

Wie hast du die Verbindung zu deinem Netzwerk gemacht?
Hast du DHCP im Netzwerk?
Kannst du Rechner in deinem Netz anpingen?
Wie rufst du dein Arduino-Board auf?

IP vermutlich fix gesetzt.

Zum Test mal ein eigenes Netz, nur Arduino und PC über Hub oder Switch verbinden und prüfen.


sth77

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.
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

kuxi

- 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??

df6ih

#4
Jan 31, 2011, 03:50 pm Last Edit: Jan 31, 2011, 03:51 pm by df6ih Reason: 1
Gibt es irgendwo eine Firewall ?

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

kuxi

nein, es gibt keine firewall.

Webmeister

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.

Kalli

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

kuxi

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??

volvodani

Steckt vielleicht noch eine SD Karte drinnen. Die könnte nämlich den SPI lahm legen wen sie nicht definitiv abgewählt wird
So ist das Leben:
Manchmal bis du das Denkmal, manchmal die Taube!

kuxi

nein, es steckt keine karte drinnen...

Webmeister

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

kuxi

#12
Feb 01, 2011, 11:42 am Last Edit: Feb 01, 2011, 11:49 am by kuxi Reason: 1
- 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:
Code: [Select]

#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(;;)
     ;
 }
}

Webmeister

Was erscheint im Serial Monitor wenn du den Sketch aufrufst?

Langsam gehen mir die Ideen aus?  ;)

kuxi

connecting...
connection failed

disconnecting.

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

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


Go Up