E’ chiamata anche la “scheda ethernet dei poveri” per via del prezzo modico, vediamola in dettaglio e cerchiamo di farla funzionare.
Usando la chiave di ricerca – arduino ENC28J60 – su Google, troviamo molte informazioni su questo shield e qui, basandomi sulle informazioni raccolte, propongo la mia esperienza.
http://www.lucadentella.it/category/enc28j60-arduino/
http://www.geeetech.com/wiki/index.php/Arduino_ENC28J60_Ethernet_Module
Lo shield ethernet basato sul chip ENC28J60 della Microchip non è quello “ufficiale” per Arduino, che è basato sul chip Wiznet W5100 ed è supportato direttamente dall’IDE Arduino, quindi per farlo funzionare occorrono librerie scritte appositamente, da importare nell’IDE.
DIFFERENZE tra W5100 e ENC28J60
Entrambi sono dei controller Ethernet, il primo implementa lo stack TCP/IP direttamente in hardware mentre il secondo no. Nel caso dell’ENC28J60 lo stack TCP/IP deve essere implementato via software.
—
LIBRERIE
In rete troviamo diverse librerie. Qui ne propongo due per il download.
La libreria jcw ethercard, [Download not found].
La libreria ENC28J60 library, [Download not found], che consente di utilizzare il codice già scritto per la scheda ethernet “ufficiale” con chip w5100. Questa è la pagina del produttore.
In entrambi i casi sono inclusi molti esempi.
Una volta scaricata, la libreria deve essere scompattata, rinominata magari in “EthernetENC28J60” e copiata all’interno della cartella “libraries” dell’IDE.
Nota: con la scheda in mio possesso, che è quella della foto, la libreria ENC28J60 library non funziona correttamente e si blocca dopo pochi secondi.
La seconda libreria invece funziona perfettamente. Qui ci sono una serie di esempi, che nel mio caso hanno avuto bisogno di qualche piccola modifica.
1) Solo per il debug, ho diminuito la velocità di trasmissione a 9600 baud invece che 57600;
Serial.begin(9600);
2) La riga seguente:
if (!ether.begin(sizeof Ethernet::buffer, mymac, 10)) Serial.println( "Failed to access Ethernet controller");
diventa
if (ether.begin(sizeof Ethernet::buffer, mymac) == 0) Serial.println( "Failed to access Ethernet controller");
Hardware
Concentriamoci sui collegamenti hardware.
Per quanto riguarda la libreria “ENC28J60 library” il numero dei PIN usati, che può essere eventualmente cambiato modificando il file “enc28j60.c”, è indicato nella tabella seguente, che indica collegamenti tra il modulo della foto ed Arduino.
Invece per quanto riguarda la libreria “jcw ethercard” questi sono I PIN da collegare:
// PIN Connections (Using Arduino UNO):
// VCC – 3,3V
// GND – GND
// SCK – Pin 13
// SO – Pin 12
// SI – Pin 11
// CS – Pin 10
Nota: vengono utilizzati solo 4 pin, oltre quelli per l’alimentazione.
Questo è quanto è necessario sapere per collegare il modulo Ethernet HR911105A (basato sul chio ENC28J60) ad Arduino.
Seguiranno altri articoli sull’utilizzo di questa scheda ethernet per costruire un nodo per il sistema di domotica open source Souliss.
Ho scaricato la SECONDA ( Turicas Ethernet) libreria per usarla insieme ad una libreria Modbus slave ( Mudbus library). L’obiettivo è quello di connettere arduino ad un HMI Proface in Modbus TCP/IP. Mudbus dovrebbe funzionae con W5100. Suppongo che la libretia Turicas sia quella da voi indicata come funzionante. Dopo averla scompattata ho rinominato la cartella contenete i files “Ethernet” e messa nella cartella “Libraries” includendla nello sketch.
Nella compilazione ottengo questo messaggio:
C:UsersxxxxxxDocumentsArduinolibrariesEthernetenc28j60.c:197:21: error: ‘SPI2X’ undeclared (first use in this function)
SPSR |= (1<<SPI2X);
Ho inoltre dovuto installare all'interno del folder "Ethernet" una cartella dove ho dovuto sistemare ( per ora solo) i file sockets.
Che fare?
Vi ringrazio per l'attenzione.
Gianmaria Gabusi
Si, la libreria è questa: https://github.com/turicas/Ethernet_ENC28J60
ciao scusami… non sono tanto pratico con arduino.ho comprato una scheda ethernet hr911105a e appeno lho inserisco nell’arduino uno riscalda maledettamente sapresti dirmi qualcosa?