With the following post, I’m going to start a tutorial about how to use enc28j60 Ethernet controller with Arduino.
Introduction
Arduino’s official Ethernet shield is based on Wiznet W5100 microchip and Ethernet libraries in Arduino’s IDE also works for that chip: http://arduino.cc/en/Reference/Ethernet
A widely used Ethernet controller is Microchip’s enc28j60: in Internet you can find shields or breakout boards for that chip, usually cheaper than the official one.
Testato correctly suggested me to add a note about the differences between the two controller: the main differece, that surely was the reason why Arduino team chose W5100 chip, is that this controller implements in hardware all the TCP/IP stack, saving MCU resources.
Library
Some companies and hobbists developed Arduino libraries for Microchip’s controller; I’m going to use for these tutorials the EtherCard library by JeeLabs Café.
JeeLabs published its library on GitHub; first download the latest version in a ZIP file:
Open the main folder where Arduino’s IDE is installed (usually C:\arduino-1.0) and decompress the downloaded file into libraries subfolder. In ZIP archive, all the library files are in a folder named “jcw-ethercard-xxx“: rename that folder EtherCard:
Run IDE and check if the library is available:
Network parameters
Before connecting Ethernet shield to the net, you need some parameters:
- MAC address, is a 48bit number that univocally identify each device in the net. Every company that produces network devices owns a code (OUI) that rappresents the address’ first 24bits;
- IP address, is a 32bit number (IPv4) that identify the device in the local network;
- Subnet mask is a 32bit number that allows devices to know if another device belongs to the same local network;
- (usually) gateway is the IP address assigned to a device (router…) that allows to reach devices in different networks.
You need to choose a MAC address not alredy used in your network… in the examples we usually choose MAC addresses with a not already assigned organization code (es. DD-DD-DD).
IP parameters (address, subnet, gateway) have to be consistent with the ones configured to other devices in your local network: an unique IP address and the same subnet mask and gateway.
Sometimes a DHCP server is available, that automatically configures new devices in the network: in a next example I’m going to show how to use this with Arduino.
In the netxt page, you’ll write your first network sketch…
Ciao Luca, articolo molto interessante l’ho twittato per farlo leggere ad altri appassionati Arduino.
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
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 😉
Dove hai preso la shield con ENC ???
Grazie
Ciao
eBay…
Ok cerco anch’io Grazie
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.
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.
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
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.
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?
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
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?
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.
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
Ciao Giovanni,
anche tu con un modulo di Futura Elettronica? Anche a te non appare nulla?
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
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
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
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
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
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!
qui c’è un esempio carino 🙂
http://jeelabs.org/2010/06/07/etherbbbreadboard/
Ciao! Quello è proprio il sito ufficiale della libreria Ethercard… se guardi nello ZIP tra gli esempi inclusi un paio sono quelli di questo blog 😉
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
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!
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
Hi!
I read that pescadito answered your post in Arduino forum, were you able to solve with the connections he suggested?
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
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
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
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?
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
Ciao Luca
ho trovato il problema : utilizzando un arduino Mega , il pin del chip select nel mio caso e’ il 53 !adesso funziona !grazie
ottimo!
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
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
Hi Luca,
I have the library installed with EtherCard.cpp in it but the problem is still there.
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…
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
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?
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
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
…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…
.
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..
Hi!
Has EtherCard library same limitation as ETHER_28J60? That issue about sending only 1 packet sized 500K bytes?
Thanks,
Renato Aloi
Yes, the limit is about 500 bytes of payload.
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.
ciao, stai usando esattamente lo sketch del tutorial?
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.
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 )…
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?
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 ?
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!
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
Hi Arednas,
it’s a very stange behavior… is the subnet mask configured in Arduino correct?
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
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)
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 !
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?
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?
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…
Ciao Luca buon pomeriggio,
ho provato l’esempio 1 ma aimè
nulla da fare mi dice che l’host non è raggiungibile
‘Destination Host Unreachable’
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?
Ciao Luca,
volevo sapere s’è posso utilizzare le librerie con ImageCraft.
Grazie!
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).
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.
Hi Kim,
send me a message using the contact form on the website…
Hello Super thanks.
I’ve been away from my PC a few days hence this late reply.
You get something later.
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.
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.
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)
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!!!!!!
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?
Ciao
è assolutamente possibile! Arduino può fare sia da server TCP sia da client.
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
Hi Frank, thanks for your feedback: on my website you can find some other tutorials about it!
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
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.
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
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
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.
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?
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?
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?
ciao
sembra che il modem Alice non stia più assegnando l’indirizzo IP alla scheda… prova a riavviarlo
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.
Ciao
guarda i miei tutorial: ci sono esempi sia di come scrivere un “server“, sia di come fare un “client“…
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.
ciao Valerio,
mi mandi l’errore completo? Mi preoccupa di più della mancata “colorazione” degli include…
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
Can you please tell me the pin connections of arduino and the enc28j60 module?
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
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.
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,
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?
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
Hi Victor… mmm it seems a weird compiler problem.. are you using the latest version of the ethercard library?
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
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
Ciao Gianluca: quale shield stai usando?
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
Hi Rodrigo,
yes, you can use a shield for that (example the Go-Between Shield by SparkFun).
caro luca.. lo sketch non e completo…
ciao enrico, in che senso? compila, funziona…
Ciao luca potresti dirmi come collegare la scheda enc28j60 ad arduino mega 2560 ????
Ciao Danilo
ti rimando a questo blogpost che spiega bene: http://en.code-bude.net/2013/06/22/how-to-use-enc28j60-ethernet-shield-with-arduino-mega-2560/
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? 🙁
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
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à.
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.
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 !
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
Ciao Giovanni, sostituisci “mymask” con “netmask” e dovrebbe andare… da dove hai preso quel ka04_sample_code_2.ino? non è un mio sketch…
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?
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.
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?
Ciao Nik, strano… se quell’istruzione non va (ritorna zero) significa che la libreria non riesce proprio a parlare con il chip enc28j60…
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?
ciao Mauro, purtroppo no… non ho esprerienza diretta con quell’Arduino. Essendo su bus SPI non basta eventualmente cambiare i PIN usati dalla libreria?
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.
Ho un aggiornamento: con il mio vecchio (10 anni fa) modem funziona tutto.
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.
guarda gli esempi pubblicati insieme alla libreria… oppure il mio esempio relativo alla comunicazione verso una applicazione c#
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.
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.
ciao, dovrebbe essere solo un numero che indica il “lotto” di produzione di quel connettore (della Hanrun).
Ciao!
tutorial molto chiaro, ma nel momento incui carico la libreria come descritto mi dice che non è valida…
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.
Hi Roberto, try changing the mac address… which is the example that works?
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
ciao Andrea, pensi di usare la funzionalità di Wake On LAN? Se non dici che shield vuoi usare è difficile rispondere…
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.
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)
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.
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.
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
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());
}
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