Go Down

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

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