Problema con Ethernet shield e il MAC su Vodafone station

Salve ragazzi, come da titolo non riesco ad impostare il mac su vodafone station.Nel codice su arduino FUNZIONANTE il MAC è così scritto :byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

Ora, come devo scriverlo nelle impostazioni del router ? ho provato a scriverlo in decimale ed in esadecimale ma mi da sempre errore grazie a chiunque risponderà :slight_smile:

DE:AD:BE:EF:FE:ED così

HiHi , ora lo accetta.

Il problema me ne son reso conto solo ora che l'errore non è il MAC, la vodafone station non vede proprio l'arduino. ho provato dalla sua diagnostica e non lo vede proprio, come posso risolvere ?
Con cavo incrociato collegato direttamente al PC funziona senza problemi..

hai provato un cavo dritto?

sia con cavo incrociato che con cavo dritto

ma quando lo colleghi ti si accende un led di segnalazione di ethernet link up? o proprio non dà segni di vita su qualsiasi porta lo colleghi?

lampeggia ogni cinque seceondi circa, dimenticavo, lavoro con il WZ-5100, non faceva questi versi con lo switch a scuola.

sei con dhcp o ip fisso?

Ehm se per DHCP intendi l'assegnazione dell'IP automatica, si
HO però creato un profilo con l'IP di arduino ma continua a non vederlo

Ciao,
se ne era già parlato:

vedi se può essere di spunto :stuck_out_tongue:

Anche io lavoro con la vodafone station e non mi da nessun problema
L'unica cosa che ho fatto è stato settare l'indirizzo ip come statico.

Poi ricordo di aver avuto un problema all'inizio perchè avevo messo un indirizzo ip fuori dal range...so che è una cosa banale ma magari controlla anche tu.

Fammi sapere...magari passami lo sketch che lo provo anche io per vedere se ho gli stessi problemi..

Lo sketch è questo : è un banalissimo termometro:

#include <SPI.h>
#include <Ethernet.h>
//Funzioni Ethernet
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 0, 2 };	         
Server server(80);                                 
int ledPin = 2;  
String readString = String(30); 
boolean LEDON = false; 

//Funzioni per la misura della temperatura
void termometro();
#define LM35_TEMP 3
#define LM35_REF 2 
double temperatura;



void setup(){
  Ethernet.begin(mac, ip);
  pinMode(ledPin, OUTPUT);  
}


