Arduino + Ethernet shield

Ciao a tutti,

mi succede una cosa strana...
Premessa: in casa mia ho una rete Fastweb che funziona benissimo con il router fastgate...

Per portare la rete in una stanza ho installato un router Asus che fa da repeater. Quindi tra modem principale e altra stanza c'è questo Asus in wifi.

A questo Asus è collegato uno switch unmanaged da 8 porte al quale sono collegati due computer ed un mixer video.

Tutto funziona correttamente. I pc navigano e il mixer video è in rete...

Ora: se collego Arduino all switch con codice per app web o over IP la shield non naviga...
Non ottiene neanche ip con DHCP...

Se invece collego Arduino direttamente al router fastweb allora tutto funziona.

Ho provato a dichiarare ip/subnet/gateway/dns ma nulla.

Ho anche provato a cambiare mac con uno "conosciuto" ma anche questo non cambia...

Non so più dove girarmi... secondo voi da cosa può dipendere?

Grazie a tutti....

MrBoss

Dovresti chiarire meglio com'è fatta questa tua rete, ad esempio parli di "un router Asus che fa da repeater", ma se è un router significa che hai definito una subnet diversa per quella stanza, e quindi fai un NAT? Oppure l'Asus è un router ma non lo usi come router ma solo come client WiFi del router/modem centrale e quindi è totalmente "trasparente"? Ed i PC hanno un IP statico o sono anche loro in DHCP?
Puoi fare uno schemino (anche solo su carta, poi lo fotografi e metti qui il file jpg come allegato)?

Ciao Docdoc,

allego schema semplice della rete.

Il router principale è quello di Fastweb.
Il router Asus è collegato in wifi a quello Fastweb in modalità repeater (fa tutto lui io metto solo la password del wifi di Fastweb). Ha una porta ethernet alla quale collego lo switch e poi i pc e Arduino…
I pc vanno tutti con DHCP il mixer video con ip statico e Arduino, sia DHCP che statico, non naviga.

Se lo collego al router Fastweb, dico p statico funziona tutto.

grazie ancora…

aggiungo una cosa che ho notato solo oggi...
Utilizzando uno scanner ip mi rileva che tutti i dispositivi collegati allo switch a valle del router "secondario" hanno tutti lo stesso Mac Address del router stesso...

quindi benché gli altri dispositivi abbiano lo stesso mac navigano l'eth shield no.

mrboss:
Utilizzando uno scanner ip mi rileva che tutti i dispositivi collegati allo switch a valle del router "secondario" hanno tutti lo stesso Mac Address del router stesso...

Più che ovvio ... altrimenti che router sarebbe ... tu vedi gli IP dei vari devices, ma il MAC è quello del router.

Avevo la stessa situazione con un "repeater" WiFi ... tutto ciò che era connesso ad esso appariva con lo stesso MAC, ma, giustamente, con IP diverso :wink:

Guglielmo

mrboss:
Il router principale è quello di Fastweb.
Il router Asus è collegato in wifi a quello Fastweb in modalità repeater

Ok ma chiariamo meglio i termini.

  1. un "router" è un apparato che collega generalmente due reti, ognuna delle quali ha un proprio indirizzamento IP. Ad esempio posso avere una rete 192.168.1.* ed una 192.168.2.*, per far parlare le due reti ho bisogno di un router. Quindi la prima domanda è: tu hai impostato DUE reti separate, collegate tramite il router?

  2. un "repeater WiFi" è un apparato che si collega ad una rete WiFi e ne replica il segnale (lo "ripete") in una zona non raggiunta dalla prima. E mi pare di capire che i PC ed il mixer siano connessi con un cavo.

Nel tuo caso mi pare di capire che l'Asus sia invece impostato come "ponte" Wifi ossia lui si collega via WiFi come "client" al router principale, per fornire connettività LAN (quindi via cavo Ethernet) ai dispositivi locali.

Ora, questa cosa la si può configurare sia come rete secondaria separata sia come estensione di quella principale. Nel primo caso, costituisce un router con in sua indirizzamento, nel secondo il router di fatto non agisce come tale ma si limita in modo trasparente a comunicare con la rete principale. Pertanto la questione è capire in che modo sia stato configurato l'Asus, ossia se lui intervenga o meno nella comunicazione di rete, e se sia anche lui impostato per fare da server DHCP.

Detto questo, visto che immagino tu non sia particolarmente esperto di networking, la prima domanda per cercare di permettermi di immaginare la configurazione è questa: i PC che sono in DHCP quale indirizzo IP ottengono, e quali indirizzi IP invece hanno gli apparati collegati direttamente al router Fastweb?
Se i primi 3 numeri sono uguali in entrambi i casi, l'Asus dovrebbe essere "trasparente", altrimenti è una sottorete separata.

Per finire, se anche fosse totalmente trasparente, in passato sappiamo (anche da topic presenti in questo stesso forum) che ci sono stati alcuni casi in cui una shield Ethernet Arduino per ragioni molto "a basso livello" (si parla di protocollo ARP) funziona solo se connessa direttamente ad una porta del router, se anche la si collega tramite uno switch (e pare solo con alcune marche) non viene "vista" dal router. Quindi prova a collegare Arduino direttamente all'Asus senza lo switch e vedi se funziona. Se il problema è quindi lo switch, prova a cercare nel forum i post dove si parlava di quali switch non vanno con gli Ethernet Shield e quali invece funzionano.

Come soluzione alternativa finale, prova a usare una connessione WiFi (ESP oppure prendi una WeMos D1 al posto di Arduino) e dovresti risolvere.

