Pages: 1 [2] 3 4   Go Down
Author Topic: neue Ethernet Shields mit eigenartigen Verhalten  (Read 5066 times)
0 Members and 1 Guest are viewing this topic.
Germany
Offline Offline
Full Member
***
Karma: 6
Posts: 111
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo, könnt ihr das bestätigen ?
http://www.hobbyist.co.nz/?q=taxonomy/term/2
Hier wird darüber berichtet, dass es angeblich bei allen Ethernet-Shields Timing-Probleme mit dem RESET gibt. Abhilfe entweder durch Kondensator, oder durch Programmierung eines zusätzlichen Ports - anders soll dieses Problem nicht behoben werden können ?!?

Das Problem besteht/bestand nur bei den ersten Ethernet-Shields und bei einigen SparkFun Ablegern. Daher wurde bei späteren Revisionen ein zusätzlicher Rest-IC hinzugefügt.
(Bei den Eth-Shields mit microSD-Sockel ist der Fehler bereits behoben.)

Alle Bauteile sind von dem "China"-Board identisch.
Auch wenn die Bauteilbezeichnungen auf den Komponenten richtig sind, können sie trotzdem ohne Funktion sein.
http://www.sparkfun.com/news/350

Gruß
Andreas
Logged

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

@Andreas
dann fällt ja zumindest das Reset-Problem unter den Tisch. Sicherlich muss was auf den Bausteinen draufsteht, nicht absolut drin sein (diese Dinger wurden angeblich in der 20. Woche 2012 gefertigt).
Wie ich jedoch erkenne, scheint niemand eine praktikable Lösung oder Ansatz zu haben. Wir versuchen die "Schuld" dem "China"-Lieferanten in die Schuhe zu schieben, aber auch alle in Deutschland angebotenen Boards haben zuvor nie Deutschland gesehen und stammen aus Länder, überwiegend Fernost, die billigere Arbeitslöhne haben. Ein hoher Preis ist kein Garant dafür, das die Hardware in einer "Edelschmiede" geschaffen wurde.
Kommen wir also wieder zum Kernpunkt meines Problems.
Was könnte ich bei meinen Testreihen falsch gemacht haben ?
Gibt es andere Ansätze, um ggf. das Fehlverhalten einzuschränken ?
Dass die beiden Shields funktionieren, wenn es mal durch Zufall so will, zeigt, dass die verbauten Komponenten in Ordnung sein müssten.
Ich kann mir nicht vorstellen, dass ich gleich 2x Schrott geliefert bekommen habe.
Es sieht nach einer HF-Streuung aus, als ob irgend etwas aus dem Takt gebracht wird.
Wie sollten denn z.B. die Versuchsaufbauten betrieben werden, vielleicht nur mit Netzteil, ohne USB ?
Logged

CH
Offline Offline
God Member
*****
Karma: 19
Posts: 703
Book Writer "Arduino Praxiseinstieg"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Wie ich jedoch erkenne, scheint niemand eine praktikable Lösung oder Ansatz zu haben.
Ich denke dass wir dir hier schon viele Fragen gestellt und Lösungsansätze geboten haben. Deine Aussage ist nicht gerade ein Dank an die bisherigen Teilnehmer in diesem Thread.
Bisher haben wir von dir weder einen Sketch noch ein Bild von deinen Boards oder von deinem Schaltungsaufbau gesehen.
Im Forum kann leider niemand zaubern  smiley-wink smiley-wink

Quote
Wir versuchen die "Schuld" dem "China"-Lieferanten in die Schuhe zu schieben
Ich glaube immer noch dass deine Boards funktionieren und dass das Problem am Aufbau liegt. Ich habe bisher noch kein Ethernet Shield in meine Hände bekommen dass nicht funktioniert hat. Auch solche von "China-Lieferanten" haben bisher funktioniert.

Nun heisst es einfach systematisch dem Fehler auf den Grund gehen. Im verwendeten Sketch kann dazu an jeder möglichen Stelle eine Ausgabe zu machen um zu prüfen was vom Sketch funktioniert.
Weiter empfehle ich dir den Schaltungsaufbau so einfach wie möglich zu halten.

