Mein Paket… …ein ENC28J60 Ethernet LAN Netzwerk Modul

Heute kam mein Paket…

…mit einem Ethernet Modul an. Dieses Modul hatte ich dieses Mal wieder über einen ebay-Shop bestellt.

(ENC28J60 Ethernet LAN Network Modul für 2,97 € inklusive Versand).

Das Modul macht bis auf einige Lötspritzer auf der Unterseite, verursacht von der Handlötung der Ethernetbuchse und der Stiftleiste, qualitativ einen passablen Eindruck. Es ist fertig aufgebaut und enthält einen ENC28J60 Chip. Über die bereits eingelötete 2-reihige Stiftleiste im Rastermaß 2,54mm kann es relativ leicht mit dem Arduino Board verbunden werden. Ein auch mechanisch kompatibles Arduinoshield wäre zwar noch leichter zu installieren, dafür aber deutlich teurer wie auch etwas unflexibler bei der Auswahl der Pins auf dem Arduino.

Die Software

Der hier verwendete Ethernet-Controller ENC28J60 ist nicht kompatibel zur bekannten Arduino Ethernet-Library. Aber es gibt ja Internetsuchmaschinen. Bei JeelabsWeb wurde ich fündig. Der Download der Library mit diversen Beispielen kann hier erfolgen. Wer es genauer wissen möchte kann von Microchip auch ein Datenblatt herunterladen.

Die gepackte Datei muss natürlich zuerst wieder entpackt werden und der Ordner anschließend in „EtherCard“ umbenannt werden bevor er vollständig mit seinen gesamten Inhalten ins library Verzeichnis umkopiert wird. Ich habe nur einige der im Download enthaltenen Libraries probehalber gestestet. Bei mir funktionierte es auf Anhieb einwandfrei.

Die Pinbelegung

Im Ordner EtherCard ist die Headerdatei EtherCard.h zu finden. In ihr ist die Pinbelegung wie folgt beschrieben.

Arduino               –        ENC28J60
–                            –       Clockout
Digital Pin 2          –       INT
–                            –       WOL
Digital Pin 12        –       SO
Digital Pin 11        –       SI
Digital Pin 13        –       SCK
Digital Pin 8***     –       CS
RESET                –       RESET
3V3                      –       VCC
GND                    –       GND

*** Es kann auch Digital Pin 10 benutzt werden, sofern im Setup der Sketch wie folgt ergänzt wird:

ether.begin(sizeof Ethernet::buffer, mymac, 10) z.B. auf Pin 10

 Wichtig ist unbedingt noch das Board nur mit 3,3V zu versorgen!

Der Schaltungsaufbau

Der Aufbau gestaltet sich nicht sonderlich schwierig. Mittels passender Dupont Steckkabel wird das Ethernetmodul gemäß obiger Beschreibung schnell mit dem Arduino Board verbunden. Von meiner 10-pol. Flachleitung bleiben 2 Pole unverdrahtet, wie auf nebenstehendem Foto gut zu erkennen ist.

Das Testprogramm

In der Arduino IDE unter Beispiele ist ein Testsketch gleich oben unter backsoon zu sehen. Damit wird ein simpler Webserver aufgebaut. Da ich der Meinung bin, dass Sensoren über eine feste IP-Adresse verfügen müssen, habe ich im Sketch eine statische IP-Adresse eingegeben. Dazu muss im Sketch

#define STATIC 0 in diesem Fall auf
#define STATIC 1 geändert werden. Weiterhin muss in den Zeilen
static byte myip[] = { 192,165,0,101 };
static byte gwip[] = { 192,165,0,1 };

für das Modul eine gültige IP-Adresse aus dem lokalen Netzwerk sowie die Gateway-Adresse (bei mir die Adresse der FritzBox) eingetragen werden.

Normalerweise sind die üblichen Router auf die Vergabe einer dynamischen IP-Adresse voreingestellt. Bei meiner FritzBox lässt sich dieser DHCP-Bereich auch ausschalten, aber auch unter Heimnetz, Netzwerk und dem Register Netzwerkeinstellungen unter dem Button IPv4-Adressen sogar begrenzen.

Ob der Leistungsumfang, insbesondere auch der hier vorgestellten Library ausreichend sein wird, wird sich zeigen. Eine Methode, den üblichen http-Port 80 auf beispielweise 8080 umzustellen, habe ich derzeit noch nicht gefunden. Hier könnte also noch Handlungsbedarf bestehen.

Die technischen Daten in Kurzform

Controller:                 Microchip ENC28J60-I/SO
Takt:                          25MHz
Betriebsspannung:   3,3V
Anschlüsse:             Stiftleiste 2*5pol. 2-reihig
Ethernetbuchse
Größe:                      58mm * 34mm * 17mm
Gewicht:                   15 g

 

Hier meine Zusammenfassung

Bauteil:              ENC28J60 Ethernet LAN Network Modul
Lieferant:           ebay
Verkäufer:          seemmy999
Preis:                2,97 €
Lieferzeit:          etwa 3 Wochen
Versandkosten: inklusive
Sonstiges:
Bewertung:       bin durchaus zufrieden, insbesondere mit dem Preis-/Leistungsverhältnis

Olaf Meier

Arduino Hannover  http://Arduino-Hannover.de

http://electronicfreakblog.wordpress.com/

 

 

*Info: In diesem Beitrag verweisen orangefarbende Links auf Affiliates.

