W5100 shield ethernet; cloni con un fastidioso errore
Un errore – noto da un po’ di tempo – sul valore di una rete resistiva porta alcune persone (eventualmente non a conoscenza del problema) a credere che il clone risulti non funzionante con il risultato di buttarlo per acquistarne uno nuovo. Ma non è così, il clone funziona senza alcun problema dopo una semplice modifica riportata nel seguito.
Indice - Table of Contents
Introduzione
Arrivato alla versione 2, l’Arduino Ethernet Shield permette ad una scheda Arduino (clone o compatibile pin to pin) di connettersi a Internet. Meccanicamente – ed elettricamente – lo shield ethernet si collega ad una Arduino utilizzando le fila di pin che si estendono dal lato inferiore (bottom) della scheda mantenendo così intatto il layout dei pin e permettendo, al tempo stesso, di poter impilare un altro shield al di sopra al fine di svolgere ulteriori funzioni. Il pinout è compatibile con la revisione 3 della classica scheda Arduino UNO.
La prima versione dello shield è basata sul chip W5100 prodotto dalla Coreana WIZnet e per il quale in basso ne viene riportato il datasheet. La principale funzione è quella di fornire uno stack di rete (IP) in grado di supportare sia TCP che UDP e fino a quattro connessioni socket hardware indipendenti e simultanee. Un riassunto delle caratteristiche a questo link.
Per utilizzare lo shield è necessario l’uso della libreria Ethernet; la connessione alla rete avviene tramite tipico connettore RJ-45 standard con trasformatore di linea integrato nello stesso prodotto e caratteristiche conformi allo standard PoE (Power over Ethernet) IEEE802.3af previa aggiunta di un modulo esterno.
Sullo shield è presente anche uno slot per schede micro-SD che può essere utilizzato come sistema di archiviazione dei file da presentare in rete. Il suddetto lettore di schede micro SD è accessibile previa implementazione del sorgente della libreria SD.
L’Ethernet Shield versione 2 è retrocompatibile con l’Ethernet Shield versione 1, in luogo del chip W5100 viene impiegato il chip W5500; caratteristiche a questo link e datasheet subito in basso.
Qual è/dov’è l’errore?
Con il tempo sono usciti svariati cloni del suddetto shield, nella versione 1 così come per la versione 2. Alcuni di questi cloni, tipicamente (ma non eslcusivamente) provenienti dal mercato asiatico, presentano un errore nel valore di una rete resistiva che si interfaccia con il connettore RJ-45, errore che ne impedisce il corretto funzionamento, di fatto lo scambio dei dati via rete (Ethernet). La figura al lato – un click per ingrandirla – illustra una di queste schede di fatto uguali allo shield originale! Ma dove risiede il problema?
Iniziamo a dare un’occhiata allo schema elettrico dello shield originale e puntiamo l’attenzione nella parte in alto a sinistra ovvero le connessioni sul connettore RJ-45 le cui parti terminali vanno poi a collegarsi sul chip W5100.
W5100_SE-Clone_arduino-ethernet-shield-06-schematic
Come si può vedere il valore delle resistenze RN2A-RN2B-RN2C-RN2D, che poi fanno parte di una rete resistiva che ingloba le 4 resistenze, è pari a 49,9 ohm. Questo gruppo di 4 resistenze è la rete resistiva subito dietro il connettore RJ45 visibile anche nella precedente immagine. Proviamo a farne un’immagine in dettaglio (figure in basso) e quello che si vede stampigliato sul suo corpo dimostra il valore errato della rete resistiva utilizzata.
Si nota come sia riportato 511 ovvero un valore di 510Ω in luogo dei 49,9Ω dello shield originale che sono indicati con la sigla 49R9. Se lo shield clone in questa rete resistiva riporta stampigliata la sigla 510 significa che il valore delle resistenze che la costituiscono è a pari a 51Ω; tale valore non crea alcun problema, il problema si ha laddove la rete resistiva dovesse riportare 511.
Come risolverlo?
Almeno in tre modi. Si potrebbe rimuovere con pistola ad aria calda, proteggendo con del nastro in kapton i componenti adiacenti, la rete resistiva da 510Ω e sostituirla, previo uso di pasta salda e flussante, con una rete resistiva di valore corretto (51Ω o 49,9Ω, non fa differenza). Ma pur avendo, per quanto mi riguarda, tutti i suddetti elementi trovo più pratico mettere in parallelo all’attuale rete resistiva resistenze di dimensioni maggiori saldate sul lato bottom del PCB.
L’obiettivo è ottenere un valore di resistenza equivalente compreso tra i 49,9Ω (dello shield originale) e i 51Ω dei cloni che funzionano correttamente. Per ottenere questo risultato occorre calcolarsi il valore della resistenza da mettere in parallelo. Da quanto detto:
49,9\Omega \leq R_{eq} \leq 51,1\Omega=\frac{R_r \times R_p}{R_r + R_p}\kern{1cm}(1)
laddove Rp è la resistenza da mettere in parallelo all’attuale rete resistiva e Rr è il valore della attuale rete resistiva da 510 Ω. Ricavando la formula inversa dalla (1) per la Rp risulta:
R_r \times R_p=R_r \times R_{eq} + R_p \times R_{eq}
e portando il secondo addendo al secondo membro alprimo membro:
R_r \times R_p - R_p \times R_{eq}=R_r \times R_{eq}
mettendo in evidenza Rp:
R_p \times (R_r - R_{eq})=R_r \times R_{eq}
dalla quale è possibile ricavare la resistenza da mettere in parallelo:
R_p=\frac{R_r \times R_{eq}}{R_r - R_{eq}}\kern{1cm}(2)
Nella (2) la Rr=510Ω e la Req assume due valori prima 49,9Ω poi 51Ω. Per tali due valori, effettuando i semplici calcoli, la resistenza Rp da mettere in parallelo risulta:
- Quando Req=49,9Ω ⇒ Rp=55,31Ω;
- Quando Req=51,0Ω ⇒ Rp=56,67Ω;
In definitiva 4 resistenze da 56Ω della comune serie E24 (5% di tolleranza) sono più che idonee al caso in questione portando il valore equivalente a circa 50,4Ω (tolleranze escluse).
Dove collegare le resistenze?
Le nuove resistenze dovranno essere collegate in parallelo alle resistenze RN2A-RN2B-RN2C-RN2D della rete resistiva secondo lo schema riportato di seguito, ridisegnato con il software KiCad per il caso in questione e nel quale per semplicità vengono presi in considerazione solo i collegamenti di interesse (cfr. con lo schema elettrico dello shield originale – sezione in alto a sinistra – riportato sopra in formato pdf).
Occorre ora conoscere il pinout del connettore RJ-45; trattasi, come si legge chiaramente in una delle figure in alto, di un HanRun HR911105A della cinese HanRun Electronics Co., Ltd e il cui datasheet è riportato in basso.
W5100_SE-Clone_HR911105A_Hanrun_Datasheet
A pagina 1 sono visibili le connessioni tra elementi interni e numero di pin esterni mentre a pagina 2 la vista da sotto del connettore con associata numerazione. Questo significa che la numerazione è quella visibile nella figura a lato (click per ingrandirla) pertanto delle 4 resistenze – prendendo come riferimento lo schema realizzato con KiCad – un terminale della Rp2C va collegato al numero 1 e un terminale della Rp2D al numero 2. I due terminali rimanenti vanno saldati insieme per essere collegati, con un corto filo, al terminale non a massa del condensatore C2 lato componenti. Medesime considerazioni per le altre due resistenze; un terminale di Rp2B va saldato al pin 6 del connettore e un terminale di Rp2A va saldato al pin 3 del connettore. I terminali rimanenti vanno saldati insieme e con un corto spezzone di filo collegati al terminale non a massa di C4. Le immagini in basso mostrano il risultato lato bottom e top della scheda.
Utilizzati anche qualche centimetro di guaina termorestringente sulla resistenza Rp2A e la parte filata verso C2 come evidente dalle immagini e ciò al fine di evitare corto-circuiti involontari. Questa semplice modifica, resa un po’ difficoltosa dalle ridotte dimensioni, porta lo shield Ethernet clone a funzionare senza alcun problema.
Esistono altri problemi?
Ad oggi, personalmente, su questo clone non ho riscontrato nessun altro problema. Qualora ve ne fosse qualcun altro chi vuole può riportarlo nei commenti in basso oppure nel mio profilo Facebook (link in alto a destra) affinché possa riprodurlo e riportarne un eventuale correzione.