Shield W5100 Ethernet per Arduino UNO e MEGA 2560

W5100 Ethernet Arduino

W5100 rappresenta il chipset (shield) che aprirà le porte della rete Internet, attraverso la libreria Ethernet, alla nostra scheda Arduino.

Chi ci segue da qualche tempo ricorderà sicuramente di come abbiamo parlato di collegare un RP2040 alla rete fissa Ethernet attraverso un chip W5100.Da allora abbiamo ricevuto diverse richieste per tutorial sul collegamento in rete non già di Pico, bensì del classico Arduino UNO.

In questo articolo parleremo di uno dei più diffusi shield per tale scopo: vedremo come configurarlo e utilizzarlo con Arduino, e ne valuteremo pro e contro. In particolare tratteremo lo shield prodotto e distribuito da AZ-Delivery,, ricordando che in linea di massima tutte le schede sono equivalenti. Ricordiamo infine che lo shield in questione funzionerà sia su Arduino UNO che su Arduino MEGA 2560.

Presentazione

Arduino comunica sia con il W5100 che con la scheda SD utilizzando il bus SPI (tramite l’intestazione ICSP). Questo è sui pin digitali 10, 11, 12 e 13 su Uno e sui pin 50, 51 e 52 su Mega. Su entrambe le schede, il pin 10 viene utilizzato per selezionare il W5100 e il pin 4 per la scheda SD. Questi pin non possono essere utilizzati per l’I/O generale. Sul Mega, il pin hardware SS, 53, non viene utilizzato per selezionare né il W5100 né la scheda SD, ma deve essere mantenuto come output o l’interfaccia SPI non funzionerà.
Si noti che poiché il W5100 e la scheda SD condividono il bus SPI, solo uno di essi potrà essere attivo alla volta. Se si stanno usando entrambe le periferiche nel programma, questo dovrebbe essere gestito dalle librerie corrispondenti. Pertanto, se una delle periferiche non è utilizzata dal programma, sarà necessario deselezionarla esplicitamente. Per fare ciò con la scheda SD, impostare il pin 4 come uscita e scrivere un valore HIGH su di esso. Per il W5100, impostare il pin digitale 10 come uscita alta.

Lo shield con fornisce un jack Ethernet standard RJ45. Il pulsante di ripristino sullo shield ripristina sia il W5100 che la scheda Arduino.

Funzionalità della scheda

Lo shield contiene una serie di LED informativi:

  • PWR indica che la scheda e lo shield sono alimentati
  • LINK indica la presenza di un collegamento di rete e lampeggia quando lo shield trasmette o riceve dati
  • FULLD indica che la connessione di rete è full duplex
  • 100M indica la presenza di una connessione di rete a 100 Mb/s (anziché di 10 Mb/s)
  • RX lampeggia quando lo shield riceve dati
  • TX lampeggia quando lo shield invia dati
  • COLL lampeggia quando vengono rilevate collisioni di rete

Il ponticello di saldatura contrassegnato “INT” può essere collegato per consentire alla board Arduino di ricevere notifiche di eventi guidate da interrupt dal W5100, ma
questa feature non è (al momento) supportato dalla libreria Ethernet. Il ponticello collega INT pin del W5100 al pin digitale 2 di Arduino.

Connettiamo lo shield ad Arduino

W9100 ethernet Arduino

Per collegare la scheda ad Arduino è sufficiente impilare lo shield sulla parte superiore della scheda Arduino. L’esempio con Arduino UNO è nelle immagini qui sopra ..

La libreria Ethernet.h

La libreria per lo shield Ethernet W5100 è preinstallata con Arduino IDE. Hai già molti esempi di sketch a disposizione, per apprendere ad utilizzare il sistema in modo semplice e diretto. L’unica cosa necessaria è collegare lo shield alla scheda Arduino, il cavo LAN allo shield e il cavo USB alla scheda Arduino.

Se non hai installato Arduino IDE, vai sul loro sito e scarica la versione per il tuo sistema operativo. Seguire le istruzioni per l’installazione nel prompt del programma di installazione.
Dopo l’installazione vai su File > Esempi > Ethernet > WebServer e carica lo sketch del WebServer. Questo sketch crea un server Web e una pagina Web, quindi legge tutti gli input analogici e stampa i valori sulla pagina Web.