Perfetto:
Ad alcune domande posso rispondere... ad altre un po meno...

Allora:
il router Asus è questo:

https://www.asus.com/it/Networking/WL330N3G/

e dalle sue impostazioni può funzionare in 6 diverse modalità.

Una di queste è repeater nella quale devo selezionare la rete wifi principale e poi inserire la password.
A questo punto l'asus ottiene un indirizzo IP dal router Fastweb (stessa rete) e mi "ripete" la rete wifi.
Se faccio la scansione delle reti wifi vedrò due reti con lo stesso nome (quella di Fastweb diretta e quella dell'asus replicata).
Dalla sua porta LAN, alla quale collego lo switch ho connettività con la stessa classe IP del router Fastweb.
Dall'asus posso solo scegliere di abilitare/disabilitare il DHCP. in questo momento è disabilitato in quanto, dal poco che capisco, è il router di Fastweb a rilasciare gli indirizzi.

Stasera proverò a collegare l'arduino direttamente alla presa LAN dell'asus e vediamo cosa accade...

Grazie mille per il supporto.

Ciao a tutti,

ho provato a collegare l'arduino direttamente all'asus... BOOM!!! funzica perfettamente...
Ergo deduco che sia lo switch che non lo "digerisce".

Non mi era mai capitata una cosa del genere.

Ho provato a cercare nel forum ma non ho trovato post riguardanti questa problematica.

Ad ogni modo grazie davvero per la pazienza e per il supporto.

MrBoss.

Prima di cercare di capire quale tipo di switch possa funzionare (proverò a cercare anche io, non è che puoi acquistarli "a caso" ovviamente;) ), puoi fare qualche altra prova.

Primo, se hai usato come MAC address il classico DE AD BE EF FE ED sei certo che non ci siano in rete altri Arduino con lo stesso MAC?

Secondo, se non ci sono altri device con lo stesso MAC, se hai qualche vecchio switch prova ad usare quello al posto dell'attuale. Questo perché ci sono dei bit nel MAC address che indicano se è unicast o multicast e se è privato o universale, ed alcuni switch "recenti" sembrano bloccare le richieste ARP se questi bit sono impostati per loro in modo "errato".

Infine se non hai un "vecchio" switch, prova a cambiare i bit più bassi del primo byte dell'indirizzo MAC dello shield mettendoli entrambi a zero (es. da '47' a x'44', oppure se hai usato DE AD BE EF FE ED, cambia DE in DC) e vedi se va.

EDIT:

Ulteriore soluzione: usa una WeMos D1 quindi lascia perdere il cavo Ethernet ed usa il WiFi :wink:

Infine, vedi QUI è un vecchio thread nel quale parlavamo di W5100 bacati...

Potresti usare Wireshark su uno dei PC per vedere se ci sono pacchetti provenienti dall'Arduino, tipo le richieste ARP o anche i pacchetti per scoprire il server DHCP.

Potrebbe anche essere che lo switch non riesce a comunicare in 10baseT o i due non riescono a mettersi d'accordo sul protocollo.

Allora:

ho trovato un post sul sito internazionale di un tipo che aveva lo stesso problema con lo stesso switch...
Dopo tante prove senza risultati gli hanno consigliato di saldare due resistenze da 100ohm nello shield...
l'ho fatto anche io e ora funziona anche con lo switch.

posto il link del post e della foto delle resistenze.

POST

grazie davvero a tutti per i consigli e il supporto.

MrBoss.

GRAZIE per la condivisione! Karma+

Mi par di ricordare di aver visto quella foto anni fa non mi ricordo per quale problema, forse questo.

mrboss:
Dopo tante prove senza risultati gli hanno consigliato di saldare due resistenze da 100ohm nello shield...
l'ho fatto anche io e ora funziona anche con lo switch.

Era la soluzione che avrei citato in caso di fallimento di tutte le precedenti, comunque dato che la foto non è del tutto chiara, QUI c'è la descrizione del perché e come collegare le resistenze, ossia, tradotto e "adattato", si legge:

Le connessioni Ethernet sono linee di trasmissione che necessitano di una terminazione differenziale di 100 ohm, in pratica due resistenza da 51 ohm, quindi marcate 510 che equivale a 5110^0=51 ohm.
Le schede "problematiche" arrivano con resistenze marcate "511", 51
10^1=510 ohm!
Una soluzione semplice e soddisfacente è quella di prendere un paio di resistenze dtra 100 e 120 ohm da applicare sui pin del connettore HanRun: una va tra i pin 1 e 2, l'altra tra i pin 3 e 6, lasciando il pacchetto di resistenze fasulle in posizione.

Visto che a te ha funzionato, stasera provo a riesumare una shield che a suo tempo scartai tra le schede "vecchie" proprio perché non andavano e non potevo usarla senza switch... :wink:

Ecco dove l'avevo letto!

Precisazione: non avevo prospettato quella possibilità soprattutto perché in genere preferisco (anche per me stesso) le soluzioni che non implichino modifiche hardware, ma poi in questo caso non sapendo se l'OP fosse pratico di saldature "piccole"...

A proposito, @mrboss ho cercato la tua presentazione proprio per vedere quale sia il tuo livello nell'elettronica, ma non l'ho trovata... Guarda che DEVI fare la presentazione nell'apposita area ossia QUI!!

A proposito, @mrboss ho cercato la tua presentazione proprio per vedere quale sia il tuo livello nell'elettronica, ma non l'ho trovata... Guarda che DEVI fare la presentazione nell'apposita area ossia QUI!!

Fatto!!!. :wink: