Go Down

Topic: Arduino uno + Ethernet shield + Fastweb (Read 15413 times) previous topic - next topic

davix10

Scusa ma come devo fare? sono alle prime armi con arduino. Ho aperto il serial monitor e poi cosa devo fare?

PaoloP


Scusa ma come devo fare? sono alle prime armi con arduino. Ho aperto il serial monitor e poi cosa devo fare?


Ho leggermente modificato lo sketch inserendo qualche scritta sulla seriale.
Copialo nell'IDE e fai l'upload su Arduino.
Poi, lasciando Arduino collegato con la Usb e con il cavo Ethernet (ovviamente), apri il serial monitor.
Controlla la velocità di collegamento nella finestra del serial monitor. deve essere 9600 come quella dello sketch.

Una volta che vedi le scritte prova a collegarti con Android e controlla se stampa qualcos'altro nel serial monitor.

Code: [Select]
#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xBE };
byte ip[] = {
  192 ,168 ,1 ,150 };
byte gateway[] = {
  192 ,168 ,1 ,130 };
byte subnet[] = {
  255 ,255 ,255 ,0 };
EthernetServer server(80);
String readString = String(30);

void setup(){
  delay(2000);
  Ethernet.begin(mac, ip, gateway, subnet);
  delay(1000);
  pinMode(5, OUTPUT);
  digitalWrite(5, LOW);
  Serial.begin(9600);
  Serial.print("Serial Start! at ");
  Serial.print(millis());
  Serial.println(" microsecond.");

  // Stampa dati Ethernet
  Serial.print("Local IP: ");
  Serial.println(Ethernet.localIP());
  Serial.print("SubnetMask: ");
  Serial.println(Ethernet.subnetMask());
  Serial.print("Gateway: ");
  Serial.println(Ethernet.gatewayIP());
  Serial.print("DNS Server: ");
  Serial.println(Ethernet.dnsServerIP());
}

void loop(){
  EthernetClient client = server.available();
  if (client) {
    Serial.println("Client presente");
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        if (readString.length() < 30)
        {
          readString = readString + c;
        }
        if (c == '\n') {
          Serial.print(readString);
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();

          if(readString.startsWith("GET /?out=5&status=1"))
          {
            Serial.print("\n 5 HIGH \n");
            digitalWrite(5, HIGH);
            client.print("{\"status\" : \"1\" , \"out\" : \"");
            client.print(5);
            client.print("\"}");
          }
          if(readString.startsWith("GET /?out=5&status=0"))
          {
            Serial.print("\n 5 LOW \n");
            digitalWrite(5, LOW);
            client.print("{\"status\" : \"0\" , \"out\" : \"");
            client.print(5);
            client.print("\"}");
          }

          if(readString.startsWith("GET /?out=all"))
          {
            Serial.print("\n OUT ALL\n");
            client.print("{\"ip\" : \" 192.168.1.150\", ");
            client.print("\"devices\" : ");
            client.print("[{ \"type\" : \"light\", \"name\" : \"Led\", \"out\" : \"");
            client.print("5");
            client.print("\"}");
            client.print("]}");
          }
          readString="";
          client.stop();
        }
      }
    }
  }
}

davix10

Quote
Serial Start! at 3300 microsecond.
Local IP: 192.168.1.150
SubnetMask: 255.255.255.0
Gateway: 255.255.255.0
DNS Server: 192.168.1.130
Client presente
30GET /?out=all HTTP/1.1
Client presente
GET /?out=all HTTP/1.1

OUT ALL

questo è ciò che mi stampa solo che da cellulare c'è sempre lo stesso errore di connessione.

davix10

Ho provato a rifarlo adesso e mi esce solo la prima parte
Quote
Serial Start! at 3300 microsecond.
Local IP: 192.168.1.150
SubnetMask: 255.255.255.0
Gateway: 255.255.255.0
DNS Server: 192.168.1.130

PaoloP


Quote
Serial Start! at 3300 microsecond.
Local IP: 192.168.1.150
SubnetMask: 255.255.255.0
Gateway: 255.255.255.0
DNS Server: 192.168.1.130
Client presente
30GET /?out=all HTTP/1.1
Client presente
GET /?out=all HTTP/1.1

OUT ALL

questo è ciò che mi stampa solo che da cellulare c'è sempre lo stesso errore di connessione.


Se l'errore è nell'applicazione android non so che dirti. =(

davix10

No l'applicazione no perchè è testata e ho visto dei video in cui funziona. Solo che ora anche se faccio http://192.168.1.150/?out=all mi dice che è impossibile trovare la pagina mentre prima mi scriveva una stringa tipo questa {"ip" : "192.168.10.23?, "devices" : [{ "type" : "light", "name" : "led", "out" : "5"}]}


davix10

Rettifico quanto detto ora ottengo
Quote
Serial Start! at 3300 microsecond.
Local IP: 192.168.1.150
SubnetMask: 255.255.255.0
Gateway: 255.255.255.0
DNS Server: 192.168.1.130
Client presente
30GET /?out=all HTTP/1.1
Client presente
GET /?out=all HTTP/1.1

OUT ALL
Client presente
GET /?out=all HTTP/1.1

OUT ALL
Client presente
GET /favicon.ico HTTP/1.1

l'unico problema è che quando provo ad accenderlo dall'applicazione mi dice di controllare la connessione con arduino

Brunello

Gateway 255.255.255.0 ??

dall'Ide 1.0 la sintassi e' la seguente

Ethernet.begin(mac, ip, subnet, gateway);

PaoloP


Gateway 255.255.255.0 ??

dall'Ide 1.0 la sintassi e' la seguente

Ethernet.begin(mac, ip, subnet, gateway);

Bravo Brunello, non mi ero proprio accorto di quell'errore.

davix10

Ho provato anche a sostituire la stringa ma non cambia nulla. Secondo il cellulare arduino non è connesso ad internet.

davix10

Come posso fare per verificare se è un problema di Fastweb o di impostazioni errate?

PaoloP

Dovresti andare a casa di qualcuno con un'altro operatore telefonico e provare li.

davix10

Se collegassi un router in cascata a quello di Fastweb potrebbe andare bene o sarebbe la stessa cosa?

pablos

#28
Aug 10, 2012, 12:28 pm Last Edit: Aug 10, 2012, 12:52 pm by pablos Reason: 1
Non è un problema di fastweb, è quel programma che è un pacco
L'ho provato giusto per condividere il tuo dolore  :D, android da un errore di connessione e i parametri sono corretti

Poi ho letto i commenti sul market android riguardo quell'applicazione ... fa cag.....  :D

prova a scriver dal browser
http://192.168.1.150/?out=all

dovresti ottenere questa risposta
{"ip" : " 192.168.1.150", "devices" : [{ "type" : "light", "name" : "Led", "out" : "5"}]}

e sul serial monitor
OUT ALL
GET /?out=5&status=1 HTTP/1.1
5 HIGH

la connessione c'e' ed è corretta ma android da sempre errore di sync
no comment

davix10

Si è vero ottengo tutto quello che hai scritto te! Ma non c'è un modo anche con un altra applicazione?
Grazie

Go Up