enc28J60 and Arduino (1)

by luca
143 comments

Ping pong!

The easiest way to find if a device is alive in your network, is to ping it. Just type on a computer connected to the network the ping command followed by the IP address of the device you need to check.

Let’s write a simple sketch to answer to ping requests:

#include <EtherCard.h>
static byte mymac[] = {0xDD,0xDD,0xDD,0x00,0x00,0x01};
static byte myip[] = {192,168,1,10};
byte Ethernet::buffer[700];
 
void setup () {
 
  Serial.begin(57600);
  Serial.println("PING Demo");
 
  if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0) 
    Serial.println( "Failed to access Ethernet controller");
 
  if (!ether.staticSetup(myip))
    Serial.println("Failed to set IP address");
}
 
void loop() {
 
  ether.packetLoop(ether.packetReceive());  
}

Explanation:

#include <EtherCard.h>
static byte mymac[] = {0xDD,0xDD,0xDD,0x00,0x00,0x01};
static byte myip[] = {192,168,1,10};
byte Ethernet::buffer[700];

first you need to include the EtherCard library and define some variables: MAC address, IP address and a buffer the library will use to store incoming and outgoing data;

ether.begin(sizeof Ethernet::buffer, mymac, 10)

start the library with begin() method; you need to pass as parameters the buffer’s size, the MAC address and Arduino’s PIN connected to ChipSelect PIN (usually PIN 10, but check your shield’s documentation);

ether.staticSetup(myip)

complete configuration with a static configuration for the IP address.

ether.packetLoop(ether.packetReceive());

In the loop, you need only 2 instructions:

  • packetReceive()  method receives a new incoming packet from the network;
  • packetLoop() method answers to specific incoming messages, including the “ping” ones (ICMP echo request)

And now your Arduino is online!

Related Posts

143 comments

lucadentella.it – enc28J60 e Arduino (2) Monday February 13th, 2012 - 10:47 PM

[…] termine del primo articolo abbiamo scritto un semplice sketch dove tutti i parametri di rete erano definiti come costanti; […]

Reply
Mauro Tuesday February 14th, 2012 - 08:36 AM

Ciao Luca, articolo molto interessante l’ho twittato per farlo leggere ad altri appassionati Arduino.

Reply
Roby Tuesday February 14th, 2012 - 10:57 AM

Ciao Luca,

anche io sto usando (combattendo con ) uno shield con ENC28J60. Avrei bisogno di settare la subnet mask ma nessuna libreria o esempio che ho trovato permettono di farlo. Hai qualche suggerimento?

grazie, saluti

Reply
luca Tuesday February 14th, 2012 - 07:48 PM

Ciao Roby,

hai ragione… che strana dimenticanza, visto che se usi il setup via DHCP questo è in grado di impostarla correttamente.

Comunque mi pare si possa risolvere così:

static byte staticmask[] = {255,255,255,128};

ether.copyIp(mymask, staticmask);

fammi sapere se funziona, magari lo metto in un prossimo articolo 😉

Reply
lucadentella.it – enc28J60 e Arduino (3) Sunday February 19th, 2012 - 09:55 PM

[…] aver imparato come collegare Arduino alla rete (con indirizzi statici oppure sfruttando un server DHCP) vediamo ora come inviare/ricevere informazioni attraverso un sito […]

Reply
mario Thursday March 1st, 2012 - 07:14 PM

Dove hai preso la shield con ENC ???
Grazie
Ciao

Reply
luca Thursday March 1st, 2012 - 08:30 PM

eBay…

Reply
mario Thursday March 1st, 2012 - 08:59 PM

Ok cerco anch’io Grazie

Reply
Axel Thursday March 8th, 2012 - 05:24 PM

Ciao Luca,

Complimenti per tutto.
Attualmente ho sviluppato un progettino su W5100 con l’uso anche di SD. Pero’ come sappiamo, per la verita’ l’ho imparato sucessivamente (non ho guardato bene), il chip suddetto ha un bug hardware. Pensavo di disaccoppiare lo shield procuramdomi un SD shield e l’ENC da sostituire. Il progetto e’ su mega e attualmente pesa circa 45k e sfrutta meno di 1k in ram quindi non avrei problemi di spazio, dato che l’enc ne ha bisogno. Inoltre per la parte in tcp, lo scambio di dati, avviene solo tramite bytes, nessuna stringa.
Dato che ho gia’ definito il protocollo di scambio dati tra client e server, con una traduzione all’enc risolverei definitivamente il problema hardware?
Comunque sia il w5100 fino ad ora non ha dato problemi. E lo uso in modalita’ sia con SD che con ETH.

Reply
luca Thursday March 8th, 2012 - 08:40 PM

Ciao Axel, grazie per i complimenti!
Sicuramente il chip enc28j60 ha dato prova in vari progetti di essere molto affidabile. A differenza del W5100 non gestisce in hardware il protocollo TCP/IP ma con un Mega non avrai di certo problemi di carico sulla CPU. Sul forum di Arduino c’è una discussione in corso su questo “bug” del chip W5100 e ci sono utenti che hanno riportato progetti attivi da giorni/settimane senza blocchi. Se a te non ha dato ancora problemi, è possibile che il tuo codice non vada a “toccare” quella funzionalità che lo manda in blocco.

Reply
Axel Friday March 9th, 2012 - 09:58 PM

Ciao Luca,
Grazie per la risposta.
Ma soprattutto grazie per il tuo articolo con la quale mi permette di provare questa soluzione. Blocchi non me ne ha dati, ma per sicurezza e per avvantaggiarmi, penso di proprio di convertire il progetto. Per ora problemi non ne ho avuti è vero, ma nei (piccoli) ritagli di tempo penso di cominciare ad occuparmi dell’enc.
Tutti i risultati futuri, che non saranno a breve, prometto di postarteli.

Ciao

Reply
Rott Saturday March 10th, 2012 - 11:27 PM

Ciao Luca

Ho seguito il tuo tutorial ma non riesco a far funzionare arduino come web server.
Dopo aver assegnato l’ip 192.168.2.100 subnet 255.255.255.0 il gateway è l’indirizzo del router 192.168.2.1 anche se lo pingo non vedo i dati ricevuti, dal cmd mi risponde ma dallo stato connessione i ricevuti sono fermi a 0 mentre gli inviati vanno avanti.
Dove sbaglio?
Grazie e complimenti per i tuoi post.

Reply
luca Sunday March 11th, 2012 - 08:26 PM

Ciao!

tu stai pingando il tuo Arduino da un altro PC in rete locale giusto? Che indirizzo ha questo PC? E quando da prompt di dos dai il comando “ping 192.168.2.100” cosa vedi come risposta?

Reply
Rott Monday March 12th, 2012 - 03:10 PM

Sono giorni che ci sto sbattendo la testa , ho acquistato su Futura elettronica ETHERNET SHIELD CON ENC28J60 in kit. Ho il pc connesso ad internet tramite wifi su un ip 192.168.2.2, il router è 2.1 finale firewall disabilitato.La scheda la connetto il lan con cavo cross con ip 192.168.2.200. attraverso il tuo script cerco di pingare la scheda( ip che è nello script 192.168.2.201) il gateway è lostesso per tutti 255.255.255.0 ma non risponde, ho provato un’altro tuo script demo dhcp ma in seriale mi dice :DHCP Demo
Failed to access Ethernet controller.Dallo stato di connessione lan del pc i dati inviati camminano ma i ricevuti sono fermi a zero,ho solo arduino connesso in lan.Il kit è semplice da montare ho rivisto le saldature sto battendo le piste con il tester ma sembra tutto ok.Ho riletto e riletto i tuoi tutorial e script e credo che sia la sceda che non funziona. Come posso fare un test per accertarmi?
Grazi eluca per avermi risposto
Rott

Reply
Rott Monday March 12th, 2012 - 06:48 PM

ho provato questo script per testare la scheda :

#include

#define REQUEST_RATE 5000 // milliseconds