Ma prima occorre trovare l’indirizzo IP nel pool di indirizzi IP per la tua rete locale. Nell’esempio possiamo utilizzare l’indirizzo IP dal pool di indirizzi “192.168.0.0” (con maschera di rete 255.255.255.0), quindi possiamo utilizzare qualsiasi indirizzo da 192.168.0.1 a 192.168.0.255, ma è meglio controllare prima quale pool di indirizzi è disponibile nella propria rete locale.

Useremo Linux per testare questo shield utilizzando il comando ifconfig: nel terminale controlliamo l’indirizzo IP e la maschera di rete e l’indirizzo IP per il PC che stiamo usando:

  • Indirizzo IP: 192.168.0.101
  • Subnet mask: 255.255.255.0
  • broadcast: 192.168.0.255

Il comando ipconfig /all sotto Windows offre una schermata praticamente identica.

Quindi per la nostra Ethernet Shield W5100 non possiamo usare 192.168.0.101 o 192.168.0.255, ma qualsiasi altro IP nell’intervallo da 192.168.0.1 a 192.168.0.255 senza i due menzionati va bene. Ad esempio 192.168.0.254 è perfettamente ok.

Quindi nel nostro sketch per prima cosa cambiamo questa riga di codice:

o all’indirizzo IP adatto al pool di indirizzi IP al quale abbiamo accesso. E quando caricheremo lo sketch su Arduino, basterà aprire il browser Internet e digitare 192.168.0.140. Una pagina Web simile a quella riprodotta di ssguito apparirà automagicamente.

W5100 Arduino Ethernet

Potemo quindi aprire il nostro monitor seriale (Tools > Serial Monitor) dall’IDE di Arduino per testare l’output. Propro così: stiamo facendo girare un server Web in formato ultratascabile sul nostro Arduino!

La pagina web viene ricaricata ogni 5 secondi. Questo comportamento può essere modificato cambiando il numero 5 in questa riga di codice:

 L’importante è non esagerare: intervalli di tempo troppo brevi tenderanno a sovraccaricare Arduino impedendogli di funzionare a dovere.

Estensioni

Una volta compreso l’utilizzo del driver Ethernet W5100 con Arduino, il resto è una passeggiata: gli esempi successivi mostrano come creare un server Web che, utilizzando la microSD card, serve una vera pagina Web in grado di modificare i valori in essa contenuti attraverso AJAX (Asynchronous JavaScript ANd XML), o un semplice client che interagisce con un server sulla rete attraverso i metodi GET e POST del protocllo HTTP (trasmettendo magari i dati ricevuti sui sensori e inoltrandoli ad un sistema centralizzato).

Unica fonte di problemi: la memoria di Arduino è fortemente limitata, e tende a saturarsi molto in fretta. Occorre porre la massima cura nell’ottimizzazione del codice, onde evitare che sul più bello il server si “sieda” e si rifiuti di funzionare. O, in alternativa, è possibile utilizzare un Arduino MEGA 2560, o altri cloni di Arduino dotati di più memoria fisica 8e maggiore velocità di risposta). Dai test effettuati, comunque, se ci si limita a sketch simili a quelli presentti negli esempi, non dovremmo avere problemi di sorta.

E voi, come avete utilizzato il vostro shield Ethernet? Raccontatecelo, ed i progetti migliori troveranno posto aul nostro blog!

 

Join our groups on Telegram…

… and don’t forget our social channels!

Definire ciò che si è non risulta mai semplice o intuitivo, in specie quando nella vita si cerca costantemente di migliorarsi, di crescere tanto professionalmente quanto emotivamente. Lavoro per contribuire al mutamento dei settori cardine della computer science e per offrire sintesi ragionate e consulenza ad aziende e pubblicazioni ICT, ma anche perche’ ciò che riesco a portare a termine mi dà soddisfazione, piacere. Così come mi piace suonare (sax, tastiere, chitarra), cantare, scrivere (ho pubblicato 350 articoli scientfici e 3 libri sinora, ma non ho concluso ciò che ho da dire), leggere, Adoro la matematica, la logica, la filosofia, la scienza e la tecnologia, ed inseguo quel concetto di homo novus rinascimentale, cercando di completare quelle sezioni della mia vita che ancora appaiono poco ricche.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.