Arduino ethernet problemi

Salve a tutti ho appena comperato un arduino ethernet e stavo provando a far funzionare il tutto ma noto che oltre a non funzionare nulla all’atto della connessione del cavo eth su arduino non si accendono le “lucine” di controllo del connettore…problema della scheda?..
vabbè…cmq il codice che ho provato è il seguente…
specifico che ho cambiato il mac con quello riportato sotto la scheda…ho disabilitato il dhcp sul mio router e l’indirizzo ip è nel range…il gateway e sul 192.168.1.1…

//Librerie impiegate per il progetto
#include <SPI.h>
#include <Ethernet.h>

//Creao un array di byte per specificare il mac address
byte mac = { 0x90, 0xA2, 0xDA, 0x00, 0x74, 0x99 };
//creo un array di byte per specificare l’indirizzo ip
byte ip = {192, 168, 1, 4};
byte gateway = {192, 168, 1, 1};
byte subnet = {255, 255, 255, 0};

char Data_RX;

//creao un oggetto server che rimane in ascolto sulla porta
//specificata
Server ArduinoServer(80);

void setup()
{
//inizializza lo shield con il mac e l’ip
Ethernet.begin(mac, ip, gateway, subnet);
//inizializza l’oggetto server
ArduinoServer.begin();
Serial.p

Serial.begin(9600);

}

void loop()
{

Client pc_client = ArduinoServer.available();

//controllo se pc_client è true
if (pc_client != false)
{
//controllo continuamente che il client sia connesso
while (pc_client.connected())
{
//Controllo se ci sono byte disponibili per la lettura
if (pc_client.available())
{
//leggo i byte disponibili
//provenienti dal client
Data_RX = pc_client.read();

//Attendo che tutti i byte siano letti
//quando Data_RX contiene il carattere
//di nuova line capisco tutti i byte sono
//stati letti
if (Data_RX == ‘\n’)
{
//Invio la risposta al client
//invio lo status code
pc_client.println(“HTTP/1.1 200 OK”);
//imposto il data type
pc_client.println(“Content-Type: text/html”);
pc_client.println();
//invio codice html
pc_client.print(“

Hello world Arduino Web Server

”);
//aspetto 1 ms affinche la risposta giunga al browser del client
delay(1);
//esco dal ciclo while una volta completato l’invio della risposta
break;
}
}
}
//chiudo la connessione
pc_client.stop();
}

Ciao,
innanzitutto per verificare il funzionamento dello shield, utilizza uno degli sketch forniti in esempio nell’IDE.
Chiaramente, imposta ip, gateway e netmask corrette nello sketch (come sembra tu abbia fatto).
Assicurati che il cavo di rete sia funzionante.

grazie mille per la risposta :) Dunque la mia non è una shield ma http://www.robot-italy.com/product_info.php?cPath=119_153&products_id=2048 ..il cavo è funzionante...l'ho appena provato sul pc e funziona!...ora ho provato a caricare il seguente esempio dall'ide opportunamente modificato con mac ip gateway e subnet...ma nulla! :(

/*
Web Server

A simple web server that shows the value of the analog input pins.
using an Arduino Wiznet Ethernet shield.

Circuit:

  • Ethernet shield attached to pins 10, 11, 12, 13
  • Analog inputs attached to pins A0 through A5 (optional)

created 18 Dec 2009
by David A. Mellis
modified 4 Sep 2010
by Tom Igoe

*/

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

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac = {0x90,0xA2,0xDA,0x00,0x74,0x99};
byte ip = {192,168,1,177};
byte gateway = {192, 168, 1, 1};
byte subnet = {255, 255, 255, 0};

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
Server server(80);

void setup()
{
// start the Ethernet connection and the server:
Ethernet.begin(mac,ip,gateway,subnet);
server.begin();
}

void loop()
{
// listen for incoming clients
Client client = server.available();
if (client) {
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
// if you’ve gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == ‘\n’ && currentLineIsBlank) {
// send a standard http response header
client.println(“HTTP/1.1 200 OK”);
client.println(“Content-Type: text/html”);
client.println();

// output the value of each analog input pin
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
client.print("analog input “);
client.print(analogChannel);
client.print(” is “);
client.print(analogRead(analogChannel));
client.println(”
");
}
break;
}
if (c == ‘\n’) {
// you’re starting a new line
currentLineIsBlank = true;
}
else if (c != ‘\r’) {
// you’ve gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
}
}

Dunque la mia non è una shield ma http://www.robot-italy.com/product_info.php?cPath=119_153&products_id=2048

..si, me ne ero reso conto rileggendo bene il tuo primo post, garzie cmq della specifica.

Hai preso la versione POE? Come la stai alimentando?

si ho la poe ma non avendo al momento un router poe la sto alimentando con usb adapter sempre arduino…ma ho anche provato con un alimentatore universale messo a 9 volt con opportuno jack…la scheda si alimenta…=)

Non usare uno sketch server, che probabilmente quello che ti blocca sonop firewall e nat, ma prova con uno script client, tipo questo:

/*
Web client

This sketch connects to a website (http://www.google.com)
using an Arduino Wiznet Ethernet shield.

Circuit:

  • Ethernet shield attached to pins 10, 11, 12, 13

created 18 Dec 2009
by David A. Mellis

*/

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

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip = { 192,168,1,177 };
byte server = { 173,194,33,104 }; // Google

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
Client client(server, 80);