// ethernet interface mac address
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
// ethernet interface ip address
static byte myip[] = { 192,168,2,203 };
// gateway ip address
static byte gwip[] = { 192,168,2,1 };
// remote website ip address and port
static byte hisip[] = { 74,125,79,99 };
// remote website name
char website[] PROGMEM = “google.com”;

byte Ethernet::buffer[300]; // a very small tcp/ip buffer is enough here
static long timer;

// called when the client request is complete
static void my_result_cb (byte status, word off, word len) {
Serial.print(“<< timer + REQUEST_RATE) {
timer = millis();
Serial.println(“\n>>> REQ”);
ether.browseUrl(PSTR(“/foo/”), “bar”, website, my_result_cb);
}
}

Sul monitor seriale settato a 57600baud comparare solo la scritta [getStaticIP] e cosi rimane.
pingando 192.168.2.203 mi da richiesta scaduta
Butto la scheda?

Reply
luca Monday March 12th, 2012 - 07:41 PM

Ciao!

Tutti i miei esempi come prima cosa inizializzano il chip enc28j60 e devono scriverti “Ethernet controller initialized” altrimenti c’è sicuramente qualcosa che non va nel dialogo tra arduino e la schedina.

Ho guardato il kit che hai acquistato e sembra “compatibile” con gli esempi di questo tutorial (ad es. il PIN CS è sul PIN 10 di Arduino)… purtroppo sembra proprio che la tua scheda non funzioni.

Reply
Giovanni Friday November 23rd, 2012 - 10:25 PM

anch’io sto riscontrando lo stesso identico problema di Rott con il modulo enc28J60.

Gradirei avere notizie su come è stato risolto e s’è stato risolto il problema. Grazie

Reply
luca Friday November 23rd, 2012 - 10:57 PM

Ciao Giovanni,

anche tu con un modulo di Futura Elettronica? Anche a te non appare nulla?

Reply
Giovanni Saturday November 24th, 2012 - 07:28 PM

proprio così 🙁 il modulo l’ho importato dall’ Inghilterra credo ci sia incompatibilità con arduino mega 1280. Comunque spero di risolvere il problema acquistando un altro modulo che mi costerà meno della metà del primo.
Ethernet Shield W5100 For Arduino 2009 UNO Mega 1280 2560

Reply
luca Monday November 26th, 2012 - 09:19 AM

Ciao Giovanni,

sicuramente per utilizzarlo con un Mega1280 dovrai collegare correttamente i PIN della interfaccia SPI, guarda la tabella presente sul sito di Arduino:

http://arduino.cc/en/Reference/SPI

Rott Monday March 12th, 2012 - 09:22 PM

Grazie Luca se non era per i tuoi tutorial vagavo in rete senza speranza.. prendero un’altro kit e riprovero anche se stavolta prendero anche la shield ufficiale.

Grazie ancora Rott

Reply
mario Friday March 16th, 2012 - 12:06 PM

Come riferito qui da Luca:
attiviamo la libreria con il metodo begin(), passando come parametri la dimensione del buffer, il MAC address e il PIN di Arduino a cui è collegato il PIN ChipSelect del modulo (normalmente è il PIN 10, verificate la documentazione del vostro shield);

è possibile che alcuni shield o “minischede” non sia il PIN10 ma il PIN 8.
Provare per credere

Reply
Matteo Thursday June 14th, 2012 - 07:04 AM

Ciao Luca, complimenti per i tuoi ottimi tutorial.
Ho un modulo enc28j60 simile a quello visibile in foto, ma non riesco a farlo funzionare. Hai usato accorgimenti particolari per connettere i pin SPI ad arduino ( visto che lavorano a tensioni diverse) ?
Grazie
Matteo

Reply
luca Thursday June 14th, 2012 - 08:07 AM

Ciao Matteo,

in realtà sto utilizzando uno shield con il chip enc28j60; per la differenza di tensione di alimentazione puoi utilizzare un partitore resistivo oppure un circuito tipo questo: http://www.robot-italy.com/product_info.php?products_id=2508

fammi sapere se funziona!

Reply
Leonid Tuesday July 3rd, 2012 - 11:19 AM

qui c’è un esempio carino 🙂

http://jeelabs.org/2010/06/07/etherbbbreadboard/

Reply
luca Friday July 13th, 2012 - 07:29 PM

Ciao! Quello è proprio il sito ufficiale della libreria Ethercard… se guardi nello ZIP tra gli esempi inclusi un paio sono quelli di questo blog 😉

Reply
Jim Sunday July 22nd, 2012 - 07:30 PM

I bought the card pictured and downloaded from github. Renaming jcw-ethernet-xxxxxxx gives message “ethercard_test_1.cpp:3:23: error: EtherCard.h: No such file or directory
ethercard_test_1:5: error: ‘Ethernet’ has not been declared
ethercard_test_1.cpp: In function ‘void setup()’:
ethercard_test_1:12: error: ‘ether’ was not declared in this scope
ethercard_test_1:12: error: ‘Ethernet’ has not been declared
ethercard_test_1:15: error: ‘ether’ was not declared in this scope
ethercard_test_1.cpp: In function ‘void loop()’:
ethercard_test_1:21: error: ‘ether’ was not declared in this scope”. moving subdirectory EtherCard without renaming compiles and prints “PING demo” in serial monitor but gives a “request timed out” when I ping the IP address. All I changed is static byte myip[] = {192,168,0,10}; and Serial.begin(9600);.
I’m going through a Iogear wireless to ethernet adapter but my netbook works fine through it! Could it still be the problem?
Jim

Reply
luca Thursday August 2nd, 2012 - 08:35 AM

Hi Jim!

Are you pinging Arduino from a PC in the same subnet (192.168.0.x)? Are you able to ping other devices in the same network?
thanks!

Reply
lazyboy Saturday July 28th, 2012 - 01:58 PM

Hi!
Thanks for your informative blog posts about ENC28J60 and Arduino Uno. Trying to get the same setup working. Could you please verify the connections that you give here: http://arduino.cc/forum/index.php/topic,112444.msg845718.html#msg845718
Thanks a lot!
-lazyboy

Reply
luca Thursday August 2nd, 2012 - 08:38 AM

Hi!

I read that pescadito answered your post in Arduino forum, were you able to solve with the connections he suggested?

Reply
Frank Thursday September 13th, 2012 - 07:24 PM

Hi Luca!
I’m studing this library and I found that the socket used to browse a page never close after the page download is complete.

I mean the browseUrl() functions always open a new socket and do not close those that where used.

I’m trying to implement a raw socket, is the most simple network communication method, but I can’t close the used socket after the data is complete.

Have some ideas?
I think that keept opens socket will crash the application and the ENC.

Best Regards
Frank

Reply
luca Saturday September 22nd, 2012 - 02:30 PM

Hi Frank!

enc28j60 is different from wiznet chip (which can only keep 4 sockets open): all the tcp/ip stack is managed by Arduino’s library.
Ethercard library correctly sends a TCP FIN packet at the end of the request (open tcpip.cpp and have a look to packetLoop method).

bye

Reply
Marco Friday November 30th, 2012 - 07:29 PM

Ciao Luca
innanzitutto grazie per i tuoi esempi ,ma al momento ho riscontrato un problema :
caricando il programma al mio arduino mega , quando apro il serial monitor vedo Ping DEMO , ma niente altro , e facendo il ping , non ricevo mai una risposta , sempre host non raggiungibile .Pero’ se inverto i PIN SO e SI , vedo un errore failed access ethernet controller .Non capisco dove sia l’errore , ,tu cosa pensi che sia?
Grazie

Reply
luca Friday November 30th, 2012 - 08:05 PM

Ciao Marco,

l’errore è normale se i PIN non sono collegati correttamente… hai provato l’esempio in DHCP (seconda parte del tutorial)? In questo caso che cosa ti appare sul serial monitor?

Reply
Marco Saturday December 1st, 2012 - 01:24 AM

Ciao Luca
ho provato anche con la seconda parte del tutorial , ma il serial monitor si ferma a
DHCP Demo , da qui non si schioda .
Non ho idea di cosa possa fare o controllare

Reply
Marco Saturday December 1st, 2012 - 02:37 AM

