Go Down

Topic: Problemi invio POST con Arduino UNO Rev3 & Ethernet Shield Rev3 & IDE 1.0.1 (Read 816 times) previous topic - next topic

fvlgnn

Ciao Community,
ho già fatto alcuni progetti con Arduino ma avevo sempre utilizzato Arduino UNO con Ethernet Shield prima versione e IDE 0023 e precedenti.
Sto lavorando per la prima volta con Rev3 di Arduino e la IDE 1.0.1 e ammetto di avere qualche difficoltà sopratutto con il parametri di configurazione ETH.
Dovrei inviare via POST dei valori ad un foglio di calcolo di Google, il tutto sembra funzionare correttamente ma dopo alcuni invii Arduino si blocca. Lo deduco dal monitor seriale che tace dopo qualche invio, quindi escludo che sia google che ferma le richieste.
Qualcuno di voi ha un idea del perché?
E' il DHCP che ogni tanto si "perde"? Oppure è scritto male il client. connect o dovrei inserire un if client. available?
Lo sketch su cui sto lavorando è il seguente (ho apportato alcuni commenti sulle prove che ho effettuato)

Code: [Select]

#include <SPI.h>
#include <Ethernet.h>
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress server(209,85,229,101);

EthernetClient client;

void setup() {
 Serial.begin(9600);
 Ethernet.begin(mac);
 Serial.println("connecting...");
 delay(1000);
}

void loop() {
 // *** se inserisco  if (client.available())  non funziona ovvero rimane FALSE ***
 client.connect(server, 80); // *** credo che il problema stia qui che dopo un po' perde la connessione ***
 Serial.println("connected");

 // invio dati in POST    
 client.print("POST ...");
 ...
 client.println();

 delay(1000);

 client.stop();
 Serial.println("client stop");

 delay(20000);
}


Come sempre ringrazio tutti voi per il supporto.
Gianni
Il 99% dei problemi informatici si trovano tra la tastiera e la sedia!

fvlgnn

Ho notato che se chiudo il monitor seriale una volta che Arduino si è bloccato e lo riapro, Arduino torna a funzionare ma come nelle volte precedenti dopo qualche invio si ri-blocca.
Magari ho sbagliato a scrive male il setup? Mi sembra strano.
E' possibile che il DHCP sia poco stabile e quindi ad ogni loop rischia di perdere la configurazione IP e quindi arduino si blocca?
Grazie ancora per la vostra cortese collaborazione.
Saluti,
Gianni
Il 99% dei problemi informatici si trovano tra la tastiera e la sedia!

lesto

questo perchè quando apri il monitor seriale arduino si resetta.

dovresti cercare di capire DOVE si blocca arduino, anche se probabilmente è un blocco dettato dalla mancanza di ram
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

fvlgnn

lesto come sempre ti ringrazio della tua disponibilità.
Quote
dovresti cercare di capire DOVE si blocca arduino, anche se probabilmente è un blocco dettato dalla mancanza di ram

Si blocca su un qualsiasi client.stop(); o sull'ennesimo client.connect(server, 80); del loop.
Che sia un discorso di ram mi sembra strano dato che invio solo un valore letto da un ingresso analogico.
Lo sketch vi sembra corretto?
Potrebbe essere l'Arduino o lo Shield difettoso?
Ringrazio ancora tutta la community,
Gianni
Il 99% dei problemi informatici si trovano tra la tastiera e la sedia!

fvlgnn

Il 99% dei problemi informatici si trovano tra la tastiera e la sedia!

lesto

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

fvlgnn

A chi interessasse sembra funzionare con questa versione
Code: [Select]

#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress server(x,x,x,x);

EthernetClient client;

void setup() {
  Serial.begin(9600);
  Ethernet.begin(mac);
  client.connect(server, 80);
  delay(1000);
}

void loop() {
  if (client.connect(server, 80)) {
    client.print("POST ...");
    ...
    client.println();
    delay(1000);
    client.stop();
  }
  else {
    delay(1000);
    Serial.println("connessione fallita");
    client.stop();
  }
  delay(150000);
}
Il 99% dei problemi informatici si trovano tra la tastiera e la sedia!

Go Up