Mit dem ENC28J60 Breakout steht ein preisgünstiges Ethernet Modul zu Verfügung – gibt es eine simple Lösung dieses Modul mit einem Arduino zu verbinden? Ja – hier unser Low Budget – Quik and Dirty Arduino Ethernet:
Die Eingänge des ENC28J60 sind laut Datenblatt 5V tolerant – die Eingänge des Arduino/ATMEL328 sind auch relativ tolerant bezüglich der Pegel (ca. 2,6V H, ca 2,1V L bei 5V Vcc) – es spricht also nichts dagegen beide auf direktem Weg zu verbinden.
PIN Belegung:
- INT Digital 2
- SO Digital 12
- SCK Digital 13
- RESET RESET
- GND GND
- Clockout frei
- WOL frei
- SI Digital 11
- CS Digital 10
- VCC 3,3V (per 2x 1N4007 an 5V)
die 3,3V Versorgungsspannung für des Ethernet Modul wird durch zwei in Reihe geschaltete Dioden (1N4007 in diesem Fall) „erzeugt“ – das ist echt quikanddirty ;-)
Verkabelung zum Test mit Jumper und Patchkabel
schnell noch die ethershield library installiert – das Webserver Example in die Arduino IDE geladen – richtige IP Adresse eingegeben – aber – Fehler beim kompilieren:
/home/michi/arduino-0021/libraries/etherShield/etherShield.cpp:8:25: Fehler: EtherShield.h: Datei oder Verzeichnis nicht gefunden
/home/michi/arduino-0021/libraries/etherShield/etherShield.cpp:11: Fehler: »EtherShield« has not been declared
/home/michi/arduino-0021/libraries/etherShield/etherShield.cpp:11: Fehler: ISO-C++ verbietet Deklaration von »EtherShield« ohne Typ
/home/michi/arduino-0021/libraries/etherShield/etherShield.cpp:14: Fehler: »EtherShield« is not a class or namespace
/home/michi/arduino-0021/libraries/etherShield/etherShield.cpp:18: Fehler: »EtherShield« is not a class or namespace
Hmm – scheinbar hat es sich immer noch nicht rumgesprochen dass richtige Betriebssysteme „case sensitive“ sind es also nicht egal ist ob man Files gross oder klein schreibt ;-)
auf einem Windows System würde es wahrscheinlich laufen – doch leider sitze ich ich an einem Ubuntu Linux System…
also entweder man nennt das File etherShield.h in EtherShield.h um und ändert auch im Sketch #include „etherShield.h“ in #include „EtherShield.h“
oder man editiert Ethershield.cpp und passt dort #include „etherShield.h“ an…
…na ja – jedenfalls läuft es nun:
Habe ich eben grad noch gefunden: Updated Arduino ENC28J60 Ethernet library available http://blog.thiseldo.co.uk/?p=504
Diese Library wurde erweitert (DNS Support!!) und kompiliert auch unter Linux!
Update 12.11.2012
Momentan die einzige Library die ich finden konnte die auch in der Arduino IDE 1.x richtig funktioniert:
Der CS Anschluss am ENC28J60 Breakout muss mit Arduino Digital Pin 8 verbunden oder per (ether.begin(sizeof Ethernet::buffer, mymac, 10) z.B auf Pin 10 gesetzt werden.
ToDo:
WOL – Wake on LAN – was könnte man damit alles anstellen?
Links Datenblätter etc:
Ethernet Breakout mit ENC28J60
Updated Arduino ENC28J60 Ethernet library – mit DNS Support!!
Ich habe D2/INT nicht verkabelt. Wenn man nur das Ethernet-Modul mit Spannung versorgt leuchtete bei mir mit verkabeltem INT die Power-LED.
Mit dem WOL könnte man einen Remote-Reset des Controllers umsetzen.
Ist das eigentlich normal, dass das Ethernet-Modul 150mA zieht?
Hallo,
ich kann nirgends fonden, wo ich mit etherCard die verwendeten Pins konfigurieren kann…..
Habe nur gelesen, dass CS standardmässich auf 8 liegt.
Kann mir jemand helfen?
Haben die meisten Arduino-Boards (zumindest Duemilanove, UNO) nicht auch einen 3.3V Ausgang?
@Fisch: Ja, der 3.3V-Ausgang wird aber vom FT232 (der USB-Seriell-Wandler des Boards) besaftet und liefert nur wenige mA, das Board hingegen benötigt 150mA, daher ist es sinnvoller und vor allem sicherer fürs Board, die 3.3V über die Dioden selbst zu generieren.
Hallo,
gibt es für dieses EthernetShield bzw. die Library eine Art Tutorial?
Bis jetzt konnte ich nur die Beispiele nutzen um auszuprobieren ob es funktioniert.
Jetzt würde ich gerne meine eigenen Sketches schreiben, um irgendwann den Aruino per OSC oder ähnlichem fern zu steuern.
Viele Grüße,
Julian