Ciao Luca
ho trovato il problema : utilizzando un arduino Mega , il pin del chip select nel mio caso e’ il 53 !adesso funziona !grazie

Reply
luca Saturday December 1st, 2012 - 09:40 AM

ottimo!

Reply
Usama Sunday February 3rd, 2013 - 04:22 PM

Hi, I followed your example but I am getting this error message:

sketch_feb03a:3: error: ‘Ethernet’ has not been declared
sketch_feb03a.cpp: In function ‘void setup()’:
sketch_feb03a:10: error: ‘ether’ was not declared in this scope
sketch_feb03a:10: error: ‘Ethernet’ has not been declared
sketch_feb03a:13: error: ‘ether’ was not declared in this scope
sketch_feb03a.cpp: In function ‘void loop()’:
sketch_feb03a:19: error: ‘ether’ was not declared in this scope

any suggestion

Reply
luca Sunday February 3rd, 2013 - 09:24 PM

Hi! It seems you don’t have the Ethercard library installed… make sure:

– in the “libraries” folder of your Arduino installation you have an “EtherCard” folder containing files (EtherCard.cpp…)
– you closed and re-opened Arduino IDE after having installed the library

Reply
Usama Monday February 4th, 2013 - 08:57 PM

Hi Luca,

I have the library installed with EtherCard.cpp in it but the problem is still there.

Reply
luca Monday February 4th, 2013 - 09:10 PM

