Tutorial: Arduino Mega 2560 mit enc28j60 Ethernetadapter nutzen

Heute soll es mal wieder um meine heißtgeliebten Arduinos gehen. Im speziellen um den Arduino Mega 2560 und wie man diesen mit einem, auf dem enc28j60 Chip basierenden, Ethernetadapter zum laufen bekommt.

Keine Produkte gefunden.

Die enc28j60 Ethernetadapter dürften dem ein oder anderen, der schon einmal mit einem Arduino gebastelt hat, bestimmt bekannt sein. Das sind die günstigen Ethernetadapter, die es bei Amazon und eBay teils schon unter 5€ zu kaufen gibt. Sicher, der Anschluss und die Library (die originale Ethernet-Library ist nicht kompatibel), sind nicht ganz so komfortabel wie jene, des originalen Ethernetshields, dafür kann man aber auch gut und gerne 30€ und mehr im Vergleich zu einer offiziellen Lösung/zum offiziellen Shield sparen.

Für den Arduino Uno gibt es schon den ein oder anderen brauchbaren Artikel, der sich auf den enc28j60 und die Ethercard Library bezieht. Für den Mega 2560 konnte ich jedoch nichts brauchbares finden, weshalb ich nachfolgend kurz auf die Feinheiten dieser Kombination eingehen möchte.

Arduino Mega 2560 und enc28j60 verkabeln

Bei der Verkabelung muss aufgrund der teils anderen Portbelegung des Arduino Megas ein wenig aufpassen. Ein 1-zu-1 Nachbau der Arduino Uno Tutorials klappt leider nicht.

Ich habe die Verkabelung mal als Grafik dargestellt. Die genauen Verbindungen könnt ihr aber auch der untenstehenden Tabelle entnehmen.

Arduino Mega 2560 mit enc28j60 Ethernetadapter verkabeln

Enc28j60 Arduino Mega 2560
GND GND
3.3 3.3V
SO Pin50
SI Pin51
SCK Pin52
CS Pin53

Für die Verkabelung reichen tatsächlich nur 6 Pins am Ethernetboard aus. Die restlichen 4 Pins sind nicht nötig. (Zumindest solange man auf Dinge wie Wake-on-Lan verzichten kann.)

Der Trick mit der Ethercard-Library

Bei der Benutzung der Ethercard-Library muss auch noch eine Kleinigkeit angepasst werden. So muss beim Aufruf der begin()-Methode der Pin53 mit angegeben werden.

...
if (ether.begin(sizeof Ethernet::buffer, mymac, 53) == 0)
  {
    Serial.println(P("Failed to access Ethernet controller"));
  }
  else
  {
     Serial.println(P("Ethernet is fine and up"));
  }
...

Mehr ist nicht nötig. Wenn der Pin in der begin()-Methode angepasst wurde, kann die Library ganz normal (wie mit dem Arduino Uno auch) verwendet werden.

Abschluss

Sollten noch Fragen bestehen oder etwas unklar sein, schreibt einfach einen Kommentar.

p.s.: Wer noch einen günstigen Arduino Mega sucht, sollte mal bei eBay vorbeischauen. Dort habe ich schon mehrere Arduino Mega für ~14€ pro Stück (inkl. Versandkosten) ergattert. Der Versand erfolgt aus Deutschland, sodass es keine Probleme mit dem Zoll gibt. Günstiger habe ich den Mega bisher nirgends gefunden.
Mittlerweile gibt es die Arduino Megas auch bei Amazon zu den gleichen Konditionen, lediglich mit schnellerem Versand und besserer Umtauschpolitik. Die folgende Liste zeigt jeweils tagesaktuelle Angebote:

Keine Produkte gefunden.

8 Kommentare

  1. Hallo,

    der ENC28J60 ist auch meine erste Wahl.
    Jedoch frage ich mich, ob es möglich ist gleichzeitig eine CD Karte zu betreiben.
    Einzeln klappt die Erweiterungen in jedem Fall prima. Aber sobald beide gesteckt sind, hängt die EtherCard.

    Habe ein Arduino Mega.
    Die SD Card:
    MISO – 50
    MOSI – 51
    SCK – 52
    CS – 53

    ENC28J60
    SO – 50
    SI – 51
    SCK – 52
    CS – 53 (auch define 49 hilft nicht).

    Haben Sie vielleicht einen Tipp für mich?

    MFG
    Jens Vogel

    • Die einzelnen Geräte müssen an unterschiedliche CS Pins, damit der Arduino selektieren kann, welche Gerät gerade über den SPI-Bus kommuniziert. Wenn der ENC28J60 rumzickt, probier doch mal den CS-Ping für die SD-Card zu tauschen.

      Hier hatte übrigens jemand ein ähnliches Problem:
      https://github.com/jcw/ethercard/issues/4

  2. Hallo Raffi.

    Sehr hilfreicher Artikel. Danke.
    Ich bin gerade mit dem ENC28J60 und meinem Mega zu gange und habe mich schon gewundert warum das nicht geht. Dachte schon der Adapter ist im Ar***. Aber nun geht es. Danke! :)

    Viele Grüße
    Gordon

  3. Michasays:

    Hallo Raffi,

    Ich schon wieder – habe den28j60 an den Pins 50-53 hängen – allerdings kommt das Gespann nicht ins LAN.
    Mit den vorgefertigten Beispielen gibt es immer ein “DHCP failed” uder mit statischen IPs sind die IPs nicht erreichbar. Der Laptop bekommt über das selbe Kabel problemlos Anschluss.

    Hast du eine Idee was ich da übersehen haben könnte?

    Könnte ich ein Stück Code sehen, der bei dir funktioniert?

    Vielen Dank, M. Fehér

  4. Michasays:

    Hallo Raffi,

    in wie fern müssen die o.g. ports benutzt werden?

    Kann das ganze beispielsweise auch mit den ports 44,45,46,47 gehen, nur dann halt port 47 in die libary schreiben?

    Gr. Micha

    • Die Frage kam schon des Öfteren auf. Theoretisch sollte es klappen einen anderen Port zu nehmen. Dafür müsstest du aber mal alle Dateien, die mit der Library mitkommen durchsuchen. Dort ist der Port teilweise leider hardkodiert und müsste händisch angepasst werden.

  5. Wem die EtherCard-library zu kompliziert ist, oder wer richtige (dauerhaft verbundene) tcp-verbindungen mit Streams in beide Richtungen braucht:

    Die UIPEthernet-library ist voll-kompatibel zur Standard-Ethernet-library, nur eben für den ENC28J60. Findet sich hier:

    https://github.com/ntruchsess/arduino_uip

Schreibe einen Kommentar zu Micha Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Sie dient nur dem Spamschutz.