Arduino Board mit Ethernet Shield über USB versorgen
Standardnetzkabel an Router, Switch oder Hub
Funktionsfähige Internet-Verbindung

Bekommst du von deinen Lieferanten Ersatzgeräte?
Hast du deine Shields auch schon mal mit einem anderen Arduino Board getestet? Du schreibst immer von Arduino Duemilanove. Diese Boards sind ja auch nicht mehr die aktuellesten Boardvarianten.
Logged

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

An alle, die der gleichen Meinung sind wie @Webmeister. Ich weise das ganz energisch zurück ! Ich bin sehr dankbar für jede Meinung, auch wenn sie nicht zum Ziel führt und bin allen dafür sehr verbunden, die ihre Freizeit opfern, um mir zu helfen ! Nochmals GANZ RECHT HERZLICHEN DANK !

Ich schätze, dass ich ausführlich beschrieben habe, wie und mit welchen Gerätschaften die Versuche durchgeführt wurden, dass daraus auch erkennbar sein sollte, dass hier KEINE Fehler sich einschleichen konnten.
Den unüberlegten Vorwurf von dir, Webmeister, dass ich weder ein Sketch, Bild von den Boards oder Schaltungsaufbau gepostet habe, verstehe ich ebenfalls wirklich nicht. Wie kann das Aufgezählte zur Fehlereingrenzung beisteuern ?? Wer diesen Thread aufmerksam verfolgt hat, kann erkennen, dass das bereits geschehen ist. Meine Ethernet Shields V5 sind durch einen Link mit BILD in einer Antwort zuvor von mir dargestellt worden. Ein oder mehre Sketche hier "abzudrucken" wären aus meiner Sicht Blödsinn, da ja jeder von euch diese auf seinem eigenen PC hat und die hat jeder von euch, egal welche Arduino-Version und das ist ebenfalls von mir auch beschrieben worden ! Einen Schaltungsaufbau kann man sich wohl abschminken, weil jeder weiss, wie es aussieht, wenn 2 Boards zusammen gesteckt werden. Wo liegt da denn nun dein Problem ?
Das man im Forum nicht zaubern kann, sollte auch mir auch mir bekannt sein.
Du hast vielleicht ohne es zu wissen, einen wichtigen Hinweis gegeben - das Arduino Duemilanove-Board. Sollte das der Kosinus-Knacksus sein ? Ist das Teil vielleicht tatsächlich nicht in der Lage vernünftig mit dem Ethernet-Board umzugehen und bringt diese sporadischen Ergebnisse. Wie schon zuvor erwähnt - die Boards laufen alle fehlerfrei, die Ethernet-Shields nur sporadisch.
« Last Edit: September 26, 2012, 04:59:59 am by COOL » Logged

CH
Offline Offline
God Member
*****
Karma: 19
Posts: 703
Book Writer "Arduino Praxiseinstieg"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@COOL
Gerne helfe ich dir bei der Analyse deines Problems.

Leider passieren genau dort die Fehler wo man meint dass kein Fehler auftreten  kann smiley-wink
Darum habe ich den Hinweis auf ein Bild von deinem Originalboard und deinem Schaltungsaufbau erwähnt. Als Aussenstehender sieht man plötzlich einen Fehler, der vom Anwender übersehen wurde. Bloss schon beim Einsatz eines Standard-Netzwerkkabels oder eines Crossover-Kabels kann eine falsche Verwendung eine Nichtfunktion bewirken. Ein Bild des verwendeten Shieldtyps aus dem Internet ist zwar nützlich, zeigt aber dann nicht das Originalboard von dir.

Ich sag nur:
Bilder sagen mehr als tausend Worte

Auch die Nachfrage nach den verwendeten Sketchen ist kein unüberlegter Vorwurf. Die Aussage dass man das Beispiel x verwendet, kann zwar stimmen. Aber auch bei den Beispielen kann es Unterschiede geben oder man hat selbst noch ein paar Zeilen angepasst. Anwender sagen schnell sie haben nichts gemacht oder nichts angepasst  smiley-wink