Hi! Did you include the library (#include ) on the top of your sketch?
In the “Examples” menu of the Arduino’s IDE do you find EtherCard examples? Try compiling one of them and let me know if you get the same errors…

Reply
Usama Monday February 4th, 2013 - 09:26 PM

yes, I copied your example then verified before uploading but I get the same error message. I even used the examples from EtherCard lib. but still nothing. I am getting this error:

pings:8: error: ‘Ethernet’ has not been declared
pings.cpp: In function ‘void gotPinged(byte*)’:
pings:13: error: ‘ether’ was not declared in this scope
pings.cpp: In function ‘void setup()’:
pings:20: error: ‘ether’ was not declared in this scope
pings:20: error: ‘Ethernet’ has not been declared
pings:22: error: ‘ether’ was not declared in this scope
pings:25: error: ‘ether’ was not declared in this scope
pings.cpp: In function ‘void loop()’:
pings:45: error: ‘ether’ was not declared in this scope

Lucasz Sunday February 3rd, 2013 - 05:39 PM

Hi
I try start my arduino mega 2560 with ENC28j60 module and I have a problem with communication with router-livebox 2.0 from Orange – router “sees” arduino (name: Arduino->=, IP address is given y DHCP and “sees” ENC’s MAC address). I tried with almost your examples, but anyone does not work….:(
I changed:
mac: 0xDE, 0xAD, 0xBE, 0xDE, 0xFE, 0xED
PIN: 53
buffer: 1500 – after changing this and first values, the router began to see Arduino.
Conectings:
VCC, GND
PIN 50: SO
PIN 51: SI
PIN 52: SCK
PIN 53: CS
Sometimes after uploading or reseting Arduino I get this:
DHCP Demo
Ethernet controller initialized
DHCP configuration done
IP Address: 192.168.1.14
Netmask: 255.255.255.0
Gateway: 192.168.1.1
But ping reports: destination host unreachable
After reseting Arduino:
DHCP Demo
Ethernet controller initialized
Failed to get configuration from DHCP
IP Address: 0.0.0.0
Netmask: 0.0.0.0
Gateway: 0.0.0.0
After second reset:
DHCP Demo
Ethernet controller initialized
Failed to get configuration from DHCP
IP Address: 0.0.0.0
Netmask: 255.255.255.0
Gateway: 192.168.1.1
PING:
Response from 192.168.1.13 (my computer’s IP): destination host unreachable
After third reset:
DHCP Demo
Ethernet controller initialized
DHCP configuration done
IP Address: 192.168.1.14
Netmask: 255.255.255.0
Gateway: 192.168.1.1
PING returns the same as the last…
Can anyone help?

Reply
luca Monday February 4th, 2013 - 05:03 PM

Hi Lucasz,

when your Arduino gets the correct IP address from DHCP, try – after ping – to find if your PC was able to resolve the mac address with the command “arp -a” and let me know the result

Reply
Get Your Arduino Online with an ENC28J60 By Nathan Hein Nathan Hein Saturday February 9th, 2013 - 09:40 AM

[…] for using the ENC28J60 (in Italian, Google Chrome will offer to translate) http://www.lucadentella.it/2012/02/12/enc28j60-e-arduino-1/2/ ~Nathan Hein Comments (0) Tags: arduino, enc28j60, EtherCard, ethernet, milestone, network, […]

Reply
Istrice Thursday February 14th, 2013 - 09:35 AM

Salve stavo cercando le stesse librerie per la ethercard enc28j da utilizzare però in bascom in quanto l’implementazione del codice con questo linguaggio comportava una maggiore facilità di scrittura e una sensibile riduzione di codice macchina da caricare sull’atmega328… qualche giorno fa girando fra i siti e i link vari avevo trovato chi si stava occupando del porting… purtroppo non ho salvato quella pagina e nemmeno il link… qualcuno ha informazioni in merito? grazie

Reply
Istrice Thursday February 14th, 2013 - 09:45 AM

…dimenticavo: lo shield montato e funzionante con enc28j è quello di futuranet (codice prodotto 8190-ETHSHIELDKIT) purtroppo la sola inclusione della libreria $ethercard utilizzando l’ide di arduino con qualche riga di codice e una striminzita pagina html che fa da server occupa già metà dei 30kbyte disponibili con l’atmega328-pu… per ulteriori sviluppi sarà quindi necessario aggiugere uno shield sdcard se si vuole implementare un minimo di database-sql e html decente …nell’attesa di trovare la libreria per bascom-avr mi sto occupando di generare codice html compresso inviando codice all’atmega via seriale il quale provvederà a creare le opportune pagine…
.

Reply
Altis Monday February 25th, 2013 - 10:07 AM

Hi Luca,
I tried the above code to test my enc28j60 shield…but am not getting the ping results..the connections to my arduino uno were as follows..VCC – 3.3V
GND – GND
SCK – Pin 13
SO – Pin 12
SI – Pin 11
CS – Pin 10
in the serial monitor of arduino IDE, am getting Ping demo..

Reply
Renato Aloi Thursday March 21st, 2013 - 08:30 PM

Hi!

Has EtherCard library same limitation as ETHER_28J60? That issue about sending only 1 packet sized 500K bytes?

Thanks,
Renato Aloi

Reply
luca Thursday March 21st, 2013 - 08:33 PM

Yes, the limit is about 500 bytes of payload.

Reply
hernan Thursday March 21st, 2013 - 10:00 PM

Ciao Luca, volevo chiederti se sapevi perchè quando faccio il ping dal prompt seguendo questo tutorial mi dice host non raggiungibile ed arriva un solo pacchetto e 3 li perde?
grazie.

Reply
luca Thursday March 21st, 2013 - 10:50 PM

ciao, stai usando esattamente lo sketch del tutorial?

Reply
hernan Friday March 22nd, 2013 - 11:12 AM

si, però ora ho risolto, ho ricontrollato la continuità dei connettori ed un filo era spezzato. L’ho sostituito ed ora funziona tutto perfettamente. Grazie per i tuoi tutorial mi risultano molto utili.

Reply
lisergio Tuesday April 9th, 2013 - 06:07 PM

Hi ! (sorry for may english, i´m spanish… )

I´m trying to connect Arduino UNO with ethernet card, to my iPhone , using NetIO App.

But don,t work…

i activate http protocol in the app, and add a button,
when press the button, the app send to arduino´s ip a message… ( i send a word… LED)..

i open a serial port, to print messages using…

#include

static byte mymac[] = {0xDD,0xDD,0xDD,0x00,0x00,0x01};
static byte myip[] = {192,168,1,100};
byte Ethernet::buffer[700];
static byte gwip[] = { 192,168,1,1 };

void setup () {

Serial.begin(9600);
}

void loop() {

word len = ether.packetReceive();
word pos = ether.packetLoop(len);

if(pos) {

Serial.print((char *)Ethernet::buffer + pos );
}
}

but don´t write anything… 🙁

i need to send , an special word to initialize ?

( using the led example, works fine )…

Reply
luca Friday April 12th, 2013 - 09:28 PM

Hi! The sketch seems ok! What happens if, instead of using the iPhone APP, you use the iPhone browser? Does Arduino print the received “GET” command?

Reply
Fabio Pulzi Friday April 12th, 2013 - 01:45 AM

Hello Luca, I`m here again commenting on your posts. I had an Arduino Duemilanove working perfect with an enc28j60 module, but in order to increase the project I bought an Arduino Mega 2650, I tried a lots of things but without success to have it working with the enc28j60 module, could you please help me ?

Reply
luca Friday April 12th, 2013 - 09:24 PM

Hi Fabio! The Arduino Mega has different PINs for SPI (the interface used to communicate with the enc28j60 chip), you need to compare the two pinouts and make the correct connections: you can’t simply insert the shield in the Mega.
Read this thread about the correct connections and let me know if it works for you!

Reply
Arednas Sunday May 26th, 2013 - 12:54 PM

Hi Luca,

When I use the default Webclient.ino script, it runs fine (using the http://www.google.com URL). When, however, I connect to a local machine (within the 10.0.0.x range), it fails to run. The callback function is never called.

My Internal DNS works fine, I can reach the local machines from my PC browsers, and pinging the arduino works also from other machines in my network.

Perhaps you can explain why this happens?

regards,
Arednas

Reply
luca Tuesday May 28th, 2013 - 04:33 PM

Hi Arednas,

it’s a very stange behavior… is the subnet mask configured in Arduino correct?

Reply
Raghavendra Friday June 7th, 2013 - 05:26 AM

Hello Luca,

ur tutorials have been quite informative so far. Ive worked on the likes of 8051, and the atmega series and this is the first time im working on an Arduino Uno board and hanrun ethernet controller….

**********Doubt*********

http://winkleink.blogspot.co.uk/2012/01/arduino-enc28j60-ethernet-module-part-2.html

The connection as this man says, the CS pin on most of the documented pages is pin10…

As this man says the library somehow allows the user to choose CS either at pin8 or pin10, where pin8 in Default… can u please confirm this…

My library is the Jeelabs one at Github but now the .zip package comes with a name EthernetMaster.

*********The Issue **********

Ive interfaced both arduino uno and enc28j60….

VCC – 3.3V
GND – GND
SCK – Pin 13
SO – Pin 12
SI – Pin 11
CS – Pin 8

Uploaded the sketch. Powered up the devices…
Im gettin nothing at the SerialScreen of arduino1.0 … But each time i press the reset button is get NonASCII values at the serialscreen of the IDE..

went on to ping the ip in CMD prompt all 4 packets failed to reach…

Checked the multimeter for Voltages, the ENC28j60 has some 2.6volts at SI pin…. when i press reset the Voltage drops to 0.1x …..

This is how far i have come till now, please shed some light ..!!

Peace LUCA

Reply
luca Saturday June 8th, 2013 - 12:36 PM

Hi Raghavendra,

if you’re using the EtherCard library, you can specify the CS pin in the begin() method: so if you use PIN8, you need to inizialize the library with the following code: ether.begin(sizeof Ethernet::buffer, mymac, 8)

Reply
Raghavendra Saturday June 8th, 2013 - 05:36 PM

caio luca….

reading all those comments in Italian i have somehow taught myself to understand it. quite a bit.. 🙂

i figured that out in the code, i changed it from 10 to 8 and vice versa and still got no ping response. all packets failed..

im not even gettin any thing on the SerialMoniter, just random not ASCII characters..

When i connect the Uno and Hanrun, a single LED blips on the ethernet controller and then nothing happens. Checked the LAN cable.

DO i need to connect the RESET pin on Hanrun to initialize SPI handshake.. Tomorrow is sunday and i dont want to return to college without making this run, so curious.. Plz help me out soon !

Thanks !

Reply
luca Monday June 10th, 2013 - 07:48 PM

Hi Raghavendra,

the issue with the SerialMonitor is very strange… did you correctly set the baud rate (it must be the same you configure in the setup())? Which sketch are you running?

Reply
claudio Monday June 10th, 2013 - 05:27 PM

Ciao Luca, ho installato sia su arduino mega 2650 che su arduino uno la scheda di rete (shield ethernet) fornita fa futura elettronica con il controllore enc28j60.
Ho controllato l’ardware ed anche i terminali coinvolti nella libreria enc28j60.h, tuttavia ho nell’applicazione _5_BasicServer.ino il seguente messaggio di errore durante il funzionamento del programma:

ethernet controller initialized
failed to get configuration from dhcp
ip address 0.0.0.0
netmask 0.0.0.0
gateway 0.0.0.0

hai qualche suggerimento?

Reply
luca Monday June 10th, 2013 - 07:46 PM

Ciao Claudio,

prova a caricare lo sketch 1, con gli IP statici, mettendo un IP (e subnet) compatibili con la tua rete e vedi se riesci in questo modo a pingare Arduino…

Reply
claudio Tuesday June 11th, 2013 - 11:13 AM

Ciao Luca buon pomeriggio,
ho provato l’esempio 1 ma aimè
nulla da fare mi dice che l’host non è raggiungibile

‘Destination Host Unreachable’

Reply
luca Thursday June 13th, 2013 - 11:35 AM

Ciao Claudio,

nel Serial Monitor di Arduino cosa vedi? L’init della ethercard ha esito positivo? Che IP/subnet hai configurato sul tuo PC e su Arduino?

Reply
lucky Monday June 17th, 2013 - 01:59 PM

Ciao Luca,
volevo sapere s’è posso utilizzare le librerie con ImageCraft.

Grazie!

Reply
luca Monday June 17th, 2013 - 09:11 PM

Ciao! teoricamente sì ma dovrai fare sicuramente qualche “adattamento” perché la libreria è scritta per essere compilata da AVR-GCC (il compilatore alla base dell’IDE di Arduino).

Reply
Kim Jessen Monday August 5th, 2013 - 02:49 PM

Hello
Good guidance and everything works really well.
I have a piece of code written for Arduino Ethernet. with the original libraries.
I would like to change the code so it work with ENC28J60.
Does anyone want to help, it is not long. I’ve even tried now for 2 days, but my skills are not good enough.

Reply
luca Tuesday August 6th, 2013 - 02:47 PM

Hi Kim,

send me a message using the contact form on the website…

Reply
Kim Jessen Thursday August 8th, 2013 - 12:01 PM

Hello Super thanks.
I’ve been away from my PC a few days hence this late reply.
You get something later.

Reply
Kim Jessen Sunday August 11th, 2013 - 10:57 AM

Hi Luca.
I’ve tried sending you several emails but I get a message that you can not receive them.
I have sent you 2 this morning, I write here, because if you do not receive mails then you should know that I receive your e-mails.

Reply
Rob Wednesday October 2nd, 2013 - 08:12 PM

Ciao Luca, ho recentemente acquistato un ethernet shield basato sul ENC28J60: è il Nano Ethernet shield della DK Electronics (sucuramente conoscerai..). Il punto è che funziona solo con la libreria Ethershield. Non sono stato in grado di farla funzionare con la EtherCard. Hai qualche suggerimento da darmi in proposito? Qualche modifica di cui non sono a conoscenza?
Grazie.

Reply
luca Thursday October 3rd, 2013 - 07:08 PM

Ciao Rob,

normalmente tutti gli shield vanno con questa libreria: il problema potrebbe essere solo sul PIN CS: mi pare che il tuo lo abbia collegato al PIN 10. Se esegui lo sketch basic ti funziona? Altrimenti altri shield hanno il CS sul PIN 8, in questo caso cambia la riga di init in:
if (ether.begin(sizeof Ethernet::buffer, mymac, 8) == 0)

Reply
Rob Friday October 4th, 2013 - 09:15 PM

Grazie per la risposta, Luca.
Purtroppo non funziona neanche il ping!
Sembra che si impalli in qualche modo: vedo la scritta Ping Demo sul monitor seriale, ma windows semplicemente non lo vede.
Aiutooooooooooo!!!!!!

Reply
marchx Sunday November 24th, 2013 - 04:57 PM

Ciao Luca, sono un neofita di Arduino ma ho seguito con interesse i tuoi tutorials sulle possibilità date dal collegamento a ethernet della stessa scheda. La mia idea sarebbe quella di realizzare un sistema di domotica, rilevando sensori analogici e attivando uscite digitali (eventualmente bidirezionali) mediante la comunicazione Ethernet tra due Arduino, collegate tra loro mediante due Powerline Ethernet (i segnali corrono sui fili dell’alimentazione AC della casa). Ti chiedo: è possibile far comunicare le due schede Arduino tra loro senza passare attraverso la creazione di un Web server e quindi passare attraverso due PC e un collegamento a Internet?
Se si mi puoi dare un suggerimento?

Reply
luca Wednesday November 27th, 2013 - 02:32 PM

Ciao

è assolutamente possibile! Arduino può fare sia da server TCP sia da client.

Reply
Frank Bretland Monday November 25th, 2013 - 09:19 PM

Luca, Thanks very much for a very informative tutorial. I’ve just started with Arduinos and have found it difficult to find documentation on the EtherCard library. Have you done any further tutorials on the next step in connecting to the internet i.e as a server or client or both.
regards

Reply
luca Tuesday November 26th, 2013 - 11:39 AM

Hi Frank, thanks for your feedback: on my website you can find some other tutorials about it!

Reply
marchx Sunday December 1st, 2013 - 10:35 PM

Grazie Luca della risposta. Avevo chiesto anche sul forum di Arduino ma senza avere nessuna risposta!
Quindi se mi puoi confermare si tratterebbe di collegare con cavo ethernet ciascuna scheda Arduino con relativa scheda con enc28j60 al Powerline relativo e ricevere il segnale ethernet dall’altra presa.
Il cavo ethernet è normale o cross?
Sulle due schede Arduino vanno impostati gli stessi indirizzi MAC e IP?
Grazie ciao

Reply
luca Monday December 2nd, 2013 - 09:38 AM

ciao! penso che il cavo debba essere normale: i powerlines sono una sorta di “switch” ethernet. I due arduino dovranno avere diversi MAC e IP. Gli IP dovranno appartenere alla stessa rete locale.

Reply
marchx Tuesday December 3rd, 2013 - 11:09 PM

Ciao Luca. Ti chiedo una conferma: poichè avrei bisogno di usare il pin 10 di Arduino per generare un PWM da quale ricavare il segnale di un’analogica inviata da una scheda all’altra, per impostare il CS della scheda Ethernet su un altro pin è sufficiente agire qua:
if (!ether.begin(sizeof Ethernet::buffer, mymac, 10))
e sostituire il 10 con ad es. 8 e quindi collegare il CS della scheda ENC28J60 al pin 8?
Oppure è legato alla libreria SPI?
Grazie

Reply
luca Wednesday December 4th, 2013 - 08:59 AM

ciao

teoricamente sì, è possibile utilizzare un altro PIN per CS come indichi tu. Tieni solo conto che il PIN 10 deve comunque essere utilizzato come output (nel tuo caso quindi dovrebbe andare bene) come spiegato qui: http://arduino.cc/en/Reference/SPI

Reply
marchx Sunday December 8th, 2013 - 02:25 PM

Ciao Luca. Grazie per la risposta. Volevo chiederti un parere. La mia idea è quella di realizzare una misura della potenza immessa in rete da parte di un inverter fotovoltaico, quindi inviare tale valore analogico tramite i Powerline come ti dicevo ad altre Smart Plug sempre connesse con i Powerlines in grado di ricreare il segnale atttraverso una PWM filtrata e gestire un carico attraverso l’accensione di uno o più rele’, in relazione a quanto il carico locale possa assorbire senza sforare il valore della potenza immesa in rete.
Secondo te con un sistema del genere sono in grado di avere una routine di gestione dell’Ethernet e di generazione del PWM tale da ricreare un segnale con banda passante di circa 100Hz? (I power lines hanno una banda di 200Mb/sec).
Ti chiedo troppo di farmi un esempio (o un tutorial) su come inserire l’acquisizione di segnali analogici e/o digitali da inviare su Ethernet e poi ricavarli dall’altra scheda Arduino?
Bisogna passare attraverso la creazione di un Array che poi va inviato e ricevuto?
Grazie e scusa per essermi dilungato.

Reply
luca Monday December 16th, 2013 - 02:18 PM

Ciao

se ho capito bene tu vuoi far comunicare via powerline due Arduino, uno che invia un valore (potenza immessa in rete) e uno che riceve tale valore e – in base a una soglia – attiva/disattiva un carico? non capisco bene la parte del PWM?

Reply
marchx Tuesday December 17th, 2013 - 10:18 PM

Ciao Luca. Con i PWM volevo ricrearmi, previo filtraggio con doppia cella, un segnale analogico pari a quello della potenza assorbibile dalla linea per un possibile anello di regolazione di potenza su un inverter, il tutto in analogico.
Ma se mi accontento di fare dei salti di potenza senza uno sfruttamento totale della potenza disponibile, allora posso semplicemente comandare dei relè o triac.
Mi dai un input su come fare per inviare dati o riceverli sui due Arduino?

Reply
marchx Saturday December 21st, 2013 - 04:05 PM

Ciao. Ti aggiorno sull’andamento dei miei test preliminari. Ho montato due schede ENC28J60, le ho pingate e mi rispondono correttamente. Ora ho provato la libreria UIPEthernet con l’esempio del WebServer: al primo colpo dal browser ho visualizzato le uscite analogiche (variando la tensione sugli ingressi con potenziometri si vedevano aggiornati i valori fino a 1023). Quindi ho provato a ridurre i tempi di aggiornamento della pagina, modificando la linea “”) in 1 o 0.1 (suppongo siano i secondi). A un certo punto la seriale ha smesso di mostrarmi i dati, non c’è più attività sull’Ethernet (led giallo spento) e la seriale, ad ogni reset dell’Arduino mi dà “server is at 0.0.0.0”.
Io sto collegando la schedina ad una porta di un Modem Alice Adsl mentre l’altra porta è connessa al PC. Dove sto sbagliando e perchè al primo colpo il tutto funzionava mentre poi si è bloccato?

Reply
luca Monday December 23rd, 2013 - 08:43 AM

ciao

sembra che il modem Alice non stia più assegnando l’indirizzo IP alla scheda… prova a riavviarlo

Reply
marchx Wednesday January 1st, 2014 - 11:06 PM

Ciao Luca. Il problema della gestione del DHCP dal modem ADSL l’ho evitato collegando con un cavo cross le due schedine con l’ENC28J60 e utilizzando la libreria UIPEthernet, implementando e adattando i due esempi di TCP Client e TCP Server.
Le due schedine funzionano e scambiano i byte delle stringhe ma dopo un certo tempo di funzionamento, il Client mi da’ Client connect failed: per farlo ripartire devo resettare il uP relativo. Pensavo potesse essere un effetto di saturazione della memoria (in compilazione arrivo a 22kB) e volevo implementare lo stesso funzionamento con la libreria EtherCard per verificare se fosse in grado di essere più efficiente e quindi occupandomi meno memoria.
Il problema e che non so come creare gli oggetti Client e Server con la EtherCard. Riesci a instradarmi in qualche modo?
Grazie.

Reply
luca Tuesday January 14th, 2014 - 07:44 PM

Ciao

guarda i miei tutorial: ci sono esempi sia di come scrivere un “server“, sia di come fare un “client“…

Reply
Valerio B. Saturday February 8th, 2014 - 06:24 PM

Salve signor Dentella.
Vorrei realizzare un progetto con questo modulo
ethernet e, prima che ne acquisti uno, ho provato a caricarne la libreria seguendo questo tutorial. Ho ripetuto più e più volte la procedura, estraendo la cartella zip nella cartella “libraries” e rinominandola “EtherCard”. Fin qui tutto bene. Il problema sorge quando vado ad importare questa libreria da Arduino. Mi appaiono le scritte:

#include
#include
#include

Tuttavia non vi è traccia del classico evidenziamento color arancio che si ha caricando una qualsiasi altra libreria; inoltre, se provo a compilare lo sketch, riporta l’errore ‘uint8_t’.
Ho provato sia con la versione 1.0.5 di Arduino che con la 1.0 ed ho provato anche con la libreria del tutorial numero 16, ma nulla da fare.
Caricando una qualsiasi altra libreria di Arduino (o anche una libreria scaricata e importata seguendo la medesima procedura) non ho alcun problema e riesco a compilare.

La ringrazio per l’attenzione. Sarei molto contento di riuscire a realizzare il mio progetto seguendo i suoi tutorial.

Reply
luca Wednesday February 12th, 2014 - 05:09 PM

ciao Valerio,

mi mandi l’errore completo? Mi preoccupa di più della mancata “colorazione” degli include…

Reply
Valerio B. Friday February 14th, 2014 - 04:33 PM

Ciao.
L’errore mi appare quando, dopo aver caricato la libreria, compilo lo sketch lasciando vuoto il “void setup” ed il”void loop”; se invece carico uno dei codici di esempio della libreria oppure il codice riportato in questo stesso tutorial riesco a compilare correttamente senza alcun errore, però gli include non sono comunque evidenziati. Ecco l’errore completo:

In file included from sketch_feb14a.ino:1:
C:\Program Files\Arduino\libraries\EtherCard/enc28j60.h:18: error: ‘uint8_t’ does not name a type
C:\Program Files\Arduino\libraries\EtherCard/enc28j60.h:19: error: ‘uint16_t’ does not name a type
C:\Program Files\Arduino\libraries\EtherCard/enc28j60.h:21: error: ISO C++ forbids declaration of ‘uint8_t’ with no type
C:\Program Files\Arduino\libraries\EtherCard/enc28j60.h:21: error: expected ‘;’ before ‘*’ token
C:\Program Files\Arduino\libraries\EtherCard/enc28j60.h:23: error: expected `;’ before ‘static’
C:\Program Files\Arduino\libraries\EtherCard/enc28j60.h:24: error: ‘uint8_t’ does not name a type
C:\Program Files\Arduino\libraries\EtherCard/enc28j60.h:28: error: ‘uint16_t’ has not been declared
C:\Program Files\Arduino\libraries\EtherCard/enc28j60.h:29: error: ‘uint16_t’ does not name a type
C:\Program Files\Arduino\libraries\EtherCard/enc28j60.h:31: error: ‘uint8_t’ has not been declared
C:\Program Files\Arduino\libraries\EtherCard/enc28j60.h:31: error: expected ‘,’ or ‘…’ before ‘*’ token
C:\Program Files\Arduino\libraries\EtherCard/enc28j60.h:31: error: ISO C++ forbids declaration of ‘uint8_t’ with no type
C:\Program Files\Arduino\libraries\EtherCard/enc28j60.h:32: error: ‘uint8_t’ has not been declared
C:\Program Files\Arduino\libraries\EtherCard/enc28j60.h:32: error: ‘uint8_t’ has not been declared
C:\Program Files\Arduino\libraries\EtherCard/enc28j60.h:33: error: ‘uint8_t’ does not name a type
C:\Program Files\Arduino\libraries\EtherCard/enc28j60.h:41: error: ‘uint8_t’ does not name a type

Reply
Edward Tang Thursday February 20th, 2014 - 04:22 PM

Can you please tell me the pin connections of arduino and the enc28j60 module?

Reply
luca Sunday March 2nd, 2014 - 01:47 PM

Hi Edward

basically it’s connected using SPI, you can use one of the schematics available on the Internet:
http://claudiuradu.blogspot.it/2013/05/low-cost-ethernet-shield-with-enc28j60.html

Reply
Valerio B. Friday March 7th, 2014 - 06:35 PM

Salve. Ho acquistato il modulo ma non riesco a far funzionare nessuno dei suoi sketch, pur riuscendo a caricarli correttamente. Ad esempio, quando vado a fare il ping di questo primo esempio mi appare la scritta “host di destinazione non raggiungibile” nel prompt dei comandi; se invece carico lo sketch di esempio “pings” contenuto nella libreria EtherCard (quindi non il suo esempio) riesco a fare il ping correttamente.
Lo stesso vale per il secondo step del tutorial (DHCP): con gli esempi della libreria riesco ad ottenere il funzionamento corretto e mi viene assegnato in automatico un indirizzo IP che viene scritto sul serial monitor; mentre col suo sketch sul serial monitor mi appare solamente la scritta “DHCP Demo” e nient’altro.
Sono anche riuscito anche a comandare l’accensione e lo spegnimento di un led con uno sketch preso in rete, ma non riesco proprio a far funzionare nessuno dei suoi codici.
Potrebbe gentilmente aiutarmi? I suoi tutorial sono molto esaustivi e vorrei seguirli passo per passo, ma per ora sono bloccato. Grazie.

Reply
Víctor Calderón Monday March 10th, 2014 - 05:50 PM

Hi Luca, I congratulate you on your site. I am following your tutorials using the ENC28J60 and was implementing the first lesson. I downloaded the libraries from GitHub as indicated by your site. I have imported the libraries into the Arduino software.

When I compile the example, shown me the errors below both Windows 7 and Ubuntu 13.04:

Windows 7:
core.a(main.cpp.o) In function `main’
CProgram FilesArduinohardwarearduinocoresarduinomain.cpp11 undefined reference to `setup’
CProgram FilesArduinohardwarearduinocoresarduinomain.cpp14 undefined reference to `loop’

Ubuntu 13.04:
/home/victor/sketchbook/libraries/EtherCard/tcpip.cpp: In static member function ‘static void EtherCard::browseUrl(prog_char*, const char*, prog_char*, void (*)(byte, word, word))’:
/home/victor/sketchbook/libraries/EtherCard/tcpip.cpp:521:81: error: invalid conversion from ‘const char*’ to ‘prog_char* {aka char*}’ [-fpermissive]
In file included from /home/victor/sketchbook/libraries/EtherCard/tcpip.cpp:14:0:
/home/victor/sketchbook/libraries/EtherCard/EtherCard.h:170:15: error: initializing argument 4 of ‘static void EtherCard::browseUrl(prog_char*, const char*, prog_char*, prog_char*, void (*)(uint8_t, uint16_t, uint16_t))’ [-fpermissive]

The error appears if the sketchbook is as unique line program # include

I will appreciate if you can specify the library employee ethercard-master.zip that is the one that is currently in effect and with which I have the problem, because of which you are using in the example is not the same jcw-ethercard-3b6c094.

Thank you,

Reply
luca Saturday March 15th, 2014 - 10:42 AM

Hi Victor

The library is correct: “master” is the latest version and you should use that.
Are you compiling the example I provided or a sketch you wrote?

Reply
Victor Calderón Saturday March 15th, 2014 - 05:51 PM

Hi Luca
Thanks for your assistance. In the following link I have uploaded some screenshots from my pc compiling the example:

https://www.mediafire.com/?kb1k7jvm3f0cpec

I appreciate you indicate if I’m doing something wrong.

Thank you

Reply
luca Saturday March 22nd, 2014 - 03:04 PM

Hi Victor… mmm it seems a weird compiler problem.. are you using the latest version of the ethercard library?

Reply
Víctor Sunday August 17th, 2014 - 10:27 PM

I found the solution to my problem, this link http://jeelabs.net/issues/466
Patch file (patch.diff) should be applied to the library EtherCard.h
Thanks for your assistance

Gianluca Friday April 4th, 2014 - 01:55 PM

Ciao Luca,
Sto provando la libreria uIPEthernet compatibile per arduino DUE. Quando compilo gli esempi non mi da nessun errore ma quando vado a vedere se nella rete e presente la scheda non trovo niente, ho provato anche a fargli assegnare l’ip dal dhcp ma nenache funziona. Sapresti aiutarmi

Reply
luca Sunday April 13th, 2014 - 07:38 PM

Ciao Gianluca: quale shield stai usando?

Reply
Rodrigo Tuesday April 8th, 2014 - 11:24 PM

I’m trying to connect ENC28J60 to internet on top of a motor shield (http://www.elechouse.com/elechouse/index.php?main_page=product_info&cPath=100_146&products_id=2179) pin 8 used by the shield, is there any change to change the CS signal from pin 8 to pin 10

Reply
luca Sunday April 13th, 2014 - 07:33 PM

Hi Rodrigo,

yes, you can use a shield for that (example the Go-Between Shield by SparkFun).

Reply
enrico Tuesday April 29th, 2014 - 06:45 PM

caro luca.. lo sketch non e completo…

Reply
luca Tuesday April 29th, 2014 - 08:58 PM

ciao enrico, in che senso? compila, funziona…

Reply
Danilo Wednesday August 20th, 2014 - 07:50 PM

Ciao luca potresti dirmi come collegare la scheda enc28j60 ad arduino mega 2560 ????

Reply
luca Monday August 25th, 2014 - 07:54 AM Reply
Michal Thursday January 15th, 2015 - 07:20 AM

Hi, a have a little problem… My router don’t recognize Arduino and i can’t connect to it 🙁 I have Ethernet Shield 1.1 from dealextreme, and i see only power led… But no blinking led on router, no blinking led on ethernet port. Can you help me? 🙁

Reply
luca Thursday January 15th, 2015 - 08:31 PM

Hi Michal,

the ethernet port should have two leds, one for the “medium link” and one for the activity… if both are off, you’ve a problem: check the cable, try changing the ethernet port on the router side… the worst case is that your shield is broken

Reply
alexdi Friday March 20th, 2015 - 07:58 PM

Luca ciao e grazie per questi articoli veramente ben fatti. 2 mesi fa circa un amico mi ha regalato un Arduino Uno R3 compatibile (ergo cinese). Poi vedo i tuoi articoli e mi compro (in italia) la schedina di rete di cui parli ma per farla “pingare” ho sofferto le pene dell’ inferno. perchè? VCC – 3.3V e cioè collegavo il VCC della scheda al 3,3 v di arduino (come riportato in credo tutte le documentazioni) e non cera verso. Collegato al 5v di arduino va benissimo. Arduino è alimentato attraverso USB del PC. Scusa la mia ignoranza ma volevo togliermi questa curiosità.

Reply
luca Saturday March 21st, 2015 - 08:05 PM

Ciao, grazie per il tuo feedback… è possibile che la schedina abbia incluso un regolatore di tensione e di livelli per renderla compatibile con circuiti a 5V e che quindi “ci pensi lei” ad adattare poi la tensione a 3.3V per il chip.

Reply
alexdi Tuesday March 24th, 2015 - 09:24 PM

Grazie per la risposta Luca. In effetti avevo letto qualcosa in giro ma non pensavo fosse il mio caso. Ad ogni modo notavo che si accendeva solo i led del power della schedina ma nessun led nella presa rj. Grazie ancora per questi tutorials. Sono una manna dal cielo !

Reply
Giovanni Thursday May 21st, 2015 - 07:13 PM

Luca buonasera…. sono partito dall’inizio ma mi esce questo errore in fase di caricamento della libreria:

Arduino:1.6.4 (Windows 7), Scheda:”Arduino Uno”

ka04_sample_code_2.ino: In function ‘void setup()’:
ka04_sample_code_2:30: error: ‘class EtherCard’ has no member named ‘mymask’
‘class EtherCard’ has no member named ‘mymask’

AIUTO…. Cosa ho combinato?….

Grazie….
Giovanni

Reply
luca Saturday May 23rd, 2015 - 11:57 AM

Ciao Giovanni, sostituisci “mymask” con “netmask” e dovrebbe andare… da dove hai preso quel ka04_sample_code_2.ino? non è un mio sketch…

Reply
Fuji Monday June 8th, 2015 - 09:21 PM

Ciao Luca, ho scaricato la libreria e rinominata, tuttavia quando compilo il codice mi dice ‘Ethernet’ is not a class or namespace… Come posso risolvere? vorrei seguire anche le altre guide :).. seconda domanda: posso utilizzare gli stessi codici con la Ethernet Shield dell’arduino?

Reply
luca Tuesday June 9th, 2015 - 07:38 AM

Ciao, quell’errore indica che la libreria non è stata correttamente riconosciuta dall’IDE: controlla che sia nel path giusto e riavvia l’IDE se già non l’hai fatto. Questi esempi non sono compatibili con lo shield ethernet ufficiale.

Reply
Nik Monday August 31st, 2015 - 04:38 PM

Ciao Luca, all’inizializzazione del modulo con indirizzo statico mi da un errore:

if (ether.begin(sizeof Ethernet::buffer, mymac,53) == 0)
Serial.println( “Failed to access Ethernet controller”);

ma in realtà il modulo funziona correttamente, qualche idea?

Reply
luca Wednesday September 2nd, 2015 - 10:13 PM

Ciao Nik, strano… se quell’istruzione non va (ritorna zero) significa che la libreria non riesce proprio a parlare con il chip enc28j60…

Reply
Mauro Tuesday December 8th, 2015 - 10:25 AM

Ciao Luca, vedo che hai fatto una grande esperienza sul ENC28J60. Io sto tentando di avviarlo con Arduino Due e tutte le librerie finora provate non funzionano al volo. Tu hai mai provato qualcosa con il DUE?

Reply
luca Thursday December 10th, 2015 - 02:41 PM

ciao Mauro, purtroppo no… non ho esprerienza diretta con quell’Arduino. Essendo su bus SPI non basta eventualmente cambiare i PIN usati dalla libreria?

Reply
Alessandro Thursday December 24th, 2015 - 07:13 PM

Ciao Luca, sto tentando di pingare il mio ENC28J60 montato su mega 2560 e collegato ad un netgear dgn2000 senza nessun buon risultato. l’output è “Destinazione non raggiungibile”. Ho controllato se il dispositivo riesce ad ottenere il gateway e il dns e ho scoperto che sono 0.0.0.0, ho provato anche lo sketch testDHCP ma non funziona nemmeno con il server DHCP. Secondo te quale problema può essere? Ho già inserito il pin 53 nel codice.
P.S. con la libreria UIPEthernet riesco a ottenere gateway, dns e netmask solo se imposto staticamente l’IP ma il risultato finale non cambia.

Reply
Alessandro Saturday December 26th, 2015 - 12:08 PM

Ho un aggiornamento: con il mio vecchio (10 anni fa) modem funziona tutto.

Reply
enc28J60 and Arduino (16) | LinkSprite Learning Center Tuesday June 21st, 2016 - 02:38 AM

[…] the examples I wrote uses the Ethercard library by JeeLabs – in my first post I also explained how to install it in your […]

Reply
Virgilio Friday July 1st, 2016 - 12:52 PM

Ciao Luca, complimenti per gli articoli pubblicati sulla scheda ENC28J60. sto realizzando un progetto in cui la scheda arduino si dovrebbe collegare ad un server Telnet per inviare alcuni comandi.
Negli esempi disponibili non trovo qualcosa di simile ma solo la realizzazione di server e non di client.
Mi potresti dare qualche dritta ?
Grazie Mille.

Reply
luca Monday July 25th, 2016 - 09:31 AM

guarda gli esempi pubblicati insieme alla libreria… oppure il mio esempio relativo alla comunicazione verso una applicazione c#

Reply
sergio Tuesday August 30th, 2016 - 08:11 PM

hello, thank you for developing this library. she is perfect for me.

Can you help me? I am using the example WebClient.
But I have no idea how to make him write a url in my bunch of data, eg:

http://10.50.10.206:8095/arduino/salvardados.php?sensor1=5&sensor2=5&sensor3=5

To write in a bunch of data.

Reply
tom Saturday March 4th, 2017 - 04:48 PM

Ciao Luca,
probabilmente puoi risolvere una mia curiosità.
I numeri nella forma XX/YY che appaiono come ultima riga sull’etichetta di questo tipo di schede (nell’immagine di questo articolo sono 10/25) cosa stanno a significare? Scusa la domanda sciocca ma anche cercando in google non sono stato in grado di trovare risposta…
Grazie per la cortesia.

Reply
luca Monday March 6th, 2017 - 08:59 AM

ciao, dovrebbe essere solo un numero che indica il “lotto” di produzione di quel connettore (della Hanrun).

Reply
stefania Tuesday April 11th, 2017 - 03:58 PM

Ciao!
tutorial molto chiaro, ma nel momento incui carico la libreria come descritto mi dice che non è valida…

Reply
Roberto Thursday December 21st, 2017 - 04:37 AM

Hello luca, (apologize for English, I’m Spanish).
I write the code as is, and verified that I am connected to the same subnet, plus I have done other tests with the examples of the “ethernet” library and I have no problem (so I deduce that the shield is not bad). But when I want to ping, I see “destination host inaccessible”. I think I have a problem with the “ethercard” library. I hope you can help me, Thanks.

Reply
luca Thursday December 21st, 2017 - 08:47 AM

Hi Roberto, try changing the mac address… which is the example that works?

Reply
andrea Tuesday March 13th, 2018 - 02:16 PM

Buongiorno,

Mi sto approcciando a questo mondo e volevo usare arduino per svegliare il portatile, ho trovato delle scield da mettere su arduino nano, secondo voi vanno bene?

Grazie a tutti

Reply
luca Wednesday March 14th, 2018 - 10:27 AM

ciao Andrea, pensi di usare la funzionalità di Wake On LAN? Se non dici che shield vuoi usare è difficile rispondere…

Reply
Nicola Thursday April 26th, 2018 - 09:23 AM

Ciao, mi sono imbattuto nel tuo sito cercando di risolvere un problema con enc28J60, ho provato vari esempi con arduino ma il modulo sembra non funzionare, si accende la spia rossa del corretto funzionamento e collegando un cavo di rete le due spie verdo fisso e giallo lampeggiante, ma quando ho cercato di utilizzarlo non ha mai funzionato. Anche eseguendo un ping all’indirizzo 192.168.1.10 mi restituisce come risposta “richiesta scaduta e poi pacchetti trasmessi 4 ricevuti 0 100% persi. Ti volevo chiedere se e’ per te e’ un problema di scheda non funzionante o sono io che sbaglio in qualcosa visto che non sono molto pratico con le schede di rete. Inoltre tra le periferiche di sistema non compare la scheda ti chiedo se deve essere presente o non in quanto quando la connetto non mi chiede nessuna installazione dei driver. Grazie.

Reply
luca Thursday April 26th, 2018 - 02:15 PM

ciao Nicola… non capisco bene la parte delle periferiche: tu colleghi con un cavo direttamente il tuo PC alla scheda enc28j60? Questa non si comporta come una periferica per il PC ma come un “secondo PC”. Normalmente dovresti usare uno switch o hub per collegare il PC ad Arduino, a meno che il cavo di rete che utilizzi sia “cross” (o che il tuo PC sia in grado di fare l’auto MDI-X)

Reply
Nicola Thursday April 26th, 2018 - 02:31 PM

Ho provato sia a collegare l’ enc28j60 ad un hub di rete, dove le trae periferiche funzionano, sia a collagarlo con un cavo di rete direttamente dal router, il risulato e’ sempre lo stesso non funziona, visto che l’enc28j60 e’ stato acquistato ad una mostra di elettronica, chiaramente e’ nuovo e non usato, ho i miei dubbi che funzioni alla perfezione, vorrei sapere come fare a testarlo per togliermi i dubbi. Chiaramente il cavo di rete non e’ cross.
Grazie.

Reply
luca Thursday April 26th, 2018 - 04:16 PM

se lo sketch non ti da errore, significa che almeno Arduino riesce a dialogare con il chip enc28j60. Se il ping non va, prova a fare “arp -a” sul tuo PC e vedi se almeno ti risolve il MAC address… se anche questo non va è probabile che il chip sia danneggiato nella parte di comunicazione ethernet.

Reply
Nicola Thursday April 26th, 2018 - 04:35 PM

Arduino non da errori ma carica lo sketch senza problemi, ho fatto eseguire quello da te proposto.
:#include
static byte mymac[] = {0xDD,0xDD,0xDD,0x00,0x00,0x01};
static byte myip[] = {192,168,1,10};
byte Ethernet::buffer[700];

void setup () {

Serial.begin(57600);
Serial.println(“PING Demo”);

if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0)
Serial.println( “Failed to access Ethernet controller”);

if (!ether.staticSetup(myip))
Serial.println(“Failed to set IP address”);
}

void loop() {

ether.packetLoop(ether.packetReceive());
}

ecco inoltre il risultato di arp -a:

Interfaccia: 192.168.178.74 — 0xd7
Indirizzo Internet Indirizzo fisico Tipo
192.168.178.1 38-10-d5-72-13-27 dinamico
192.168.178.255 ff-ff-ff-ff-ff-ff statico
224.0.0.22 01-00-5e-00-00-16 statico
224.0.0.251 01-00-5e-00-00-fb statico
224.0.0.252 01-00-5e-00-00-fc statico
239.255.255.250 01-00-5e-7f-ff-fa statico
255.255.255.255 ff-ff-ff-ff-ff-ff statico

Interfaccia: 169.254.49.81 — 0xdd
Indirizzo Internet Indirizzo fisico Tipo
169.254.255.255 ff-ff-ff-ff-ff-ff statico
224.0.0.22 01-00-5e-00-00-16 statico
224.0.0.251 01-00-5e-00-00-fb statico
224.0.0.252 01-00-5e-00-00-fc statico
239.255.255.250 01-00-5e-7f-ff-fa statico
255.255.255.255 ff-ff-ff-ff-ff-ff statico

Interfaccia: 192.168.153.1 — 0xdf
Indirizzo Internet Indirizzo fisico Tipo
192.168.153.254 00-50-56-ec-40-cc dinamico
192.168.153.255 ff-ff-ff-ff-ff-ff statico
224.0.0.22 01-00-5e-00-00-16 statico
224.0.0.251 01-00-5e-00-00-fb statico
224.0.0.252 01-00-5e-00-00-fc statico
239.255.255.250 01-00-5e-7f-ff-fa statico
255.255.255.255 ff-ff-ff-ff-ff-ff statico

Interfaccia: 192.168.78.1 — 0xe0
Indirizzo Internet Indirizzo fisico Tipo
192.168.78.254 00-50-56-e9-b0-78 dinamico
192.168.78.255 ff-ff-ff-ff-ff-ff statico
224.0.0.22 01-00-5e-00-00-16 statico
224.0.0.251 01-00-5e-00-00-fb statico
224.0.0.252 01-00-5e-00-00-fc statico
239.255.255.250 01-00-5e-7f-ff-fa statico
255.255.255.255 ff-ff-ff-ff-ff-ff statico

Reply
86ktm Thursday May 3rd, 2018 - 06:23 AM

prova così

#include
static byte mymac[] = {0x86,0x86,0x86,0x86,0x86,0x86};
static byte myip[] = {192,168,1,101};
byte Ethernet::buffer[700];

void setup () {

Serial.begin(9600);
Serial.println(“PING Demo”);

if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
Serial.println( “Failed to access Ethernet controller”);

if (!ether.staticSetup(myip))
Serial.println(“Failed to set IP address”);
}

void loop() {

ether.packetLoop(ether.packetReceive());
}

Reply
86ktm Thursday May 3rd, 2018 - 06:26 AM

il tuo problema potrebbe essere indirizzo mac. alcuni router capiscono che non può esistere e non lo digeriscono.

Io collego CS su pin 8, e correggo la riga if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)

prova

Reply

Leave a Reply to Edward Tang Cancel Reply

17 − 12 =