13 Gedanken zu „Mein Paket… …ein ENC28J60 Ethernet LAN Netzwerk Modul

  1. Hi ,danke für den Artikel, ist sehr Hilfreich.
    Habe allerdings einer Frage und zwar
    Wird die daten per udp oder tcp übertragen?

    vVele Grüße.

  2. Hallo, danke fuer den Artikel, darueber habe ich zu Ethercard gefunden. Allerdings habe ich eine Version mit eigenem 3V3 Spannungsregler. Somit kann man es auch alleine mit 5V betrieben, was ganz nuetzlich ist, wenn man eine 5V Umgebung aufbaut.
    http://r.ebay.com/dhsUr1

      • Hallo Olaf, wie sieht es mit der IRQ Leitung aus? ich habe noch nicht viel experiementiert. Aber ich muss bei UDP Empfang ja in der loop selbst pollen. Von daher nehme ich an, dass man den Int nicht braucht? Hast Du da Erfahrung?

        • Hallo Marco,
          der Chip selber unterstützt auf jeden Fall diverse Interruptquellen, ist alles ab Seite 63 des Manuals beschrieben. An Pin 2 des Moduls wird der Interruptausgang auch herausgeführt. Beim UDP-Polling wird normalerweise jedoch kein Interrupt benötigt. Ob das hier beim ENC28J60 nun aber vielleicht nicht doch anders ist, kann ich leider auch nicht verbindlich sagen. Habe ich nicht wirklich durchgetestet. Sehe aber keinen Grund warum das hier anders sein sollte.

  3. Guten Tag,
    hätten sie noch ein Paar Programmbeispiele,
    mir würde ein Code reichen, wo man einfach über einen Button einen Pin an- und ausschalten kann.

  4. Hallo DonKingShott,
    bei der hier von mir vorgeschlagenen Jeelabs Library sollten Beispiele dabei gewesen sein. Ansopnsten gibt es noch eine weitere gute Library von Norbert Truchsess mit potentiellen Beispielen:
    https://github.com/ntruchsess/arduino_uip
    Da könnte ein in den Beispielen ein Parser mit dabei gewesen sein.
    Ansonsten könnte ich einen rudimentären Sketch dafür sicher noch irgendwo haben. Könnte ich bei Interesse und etwas Geduld per Email versenden. Mit dem Beitrag hier möchte ich den Sketch nicht unbedingt in Verbindung bringen, da der Sketch definitiv noch nicht völlig ausgereiift ist.
    Gruß Olaf

  5. Pingback: Arduino Additional Libraries | Andreas' Blog

  6. Hallo Olaf,

    zur Info … beim googln habe ich deine Infos gefunden, Es fehlen leider div. Bilder auf der Seite. Nur das oberste Bild wir angezeigt

    Lg
    Danke
    Dietmar

    • Hallo Dietmar,
      vielen Dank für Dein Feedback. Das ist noch keinem aufgefallen. Es sind einige Links verlorengegangen. Sollte jetzt wieder klappen. Ich schaue später auch noch einmal rein.
      Schönes Wochenende!
      Olaf

  7. Hallo

    Ich kämpfe schon den ganzen Tag mit dem Ethernet-Arduino.

    AUFBAU

    Arduino IDE
    – Platine : Arduino Nano
    – CPU : ATmega328

    Lan
    – HanRun, HR911105A, 16/02

    Verdratung

    – o o – o
    NT SO SCK RST GND
    ——————–
    CLK WOL SI CS VCC
    – – o o o

    VCC an 3.3V
    GND an GND
    CS an D8 oder D10 beides probiert
    SI an D11
    SCK an D13
    SO an D12
    RST, WOL und IN (wohl INT) nicht angeschlossen, jedoch mal mit INT probiert.

    Lan-Leitung zum switch oder direkt in Fritzbox, alles erfolglos.
    Lankabel geprüft, io.
    Am Switch sieht man keine LED blinken.
    Ping geht auch nicht.

    Das Problem ist hier:

    das while (!readOp(ENC28J60_READ_CTRL_REG, ESTAT) & ESTAT_CLKRDY);
    erwartet ein 0, jedoch kommt immer 0.

    ———————————–
    enc28j60.cpp

    byte ENC28J60::initialize (uint16_t size, const byte* macaddr, byte csPin) {
    ….

    Serial.println(„readOp A“); // smaz
    int x = readOp(ENC28J60_READ_CTRL_REG, ESTAT);
    Serial.print(„ESTAT_CLKRDY „); // smaz
    Serial.println(ESTAT_CLKRDY); // smaz
    Serial.print(„x“); // smaz
    Serial.println(x); // smaz

    while (!readOp(ENC28J60_READ_CTRL_REG, ESTAT) & ESTAT_CLKRDY);

    Serial.println(„readOp B“); // smaz

    ———————

    readOp A
    ESTAT_CLKRDY 1
    x 0

    =================================
    keine einzige Lib (habe 5 probiert) geht.

    Was mach ich falsch?
    Was kann ich noch testen?

    Ein CanOpen-Arduino-Chip, auch mit SPI, das geht.

    gruss,
    Robert

  8. „Eine Methode, den üblichen http-Port 80 auf beispielweise 8080 umzustellen…“ –> in net.h steht die Definition „#define HTTP_PORT 80“.
    Diese kann einfach überschrieben werden

Schreibe einen Kommentar zu Olaf Meier Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

I accept that my given data and my IP address is sent to a server in the USA only for the purpose of spam prevention through the Akismet program.More information on Akismet and GDPR.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.