void loop(){
Client client = server.available();
  if (client) {
    while (client.connected()) {
   if (client.available()) {
    char c = client.read();
    if (readString.length() < 30) 
      {
        readString +=c;
      }  
          if (c == '\n') {          
  if(readString.startsWith("L=LED_ON", 6))
           {
             digitalWrite(ledPin, HIGH); 
             LEDON = true;
           }else{
             digitalWrite(ledPin, LOW);
             LEDON = false;             
           }           
          client.println("HTTP/1.1 200 OK");
          client.println("META HTTP-EQUIV=REFRESH CONTENT =5");
          client.println();
          client.print("<body style=background-color:#F5F5F5>");
          client.println("<font color='red'><h1>Piccolo esempio di web server in rete locale</font></h1>");
          client.println("<hr />");
          client.println("<font color='blue' size='5'>Temperatura attuale del laboratorio: ");        
          termometro();
          client.print(temperatura);
          client.println("<form><input type=submit value=AGGIORNA ></form>"); 
          client.println("<hr />");
          client.println("<font color='blue' size='5'>Laboratorio di Sistemi Informatici ed Elettronica/Telecomunicazioni"); 
          client.println("
");           
          client.println("<hr />");
          client.println("<form><input type=submit name=L value=LED_ON> </form>");                       
          client.println("<hr />");
          client.println("<form><input type=submit name=L value=LED_OFF ></form>");                       
          client.println("<hr />");   
          client.print("<font size='5'>Stato LED: ");
          if (LEDON)
              client.println("<font color='green' size='5'>ON"); 
          else
              client.println("<font color='red' size='5'>OFF"); 
          client.print("<hr /><font color='black' size='4'><p>Questa pagina e' stata creata in HTML usando i Form, risiede in web server minimale basato sull' integrato W5100,");
          client.print("e' gestita da una (MCU micro controller unit) sostanzilmente micro computer programmato in C, ATmega 328P-PU (Pico-Power-Unit)..a risparmio energetico");
          client.println("</body></html>");
          readString="";
          client.stop();
            }
          }
       }
    }
 }     



void termometro(){
  int cont,ref,sensoreTemperatura;
  int ref_medio = 0; 
  int sensoreTemperatura_medio = 0; 
  float prev_temperatura = 0; 
  
  for( cont = 0; cont < 10; cont++)
  {
    sensoreTemperatura = analogRead(LM35_TEMP); 
    sensoreTemperatura_medio += sensoreTemperatura;
    ref = analogRead(LM35_REF);
    ref_medio += ref; 
    delay(50);
  } 
  if(cont == 10)
  {
    cont = 0;
    sensoreTemperatura_medio = sensoreTemperatura_medio / 10;
    ref_medio = ref_medio / 10;
    temperatura = (sensoreTemperatura_medio - ref_medio) * 100/2.56;
    temperatura = temperatura * 5/1024;
    prev_temperatura = temperatura; 
    sensoreTemperatura_medio = 0;
    ref_medio = 0;
  }
  else{
    temperatura = prev_temperatura;
  }
}

Grazie Mirco :slight_smile: ora guardo subito :slight_smile:

Ok, ho fatto un passo avanti.
Immessi il gateway e la subnet il modem li riconosce.. sono stato uno scemo a non pensarci subito :sweat_smile:

Ora però connesso ad internet non riesco ad entrare nella pagina caricata nell'arduino, mi disconnetto e provo.

Guarda io ho provato il tuo sketch e funziona
Ovviamente come unica cosa ho cambiato l'ip per non dover risettare da capo il router.
Però per il resto non ho toccato nulla.
Come hai impostato il router tu???Sei sicuro dell' IP??? Hai provato a mettere anche il gateway e la subnet in ethernet.begin()???

EDIT : ops abbiamo scritto in contemporanea :stuck_out_tongue:

presumo che l’indirizzo ip del router sia 192.168.0.1 (verifica), se è così mettiti un ip fisso 192.168.0.10 (forse 192.168.0.2 è usato internamente dal router.
Controlla che non ci siano filtri sui mac abilitati.
Prova a vedere se risponde al ping dal pc.

Ora funziona senza problemi :slight_smile:

Avrei bisgno di un altro consiglio ora, e visto che ci siete voi esperti ad aiutarmi ne approfitto :slight_smile:

Devo leggere dei dati ed inviarli ciclicamente ad una pagina php su server remoto che li salverà in un database, come potrei fare ? che sia una cattiva idea usare arduino come se fosse un banale form.html ???

Ciao

Devo leggere dei dati ed inviarli ciclicamente ad una pagina php su server remoto che li salverà in un database

una via potrebbe essere quella di far effettuare la GET da Arduino stesso vs il server php.
Es:
http://server_php/data.php?val1=3&val2=9
dove data.php potrebbe essere il tuo script php, e 3 e 9 due valori da salvare.

anche json potrebbe essere una strada
http://www.json.org/

ratto93:
Ok, ho fatto un passo avanti.
Immessi il gateway e la subnet il modem li riconosce.. sono stato uno scemo a non pensarci subito :sweat_smile:

:slight_smile:

BrainBooster, se ne avessi il tempo proverei anche ma qui il tempo stringe e giugno sembra già vicino :cold_sweat:

Non capisco dove sbaglio…
ho scritto questo semplice codice .php

<HTML>
<HEAD>
<TITLE>Accesso al servizio</TITLE>
</HEAD>
<BODY>
<H2>Gestione accessi</H2>
<HR>
<?php

 $temperatura     = $_GET["temperatura"];
 $umidità  = $_GET["umidità"];
 echo "La temperatura attuale è di $temperatura °.
";
 echo "L'umidità è pari al $umidità % 
";
 echo "alle ore", date("H:i:s"),"del giorno",date("d-m-Y");
  
?>
</BODY>
</HTML>

e questo codice su arduino :

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

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};

Server server(80);

void setup()
{
  Ethernet.begin(mac,ip,gateway,subnet);
  server.begin();
}

void loop()
{
  // listen for incoming clients
  Client client = server.available();
  if (client) {
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        if (c == '\n' && currentLineIsBlank) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          client.println("<FORM ACTION=http://ratto93.altervista.org/index.php METHOD=GET>");
          client.println("asdfghj");
          client.println("<INPUT Type=text NAME=temperatura>");
          client.println("asfdsgtew");
          client.println("<INPUT Type=text NAME=umidita>");

        }
        if (c == '\n') {
          currentLineIsBlank = true;
        } 
        else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
    client.stop();
  }
}

Arduino è correttamente connesso al router ora, ma non visualizzo nulla nella pagina generata dallo script, dove sbaglio ? :slight_smile:
perdonate la mia ignoranza…