Startschwierigkeiten mit dem Ethernet Shield

Hallo,

ich habe so meine Startschwierigkeiten mit dem Ethernet-Shield (bezogen über Watterott.com).

Erstmal finde ich es merkwürdig, dass das Shield auf jeder Seite zwei Steckleisten-Pins mehr hat, als mein Arduino Uno Buchsen(nicht die SMD-Version).
Auf einer Seite musste ich die sogar wegen einem Kondensator auf dem Uno, der im Weg ist, wegbiegen.

So, dann hab ich erstmal das Shield aufgesteckt und versucht den Examples-Sketch Ethernet->WebClient raufzuladen. (Arduino IDE 1.0)
Das scheiterte mit dieser Meldung: avrdude: stk500_getsync(): not in sync: resp=0x00
Ohne aufgestecktes Shield gelang der Upload dann schließlich.

Dann habe ich das Shield wieder augesteckt, LAN- und USB-Kabel verbunden und den Serial-Monitor angeschmissen.

Dort stand nichts. (im Sketch ist bereits in der setup-funktion ein Serial.println)
Dann den Reset-Knopf auf dem Ethernet-Shield gedrückt, nichts aufm Serial-Monitor.
Beim drücken des Reset-Knopf auf dem Uno passiert immer noch nichts auf dem Serial-Monitor.

Die Mac-Adresse des Shields hab ich abgeändert im Sketch.
Der Router verteilt IP-Adressen automatisch.
Auch die LED's aufm Ethernet-Shield blinken. (RX, TX, Link)

Was mach ich hier bloß falsch?

Hier noch der Sketch:

/*
  Web client
 
 This sketch connects to a website (http://www.google.com)
 using an Arduino Wiznet Ethernet shield. 
 
 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13
 
 created 18 Dec 2009
 by David A. Mellis
 
 */

#include <SPI.h>
#include <Ethernet.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[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(173,194,33,104); // Google

// Initialize the Ethernet client library
// with the IP address and port of the server 
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;

void setup() {
  // start the serial library:
  Serial.begin(9600);
  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    for(;;)
      ;
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  if (client.connect(server, 80)) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
  } 
  else {
    // kf you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}

void loop()
{
  // if there are incoming bytes available 
  // from the server, read them and print them:
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    // do nothing forevermore:
    for(;;)
      ;
  }
}

Hallo,

ich habe zwar leider kein Ethernet-Shield, aber ein paar Dinge fallen mir trotzdem dazu ein:

  1. Geht denn Serial.println() überhaupt? Kannst du mal den ganzen anderen Code auskommentieren, um sicherzustellen, dass das auch wirklich funktioniert.

  2. Eine andere Möglichkeit wäre, dass der Aufruf

if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// no point in carrying on, so do nothing forevermore:
for(;:wink:
;
}

hängenbleibt, dann könnte nämlich die Ausgabe über Serial.println() gar nicht erscheinen.

  1. Stimmt denn die Initialisierung der Variable client? Müsste die nicht noch vor dem Aufruf client.connect() initialisiert werden?
    Aber das kann eigentlich nicht die Ursache sein, denn dann hätte vorher ja schon die Ausgabe von "connecting" erfolgen müssen

Ciao,

Rudi

Merkwürdig finde ich schon mal die zusätzlichen Pins. Kannst Du evtl. vom Shield und dem Uno ein Bild posten. Auch wenn es komisch klingt, aber ich würde erstmal die Hardware als Fehler ausschliessen.

Erstmal finde ich es merkwürdig, dass das Shield auf jeder Seite zwei Steckleisten-Pins mehr hat, als mein Arduino Uno Buchsen(nicht die SMD-Version).

Du hast scheinbar schon ein Shield der neusten Generation welches für den Einsatz mit Arduino Uno R3 ausgelegt ist. Mit der Rev. 3 des Uno wurden an 2 Stiftleisten jeweils 2 zusätzliche Pins hinzugefügt. Dies ist die Referenz für weitere Arduino-Boards und Shields.

Siehe dazu die Bilder des R3 auf der Arduino Hardware-Seite:
http://arduino.cc/en/Main/ArduinoBoardUno

Hallo,

ich hatte das Problem auch. Das Problem ist nicht die Hardware sondern "(Arduino IDE 1.0)". Die Ethernet - Bibliothek hat mehrere Fehler. Bei

if (Ethernet.begin(mac) == 0) {

blieb auch bei mir alles stehen. Deshalb hast du auch keine Ausgabe.

Nachdem ich mir für diese Bibliothek die aktuelle Version geholt habe, funktionieren alle Beispiele.

Bernd

Hi,

du hast recht Bernd, die Arduino 1.0 IDE ist das Problem!

Mit der alten 022er funktionierts!

Auch das Sketch-Uploaden während das Shield drauf ist funktioniert.

@Webmeister: Hab die Pins jetzt einfach abgeknipst^^

Danke für eure Hilfe!