Als Library dafür benutze ich EtherCard da das "offizielle" EthernetShield ja einen Wiznet-Controller verwendet und der TCP/IP-Stack somit nicht in der Standard Ethernet-Library enthalten ist.
Zum Testen habe ich die Beispiele verwendet die der Library beiliegen.
Mein Problem ist, dass ich keine Netzwerkverbindung mit dem Modul zustande bekomme.
Beim Compilieren sind keine Fehler aufgetreten; Die Verdrahtung zwischen dem Arduino Board und dem Netzwerkcontroller ist fehlerfrei; Sobald ein Netzwerkkabel angeschlossen wird leuchtet die Orange LED dauerhaft und die Grüne LED blinkt;
Aber ich bekomme im Serial-Monitor keine Meldung also weder Erfolg noch Misserfolg und ebenso ist das Board nicht im Netzwerk verfügbar. Da ich mir nicht sicher bin wo mein Fehler liegen könnte hoffe ich hier Hilfe zu bekommen.
Fennek:
Danke für den Hinweis, aber auf einen anderen Chip umzusteigen wäre für mich der letzte Ausweg.
Irgendwie bist Du masochistisch veranlagt.
Aber na ja.
Ich fange mit Deiner Beschreibung an:
Fennek:
Aber ich bekomme im Serial-Monitor keine Meldung
Gar keine?
Dieser Fehler ist typisch für eine falsch eingestellte Baudrate im seriellen Monitor. Der von Dir verlinkte Sketch sendet mit:
Serial.begin(57600);
Serial.println("\n[backSoon]");
Wenn Du nicht mal den Text "[backSoon]" im seriellen Monitor zu sehen bekommst, dann prüfe mal, ob der serielle Monitor auf dieselbe Baudrate eingestellt ist, mit dem der Sketch sendet.
Falls Du ein Leonardo-Board verwendest, wird im Setup-Code für die serielle Schnittstelle auch eine zusätzliche Zeile benötigt;
Serial.begin(57600);
while (!Serial); // wait for serial port to connect. Needed for Leonardo only
Serial.println("\n[backSoon]");
War der Fehler ("falsche Baudrate" oder "fehlende Zeile für Leonardo-Boards") dabei?
Wenn es Meldungen im seriellen Monitor gibt, dann poste bitte mal alles, was im seriellen Monitor an Meldungen erscheint.
Nun gut das war etwas unglücklich ausgedrückt, ich bekomme die Zeile "[backSoon]". Aber das war's dann auch, von dem möglichen Meldungen "Failed to access Ethernet controller"; "DHCP failed"; oder eben die durch DHCP zugewiesenen Adressen erscheint keine.
Die serielle Kommunikation funktioniert Problemlos, das ist sicher.
Ich verwende das Board "Arduino UNO - SMD", das sollte aber für das Problem nicht essentiell sein.
Fennek:
Ich weis nur leider nicht welche Möglichkeiten ich überhaupt habe um den Fehler zu finden, mal vom überprüfen der Verdrahtung abgesehen :).
Als erstes würde ich mal die standardmäßige "Ethernet" Library in der Arduino-Standardinstallation löschen. Wenn ich mich nicht täusche, gibt es teilweise wohl Namensgleichheit von Funktionen und sogar Dateien zwischen der Ethernet-Library und verschiedenen ENC28J60-Libraries, und selbst wenn Du die richtige Include-Datei in Deinem Sketch inkludierst würde ich mich nicht wundern, wenn sich Arduino beim Einbinden der Funktionen trotzdem verhaspelt.
Weiterhin könntest Du mal überprüfen, ob Dein Netzwerk überhaupt mit 10 MBit Komponenten arbeitet. Es soll ja inzwischen Leute geben, die haben Gigabit-Heimnetzwerke, wo der DSL-Router genau so mit 1000 MBit arbeitet wie die Switches und natürlich die PC-Netzwerkkarten. Wenn ich mich nicht täusche, sind GBit Netzwerke zwar im Prinzip nicht nur fallback-fähig auf 100 MBit, sondern auch auf historische 10 MBit. Aber da das eine eher museumsreife Geschwindigkeit für Netzwerkkomponenten ist, muß das nicht die Grundkonfiguration sein. Eine 10 MBit Komponente im 1000 MBit Netzwerk ist nämlich auch eine ziemliche Bremse für den Gesamt-Datendurchsatz.
Die Frage ist also: Hast Du schon mal irgendeine museumsreife 10 MBit Netzwerkkarte erfolgreich in Deinem Heimnetz in Betrieb genommen? Oder arbeitet Dein Netzwerk vielleicht nur auf GBit und 100 MBit?
Der ENC28J60 ist ja nun auch mal ein schlapper Chip, der nur museumsreife 10 MBit verkraftet, und zu so einem Museumsstück müßte Dein Netzwerk natürlich auch kompatibel sein, wenn Du den Chip in Gang setzen möchtest. Viele Switches haben LED-Anzeigen für den Netzwerk-Link, also ob ein Netzwerk-Link besteht und mit welcher Verbindungsgeschwindigkeit die angeschlossene Komponente erkannt wird. Kannst Du am Switch eine Änderung der LED-Anzeigen feststellen, wenn Du den (verdrahteten und mit Spannung versorgten) ENC28J60 anstöpselst?
Das ist so nicht richtig. Gigabit Ethernet und Switches sind "immer" 10MBit fähig.
Ich betreibe hier einige AVR-NET-IOs von Pollin mit dem Chip an meinem 1000er Netzwerk aus TP-Link und AVM Infrastruktur.
Der Post ist zwar uralt, aber ich stand vor dem selben Problem. Hier meine Lösung:
Anschluss des Modules.
// PIN Connections (Using Arduino UNO):
// VCC - 3.3V
// GND - GND
// SCK - Pin 13
// SO - Pin 12
// SI - Pin 11
// CS - Pin 10 <- 10 (SS bei Uno) ist Regelzustand. 8 muss explizit angegeben weden!
CS-Problem gelöst mit der Änderung der Zeile:
ether.begin(sizeof Ethernet::buffer, mymac, 10) // z.B. CS auf Pin 10
oder
ether.begin(sizeof Ethernet::buffer, mymac) // CS auf Pin 10
oder
ether.begin(sizeof Ethernet::buffer, mymac, 08) // z.B. CS auf Pin 8
Es bringt nichts, einen uralten Thread zu kapern. Mache bitte einen eigenen Thread auf. Stelle Deinen kompletten Sketch in Codetags hier ein. (</> - Button oben links im Forumseditor).
Er hat doch nichts gekapert, sondern nur vorbildlich eine Lösung für einen ungelösten Thread hingeschrieben. So hat jeder was davon, der bei einer Suche auf den Thread stösst.