Ich mache schon viele Jahre Forenarbeit und habe Erfahrung in Schaltungsentwicklung, wie auch im Anwendersupport und in der Ausbildung von Informatiker und Elektroniker, und weiss dass man lieber nachfragt und sich die Originallösung/Aufbau anschaut. Speziell dann wenn man eine Fehleranalyse von extern machen muss und den Aufbau nicht live sehen kann.

Die Bemerkung betr. Duemilanove war Absicht und ist ein weiterer Ansatz zur Lösungsfindung.
Logged

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

@Webmeister
ich bin zwar nicht ganz deiner Meinung, was es bringen soll, aber wenn es zum Erfolg führen soll, ist mir jedes Mittel recht.
Noch ein paar Daten zur Abstimmung, da ich meine Versuche mit mehreren Versionen getestet habe. Nehmen wir mal diese hier.
Ein Ping vom MAC oder anderen PC im Netz ist manchmal möglich, wie schon erwähnt je nach dem, wo ich meine Finger habe.
Ein Aufrufen der Seite per Browser (Safari oder Firefox) mit 192.168.178.177 oder 192.168.178.177:80 ist nicht möglich
Fritz!Box Multibox 7270 NGN
iMac 27" mit OS X 10.8.2 Mountain Lion
RJ45 1:1 Arduino - Router
USB iMac - Arduino
Sketch:/*
  Web  Server
 
 A simple web server that shows the value of the analog input pins.
 using an Arduino Wiznet Ethernet shield.
 
 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13
 * Analog inputs attached to pins A0 through A5 (optional)
 
 created 18 Dec 2009
 by David A. Mellis
 modified 4 Sep 2010
 by Tom Igoe
 
 */

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

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,178,177 };  //angepasst auf Homenetz - 192.168.178.1 hat der Router

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
Server server(80);

void setup()
{
  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
}

void loop()
{
  // listen for incoming clients
  Client client = server.available();
  if (client) {
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();

          // output the value of each analog input pin
          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(analogRead(analogChannel));
            client.println("<br />");
          }
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
  }
}




* DSC_0015.JPG (1837.08 KB, 2163x1626 - viewed 23 times.)
Logged

CH
Offline Offline
God Member
*****
Karma: 19
Posts: 703
Book Writer "Arduino Praxiseinstieg"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Mit welcher IDE-Version hast du dieses Beispiel hochgeladen?
Logged

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

Sorry, ist leider untergegangen, das ist das Beispiel von der 0.23- Version.
Die anderen Versionen bis zur neuesten habe ich auch getestet. Im Grunde genommen sind sie gleich mit geringfügigen Abweichungen.
Geändert wird ja eh nur die IP-Adresse, damit hier im Beispiel der Webserver erreichbar ist.
Die Client-Version, also mal anders herum, habe ich auch getestet, die Ergebnisse sind gleich.
Vorhin lief das Board sogar ohne Fehler bei der PING-Abfrage unter Windoff. Sind zwar nur jeweils 4 aber trotzdem immerhin, jedoch ein Aufrufen des Servers per Browser war nicht möglich.
Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1407
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das Ping funktioniert, aber das Webserverbeispiel nicht, kann z.B. durch einen Fehler im Sketch kommen.
Der Wiznet 5100 Chip bildet intern den kompletten TCP-Stack, ICMP und was weiss ich nicht alles ab. Darum muss sich der Arduino nicht kümmern. Wenn die Initialisierung des Chips soweit klappt, das er seine IP bekommt, dann reagiert der auch auf ein Ping, selbst wenn der Webserversketch oder was auch immer nicht richtig läuft.
Hast Du mal ein wenig "debug"-Code in den Sketch eingebaut und auf der seriellen Konsole Meldungen ausgegeben, wo im Sketch sich Dein Programm gerade befindet? Das hilft in der Regel auch, Fehler einzugrenzen.
Ich würde bei Deinem Sketch auf jeden Fall noch die Netzmaske ergänzen und an das Ethernet.begin() mit übergeben. Dabei aufpassen, das dann auch die anderen Parameter wenigstens mit übergeben werden müssen (Gateway und DNS).
Hast Du evtl. noch irgendein Gerät laufen das die gleiche MAC-Adresse die Du im Sketch eingestellt hast verwendet (z.B. ein anderer Arduino mit Ethernet-Shield), das kann auch die seltsamsten Effekte verursachen. Ebenso, wenn die gleiche IP schon verwendet wird. Wenn Du von Deinem iMac erfolgreich einen PING absetzen konntest, dann ruf im "Terminal" mal den Befehl "arp -a" auf. Dann bekommst Du eine Liste aller MAC-Adressen mit den dazugehörigen IPs die Dein Mac "gelernt" hat. Schau, das die MAC-Adresse der 192.168.178.177 auch die vom Arduino ist.

