[Risolto]Collegamento arduino PC con cavo cross

Salve a tutti,

volevo sapere se era possibile far comunicare l'arduino etherent shield con il pc tramite un cavo ethernet cross. In pratica vorrei simulare un web server(PC) fare una richiesta dall'arduino (client) e avere una risposta dal web server il tutto collegando l'ethernet shield con il cavo cross al PC. Spero possiate darmi qualche consiglio in merito

Si, puoi farlo, l’estate scorsa ho fatto qualche esperimento con la eth shield però dovendo comunicare sia con l’esterno che con il mio pc l’ho attaccato direttamente al router e così facendo a mio modestissimo parere, la programmazione lato pc/server e micro stesso sono più immediate.

Grazie per la risposta, ma a me servirebbe collegarlo al pc perchè devo simulare una telecamera che si comporta da webserver fare una richiesta ricevere dei dati e poi tramite la shield gsm inviarli ad un altro server idee???

non capisco bene la domanda, ma se il tuo problema e' il link fisico ( cavo cross o dritto ) questo e' dettato dalla scheda ethernet del tuo pc. se ha solo qlc anno e' probabile che sia gigaethernet e da standard ha l' autosensing e capira' da sola su quali pin trasmettere o ricevere.

Scusami hai ragione sono stato poco chiaro cerco di spiegarmi meglio, questo è il mio problema:

Ho una telecamera con indirizzo ip (webserver) con un'uscita rj45, io dovrei collegare questa telecamera ad arduino e avevo pensato di farlo tramite l'ethernet shield, che ha l'ingresso per l'rj45, una volta che ho fatto la richiesta alla telecamera ricevuto dei dati e memorizzati sulla sd presente sulla shield prendo questi dati e tramite la shield gsm li invio ad una nostra centrale operativa.

Per verificare questa funzionalità ho pensato di collegare la ethernet shiled al PC che dovrebbe simulare un webserver il problema che riscontro nel fare questo è relativo al fatto che non riseco a far comunicare arduino con il pc tramite il cavo ethernet,è chiaro che il tutto è fattibile tramite router ma a me serve farlo direttamente, spero di essere stato chiaro e ne approfitto per ringraziarti ancora.

non posso che confermare la risposta di andrea86, le schede gigabit non hanno bisogno di cross, se hai una scheda 100mbit allora ti serve. paradossalmente se non vuoi porti il problema usa il cavo cross e sei sicuro funzioni dappertutto.

sul discorso di poterlo fare o meno, si, puoi farlo, non c'e' nessun impedimento per la eth shield a lavorare con un router o con un pc direttamente

Ok, ma un idea su come fare??? ho provato ad usare il codice di esempio della ethernet shield mettendo come indirizzo del server quella del mio webserver locale ma purtroppo non mi si collega. In pratica questo codice funziona se collego la ethernet shield direttamente al router, come è chiaro che sia, ma non mi funziona collegandola al PC, cosa sbaglio cosa non ho preso in considerazione??? Portate pazienza non sono un grosso esperto di reti.

ma al router lo usi con dhcp o ip fisso ?

usa ip fisso sia su pc che su eth shield, 192.168.1.1 e 192.168.1.2 il pc a sua volta lo tieni isolato dal router giusto ? oppure hai un pc con due schede di rete ?

Alla fine ho un indirizzo statico per per il mio webserver che è indipendente dall'indirizzo del pc, come web server utilizzo apache!!!

indipendente in che senso ? hai fatto un bridge ? se il webserver e' sul pc, e gli hai settato un indirizzo non compatibile con quello della scheda di rete del pc stesso, non ti funziona

Scusa il ritardo nella risposta ma sono stato fuori,allora nel frattempo le cose sono un pò cambiate ho sempre una telecamera ip che si comporta come webserver vorrei collegarla all'arduino tramite un cavo ethernet, secondo voi si può fare? se si avete idea di come farlo???

usa un cavo cross, non credo proprio che la webcam abbia una gigabit. Poi devi vedere tu cosa fargli fare e come, logicamente portai solo gestire eventuali comandi hw, non gestire il flusso video. non ho capito quale e' il tuo livello di conoscenza nelle reti, mi sembra banale dirlo ma devi tenere sia la eth shield che la webcam sulla stessa classe ip esempio

Ethshield 192.168.1.1 255.255.255.0 Webcam 192.168.1.2 255.255.255.0

Ciao e grazie per la risposta,la telecamera si comporta come un web server a cui faccio una richiesta tramite una get per ottenere alcuni byte di risposta,non mi interessa gestire i flussi video,per il momento collegando la telecamera al router e anche la ethernet al router sono riuscito a fare questo, ora mi chiedevo se non fosse possibile collegare direttamente la telecamera alla etherneth+gsm shield, così da far funzionare la shield da modem, in pratica devo prelevare i dati dalla telecamera tramite un get collegando direttamente la ethernet alla telecamera e poi inviare questi dati tramite gsm ad un mio server, secondo te è fattibile???

si, senza toccare nulla nel codice, devi solo connettere con un cavo crossato la cam e la ethshield

Purtroppo collegando la cam con la ethernet questa non si riesce a connettere mi dà errore di posto il mio codice:

#include <SPI.h>
#include <Ethernet.h>


byte mac[] = {  0x90, 0xA2, 0xDA, 0x00, 0xED, 0xFF };
IPAddress server(172,16,1,15); // Google

EthernetClient client;

void setup() {
 //  Apre la comunicazione
  Serial.begin(9600);
   while (!Serial) {
    ; 
  }

  // Inizializzazione connessione Ethernet
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Connessione tramite DHCP fallita");
    
    for(;;)
      ;
  }
  // tempo necessario alla shield per connettersi
  delay(1000);
  Serial.println("in connessione...");

  // se la connessione è stabilita, fa un report via seriale:
  if (client.connect(server, 80)) {
    Serial.println("Connesso");
    // Make a HTTP request:
    client.println("GET /cgi-bin/operator/countreport.cgi?reportfmt=&from=today&to=now&counter=active&sampling=600&order=descending&value=abs HTTP/1.0");
    client.println();
  } 
  else {
    
    Serial.println("Connessione fallita");
  }
}

void loop()
{
  // se ci sono file dal server li legge e li stampa
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  
  if (!client.connected()) {
    Serial.println();
    Serial.println("Disconnessione");
    client.stop();

    
    for(;;)
      ;
  }
}

il problema potrebbe essere che i due componenti sono solo connessi tra loro ma al momento non sono in rete???

Ma in questo codice dove sono gli ip di shield e cam ? Addirittura parla di dhcp Usa gli ip che tibho consigliato

Grazie al tuo suggerimento il problema del collegamento è risolto!!! :)

Uno e' lieto di servire (cit.) :)