void setup() {
// start the Ethernet connection:
Ethernet.begin(mac, ip);
// start the serial library:
Serial.begin(9600);
// give the Ethernet shield a second to initialize:
delay(1000);
Serial.println(“connecting…”);

// if you get a connection, report back via serial:
if (client.connect()) {
Serial.println(“connected”);
// Make a HTTP request:
client.println(“GET /search?q=arduino HTTP/1.0”);
client.println();
}
else {
// kf you didn’t get a connection to the server:
Serial.println(“connection failed”);
}
}

void loop()
{
// if there are incoming bytes available
// from the server, read them and print them:
if (client.available()) {
char c = client.read();
Serial.print(c);
}

// if the server’s disconnected, stop the client:
if (!client.connected()) {
Serial.println();
Serial.println(“disconnecting.”);
client.stop();

// do nothing forevermore:
for(;:wink:
;
}
}

ovviamente IP e GATEWAY vanno modificai per le tue esigenze… in teoria nella serial monitor dovrebbe arrivati “connected”, poi l’header+l’html della pagina principale di google. Essere client vuol dire sorpassare senza problemi le NAT e i firewall che normalmente son presenti nei router.

Si amico avevo provato anche il web client correggendo opportunamente ip mac..etc...ed anche l'ip di google che è cambiato....http://scuola.arduino.cc/it/content/getting-started-arduino-ethernet....ma il problema sussiste....diciamo che ad arduino mi ci sono avvicinato da poco..ma cmq qualcosina di informatica ne capisco...sono un ing inf ;)....spero che riusciremo a risolvere il problema!

ok, allora un'altra prova: alcune USB non erogano abbastanza miliampere per reggere lo shield, prova ad alimetare arsuino con un alimentatore esterno!

lesto: ok, allora un'altra prova: alcune USB non erogano abbastanza miliampere per reggere lo shield, prova ad alimetare arsuino con un alimentatore esterno!

L'Arsuino è l'Arduino che lavora in condizioni di siccità oppure è l'Arduino usato negli allevamenti di suini? XD XD XD

Scusa, ma era un nome troppo bello per non farci una battuta sopra ;)

già provato con un alimentazione esterna da 9v.....ora riprovo tutto!

anche perchè in realtà non si accende neanche il led link sull'interfaccia eth di arduino e quindi neanche il led sul router relativo a quella porta eth....mmmmmm

Domanda....quanti ma di corrente occorrono? io l'ho alimentato esternamente con un alimentatoreda 9 v a 160ma

FINALMENTE MOLTO PICCOLO SEGNALE DI VITA.....HO DISCONNESSO IL CAVO ETH DAL ROUTER ED HO QUINDI CONNESSO ARDUINO AL PC CON TALE CAVO E SI SONO ACCESI I LED DELL'INTERFACCIA ETH...ORA? O_O

nessuno che risponde....

nessuno che risponde....

non rimanerci male, siamo tutti volontari qui per passione, ma ogni tanto tocca lavorare / studiare :D

HO DISCONNESSO IL CAVO ETH DAL ROUTER ED HO QUINDI CONNESSO ARDUINO AL PC CON TALE CAVO E SI SONO ACCESI I LED DELL'INTERFACCIA ETH...ORA? O_O

io mi toglierei lo sfizio di provarlo con un cavo cross, collegato direttamente al pc, con ip opportunamente configurati. E' raggiungibile / pingabile?

Ciao, secondo me attaccare arduino direttamente al router non è una buona cosa. Anche se il dsl-g624t ha uno switch a 4 porte integrato bisogna vedere se sono tutte sulla stessa vlan o magari qualche porta viene usata per la demil e questo può dare grossi problemi. Dovresti invece attaccare uno switch/hub al router e a quello attaccare l'arduino e i vari computer. Stai attento anche al tipo di cavo ethernet utilizzato, se riesci a connettere direttamente l'arduino alla scheda del pc vuol dire che è un cavo incrociato, che potrebbe non funzionare collegando l'arduino al router se il router non ha porte auto mdi/mdix. Per capire di che tipo è il cavo vai qui http://www.ge.infn.it/calcolo/faq/rete/cat5cable.htm e confronta le connessioni al tuo cavo. A me sembra più un problema di ethernet che di arduino.

Alberto

pndtkd: Domanda....quanti ma di corrente occorrono? io l'ho alimentato esternamente con un alimentatoreda 9 v a 160ma

Beh, se consideri che l'USB di norma fornisce 250mA quello che hai usato è davvero una cosa ridicola; a me pare proprio che tu abbia problemi di alimentazione. Prova a mettere un alimentatore da 7-12V 1A, ma di quelli seri, stabilizzati, non quelle schifezze cinesi da 3-5 euro che a vuoto di tanno 15 volt e sotto carico scendono a 4.

allora il cavo non è incrociato, è funzionante e ribadisco che se metto router<----->arduino non si accende manco il link led dell’interfaccia eth su arduino…se metto PC<------>arduino si accende tale led il chè mi scongiura da eventuali problemi hardware di arduino…probabilmente credo sia un problema di connessione con il router con l’upnp…perchè attaccare uno swith.hub al router se gia di suo ha uno swictch a 4 porte?

so che per connettere il pc ad arduinoi servirebbe un cavo crossed ma non è questo il mio intento…ho provato a connettere pc<----->arduino solo per vedere se si accendeva il link led dell’interfaccia di arduino!..