Im "Terminal" kannst Du auch folgendes mal probieren:
"nc -v -z 192.168.178.177 80"
Damit wird ein TCP-Verbindungsaufbau auf Port 80 gemacht. Das ist "nur" der TCP-Handshake und sollte auch klappen, wenn Dein Arduino auf Port 80 lauscht, aber die Verarbeitung einer ankommenden HTTP-Anfrage aus irgendeinem Grund nicht klappt.
So kannst Du dich ggf. an das eigentliche Problem herantasten.
Mario.
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 96
Posts: 4763
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Könntest Du auf dem Foto mal die Orte einzeichnen, die Du berühren musst, damit der Ping funktioniert? Vielleicht gibt das ja einen Hinweis, welches Teil da Probleme bereiten könnte.
Logged

Germany
Offline Offline
Full Member
***
Karma: 6
Posts: 111
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich würde vorschlagen erst einmal die grundlegende Kommunikation mit dem W5100 zu testen. Dabei nur das Eth-Shield auf den Arduino stecken und alles über USB mit dem PC verbinden (kein Netzwerkkabel anschließen). Anschließend mehrmals einen Reset ausführen und schauen, ob die IP durch das Testprogramm immer richtig gesetzt wird.
Hier das entsprechende Testprogramm: https://raw.github.com/wiki/watterott/KnowledgeBase/files/arduino_ethshield.ino

Update: So wie es aussieht, ist auf dem Eth-Shield der Reset-IC nicht bestückt und daher wird es hier das bekannte Resetproblem des W5100 geben.

Gruß
Andreas


* DSC_0015x.JPG (95.3 KB, 1000x752 - viewed 27 times.)
« Last Edit: September 27, 2012, 03:44:56 am by Andreas Watterott » Logged

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

Nochmals DANKE für eure Interesse und Hilfe !
Es hat eine Weile gedauert, um jeden Hinweis nachzugehen, zumal es mich ganz raschelig gemacht hat, die Boards untereinander zu tauschen und ggf. als defekt zu deklarieren.
Aber ich bin mit eurer Hilfe VIEL weiter gekommen.
Der Hinweis von Andreas, mal das Testtool für den W5100 einzusetzen, hat erst einmal Licht ins Dunkle gebracht. Beide Arduino Duemilanove Boards mit gesatteltem Ethernet V5 Shield standen am Start.
Keines der beiden Probanden bestand den Test und antwortete mit 4x 0 für die angeblich übertragene IP-Adresse (Bilder im Anhang).
Durch vielseitiges Tauschen der Baugruppen gelang es mir 2x 2 funktionierende Arduino-Boards mit Ethernet zusammen zu stellen, die tatsächlich die korrekte IP wiedergaben. Komisch ? doch nicht kaputt ? Nur in dieser Kombination liefen beide Kandidaten am MAC und Windows-Rechner einwandfrei - warum auch immer.
Jetzt kam der nächste Schritt - das Testprogramm als Server. Ich habe es auf den Hinweis von Mario mit weiteren Daten, die zum Controller übergeben werden sollten, ergänzt. Das sieht dann jetzt so aus.
#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 178, 177 };
byte gateway[] = { 192, 168, 178, 1 };
byte subnet[] = { 255, 255, 255, 0 };

