Go Down

Topic: Problema con Arduino Ethernet Shield (Read 1 time) previous topic - next topic

christiaan

Ciao,
sono alle prime armi con Arduino Uno e Ethernet Shield.Ho inserito Arduino Uno insieme con Ethernet Shield.Ho scritto questo codice per comunicare con Ethernet Shield:


Code: [Select]

byte mac[] = { 0x90,0xA2,0xDA,0x00,0x55,0xA3};         //Mac addres della scheda ethernet dell'arduino (SOSTITUIRE CON IL MAC ADDRESS RIPORTATO SULLA SHIELD ETHERNET)
byte ip[] = { 192,168,0,99};                           //IP da assegnare alla scheda ethernet dell'arduino (SOSTITUIRE CON UNO SUPPORTATO DALLA PROPRIA RETE)
byte subnet[] = { 255,255,255,0};                      //Maschera di sottorete riferita alla propria connessione (SOSTITUIRE CON LA PROPRIA SUBNET MASK)
byte gateway[] = { 192,168,0,254};                     //Gateway del proprio modem/router (SOSTITUIRE CON IL PROPRIO GATEWAY PREDEFINITO)
Client client(server, 80);                             //connettiamo il nostro arduino, come client al server


Io uso un MacBook Pro per programmare Arduino Uno uso il cavo USB,il cavo RJ45 dove lo devo collegarlo al MacBook Pro o al router?Il cavo RJ45 dev'essere incrociato o no?Ma su byte ip che cosa devo scrivere, indirizzo ip di arcuino? Byte gateway devo scrivere indirizzo ip del modem router: 192.168.2.1?Grazie.

PaoloP

Ciao e benvenuto.
L'Arduino puoi collegarlo al router. Devi fare attenzione però agli indirizzi di rete.
Devono essere prima di tutto diversi e poi compatibili tra di loro.
Se il router ha l'indirizzo 192.168.2.1 (che è poi l'indirizzo da indicare come gateway) l'Arduino dovrà avere un indirizzo della stessa classe ovvero 192.168.2.xxx, dove xxx è un numero tra 2 e 254. Attenzione a non inserire l'ip del macbook altrimenti avrai un indirizzo duplicato e ciò genera errori di comunicazione.
Visto che stai usando la stessa classe di indirizzi la maschera di sottorete è 255.255.255.0 (http://it.wikipedia.org/wiki/Subnet_mask)
Per il MacAddress puoi usare quello riportato sull'adesivo nella ethernet shield o nella scatola.

Per fare delle prove puoi utilizzare gli sketch allegati con l'IDE.

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

arduinh3nk3r

#2
May 04, 2012, 03:47 am Last Edit: May 04, 2012, 03:50 am by arduinh3nk3r Reason: 1
ciao
qui http://arduino.cc/forum/index.php/topic,103399.0.html
e qui http://www.giannifavilli.it/blog/arduino-controllo-remoto-http/
trovi dei post che ti possono interessare.

poi ...
byte mac = { 0x??, 0x??, 0x??, 0x??, 0x??, 0x?? }; // mac address  sotto la shield ethernet

byte ip = { 192, 168, 0, 245 }; // ip di arduino che poi assegnerai quando farai port forwarding cioe quando andrai a configurare il router perche accetti dalla porta 80 l'arrivo e l'nvio di dati di arduino e sarà in funzione all'IP del router qui sotto , quindi se il tuo sarà 192.168.2.1 dovrai assegnare un altro IP in questo modo: 192.168.2.x dove x sarà da 2 a 245. occhio che se hai altri pc collegati dovrai escludere anche quei IP.

byte gateway] = { 192, 168, 0, 1 }; // internet access via router: qui vai in finestra dos e digita ipconfig e ti verra una cosa del genere:
C:\Users\bisigola>ipconfig
Configurazione IP di Windows
Scheda Ethernet Connessione alla rete locale (LAN):
  Suffisso DNS specifico per connessione:
  Indirizzo IPv6 locale rispetto al collegamento . : fe80::41eb:4dc2:61f:adb7%11
  Indirizzo IPv4. . . . . . . . . . . . : 192.168.0.2
  Subnet mask . . . . . . . . . . . . . : 255.255.255.0
  Gateway predefinito . . . . . . . . . : 192.168.0.1  ECCOLOOOOOOOOOOOOOOOOOOOOOO il mio il tuo fai la stessa cosa

byte subnet = { 255, 255, 255, 255 }; //subnet mask della tua rete che se vai nella configurazione del router e cerchi stato oppure un semplice pind da dos lo trovi.

Server server (80); // porta del server lascia cosi

PaoloP

byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

arduinh3nk3r

@Paolop
ho visto solo adesso il tuo reply ...

si si mi sono accorto dell'errore, grazie.

PaoloP

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

arduinh3nk3r

ciao paolop

visto che sei online volevo chiederti una cosa:
innanzitutto volevo dirti che Arduino e il progetto di comandare attuatori con tcp/ip (internet) e andato a buon fine
qui l'ispirazione http://www.giannifavilli.it/blog/arduino-controllo-remoto-http/

volevo chiederti una cosa:
dal mio router di casa funziona tutto e Arduino con server web viene visto dall'esterno tramite un servizio che ho sottoscritto (Dyndns)
qui tutto ok, ma ho provato in una struttura (palazzo) dove ce un serve che fa da amministratore con altre stanze dove ci sono client (pc) che possono accedere ad internet con un nik e una password rilasciata dall'amministratore.
bene, ho provato a collegare Arduino con il progetto sopra in una postazione client dove viene riconosciuta con ip 192.168.1.33 quindi ho scollegato cavo ethernet dal pc e l'ho attaccato all'arduino.
ho cambiato lo sketch in modo che si addatti  alla nuova rete e ho impostato cosi:
fatto ipconfig/all vedi immagine sotto ...

quindi ho sistemato cosi:
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // mac address                          lasciato come prima
byte ip[] = { 192, 168, 1, 33 }; // ip arduino internet in                                               cambiato
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router                                  cambiato
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask                                                    lasciato come prima
EthernetServer server(80); //server port                                                                    lasciata come prima
poi ho controllato come veniva vista la rete dall'esterno controllando che ip aveva e ho risistema il link del servizio Dyndns cosi potevo collegarmi con un url.

ora, ho provato a collegarmi con dos e facendo ping 192, 168, 1, 33 mi risponde bene e collegandomi da brawser di altro client (pc) in quella stanza mi vede interfaccia web e si può commandare gli attuatori i dati si aggiornano e tutto il resto ok...

ma dalla rete cioe dall'esterno del palazzo oppure da un semplice smartphone non si accede al server web di arduino con cui ci collegavamo in lan.

qual'è il problema? forse  il fatto che da pc ci si collega con nik e passw?
forse i dati ch ho modificato per accedere dall'esterno sono errati ?

l'amministratore deve fare un forwading per lasciare accedere dall'esterno Arduino?

mi aiuti?

ciao grazie

brunol949


l'amministratore deve fare un forwading per lasciare accedere dall'esterno Arduino?

Direi proprio di si
Dall'esterno viene visto/chiamato l'IP pubblico del Router
Chiami il router e sara' la sua eventuale interfaccia web di programmazione a risponderti

Di solito l'accesso a server virtuali interni ( il tuo Arduino ) viene fatto usando porte diverse
Http://IP_Pubblico:81 che il router indirizzera al tuo IP_Locale sulla porta 80
Le mie opere : Flusso correnti nell'impianto fotovoltaico http://arduino.webveneto.net/energy_control/     PING ed E.Mail http://arduino.web

Go Up