EthernetServer server(80);

void setup() {
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}


void loop() {
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connnection: close");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
                    // add a meta refresh tag, so the browser pulls again every 5 seconds:
          client.println("<meta http-equiv=\"refresh\" content=\"5\">");
          // output the value of each analog input pin
          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            int sensorReading = analogRead(analogChannel);
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(sensorReading);
            client.println("<br />");       
          }
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disonnected");
  }
}


Wahnsinn, das erste Board gab mir am MAC und am Windows-PC die "gepingten" Adressen wieder. Jetzt kam der zweite Kandidat auf den Prüfstand - durchgefallen beim MAC, jedoch gepunktet beim Windows-Rechner ?!?
Jetzt bot sich doch erst einmal der Tip von Mario an, mal eben mit dem MAC die Umgebung nach doppelt vergebenen IP`s oder Mac-Adr. zu schauen.
Das Team was mir die IP zurück gab brachte keine Überraschung, jedoch bei der zweifelhaften Kombination bekam ich als Antwort ? (192.168.178.177) at (inkomplette) on en1 ifscope (ethernet)
WAS IST DAS ?
Jetzt ging es um die Wurst. Mit aktuellen Browsern von Microsoft, Firefox und Safari von MAC und Windows wurde die 192.168.178.177 ohne und mit :80 eingegeben.
Das Ergebnis war umschmetternd ! Nichts funktionierte.
Beim MAC mit Firefox kam : ...braucht zu lange um eine Antwort zu senden
Beim MAC mit Safari kam : ...kann Seite nicht öffnen
Beim Windows mit Microsoft kam : Webseite existiert nicht, oder Programm ist nicht installiert
Beim Windows mit Firefox kam : Die Verbindung wurde zurückgesetzt, während die Seite geladen wurde
? ? ?
Da steht die Kuh nun auf dem Eis - doch das Redet-Problem ?!?

Gruß Gerd




* Bildschirmfoto 2012-09-27 um 12.22.31.png (163.88 KB, 1217x897 - viewed 15 times.)

* Bildschirmfoto 2012-09-27 um 12.31.08.png (53.73 KB, 566x361 - viewed 16 times.)

* Bildschirmfoto 2012-09-27 um 13.11.39.png (111.61 KB, 1001x504 - viewed 16 times.)
Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1407
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
Ethernet.begin(mac, ip, gateway, subnet);
wird nicht klappen, da muss zwingend der DNS mit rein, sonst wird subnet als DNS verwendet.
Das nur kurz, den Rest schaue ich mir später an.
Logged

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

hallo @mkl0815,
muss dich leider enttäuschen, es geht auch ohne. Ich habe, weil ich unsicher war, die DNS-Adr. mit eingebunden.
Am Ergebnis hat sich leider nichts geändert.
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 96
Posts: 4763
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
muss dich leider enttäuschen, es geht auch ohne. Ich habe, weil ich unsicher war, die DNS-Adr. mit eingebunden.

Dann verwendest Du wahrscheinlich eine alte IDE. Ich glaube, ab Version 1.0 müsste da der DNS noch rein, sonst wird das Subnet als Gateway gesetzt (und der Gateway als DNS), womit Du nur noch vom selben Netz-Segment her Zugriff hättest. Auf das grundsätzliche Problem dürfte das aber keinen Einfluss haben.

Quote
(192.168.178.177) at (inkomplette) on en1 ifscope (ethernet)

Heisst in etwas soviel wie: es fand ein ARP-Request statt, der aber scheiterte und somit ist für diese IP keine MAC-Adresse bekannt.

Nach Deiner Beschreibung würde ich auf den fehlenden Reset-Baustein tippen, denn jedes Arduino-Board dürfte ein ganz leicht anderes Reset-Timing haben. Vielleicht willst Du den Tipp eines anderen Forum-Teilnehmers umsetzen und bei Deinen Boards die Reset-Leitung auf einen Arduino-Pin rerouten, damit Du das Shield später im setup() Deines Sketches resetten kannst.
Logged

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