Ciao a tutti, purtroppo sono dovuto ricorrere al forum poichè è da un mesetto che sbatto la testa sul tavolo perchè il mio arduino si blocca.
Mi spiego meglio:
ho un arduino mega con ethernet shield, ho impostato arduino per registrare dei valori da due ingressi analogici poi fa un paio di operazioni e dopo 10 minuti li invia al mio sito web tramite funzione GET per caricarli sul database di Aruba.
Il problema è che appena avviato a volte non si connette ad internet, poi riavviandolo si connette e comincia a registrare i dati, dopo 10 minuti esegue la chiamata alla pagina PHP per caricare i dati sul DB. Purtroppo però non riesco a farlo dialogare, sembrerebbe come se il tempo di attesa per la connessione sia troppo lungo. Allora ho provato a ridurre il tempo a 2 minuti e comincia a caricare sul DB. Fino a qui tutto ok (lo preferirei ogni 10 min ma non funziona… e non so il perchè), se non fosse che dopo un’ora o due ed a volte anche prima, smette di dialogare con il server. Via monitor seriale vedo che continua a caricare dati e fa la connessione al server ma non registra nulla sul DB.
Sto impazzendo. L’ho provato con Altervista ma non cambia nulla, ho provato in locale ma niente comunque. Ho provato a scopiazzare un po di codice qua e là ma agli altri funziona ed a me no. Ho provato a cambiare arduino ed ethernet shield ma non si risolve.
Qualcuno riuscirebbe a darmi una mano?
Grazie a tutti per la pazienza.
Di seguito vi riporto il codice:
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char server[] = "www.dominio.com";
EthernetClient client;
int led_con_1 = 1;
int led_con_2 = 2;
float Volt = A0; //sensore di tensione
float Corrente = A5; // sensore di corrente
//variabili:
//int Pot = 0;
//int contatoreS = 0; //contatore secondi
//int contatoreMin = 0; //contatore minuti
//int CPot = 0; //contatore potenza
//int energia = 0; //contatore energia
//int energia10= 0; //contatore energia 10 minuti
void setup()
{
Serial.begin(9600);
Serial.println("Connessione...");
pinMode(led_con_1, OUTPUT);
pinMode(led_con_2, OUTPUT);
pinMode(Volt, INPUT);
pinMode(Corrente, INPUT);
if(Ethernet.begin(mac) == 0)
{
// start ethernet using mac & DHCP
Serial.println("Failed to configure Ethernet using DHCP");
}
delay(1000); // give the Ethernet shield a second to initialize
Serial.print("This IP address: ");
IPAddress myIPAddress = Ethernet.localIP();
Serial.println(myIPAddress);
delay(500);
Serial.print("connessione");
Serial.println(" in corso...");
delay(1500);
}
void loop()
{
query();
}
void query(){
float V;
float I;
float Pot;
float CPot;
float X;
int S;
float E;
float CE;
float Y;
int M;
int N;
int Min;
Min = 0;
X = 0;
for (int M=1; M <= 10; M = M+1) {
N=0;
Y=0;
for (int S=1; S <= 60; S = S+1) {
int Volt1 = analogRead (0);
int Corrente1 = analogRead (5);
V = ((float)Volt1*5/22);
Serial.print("Volt: ");
Serial.println(V);
I = ((float)Corrente1*5/250);
Serial.print("Corrente: ");
Serial.println(I);
Pot = V * I;
Serial.print("Potenza: ");
Serial.println(Pot);
X = X + Pot;
CPot = X;
Serial.print("Contatore potenza: ");
Serial.println(CPot);
N = N+1;
Serial.print("Secondi: ");
Serial.println(N);
delay(1000);
}
E = CPot / 60;
Serial.print("Energia: ");
Serial.println(E);
CE = Y + E;
Serial.print("Contatore energia: ");
Serial.println(CE);
Min = Min+1;
Serial.print("Minuti: ");
Serial.println(M);
}
if (client.available()) {
char c = client.read();
Serial.print(c);
}
if (!client.connected())
{
Serial.println();
digitalWrite(led_con_1, HIGH);
digitalWrite(led_con_2, LOW);
Serial.println("Connessione in corso...");
client.stop();
}
// if there's a successful connection:
if (client.connect(server, 80)) {
Serial.println("Connesso");
delay (1000);
Serial.print("Tensione: ");
Serial.println(V);
Serial.println();
Serial.print("Corrente: ");
Serial.println(I);
Serial.println();
//Controllo LCD
Serial.println("Richiesta http in corso");
// HTTP request:
client.println();
client.print("GET /paginaphp.php?ten=");
client.print(V);
client.print("&cor=");
client.print(I);
client.print("&Energia10=");
client.print(CE);
client.println(" HTTP/2.0");
client.println("Host: dominio.com");
client.println("User-Agent: arduino-ethernet");
client.println("Connection: close");
delay (1000);
client.println();
Serial.println("Richiesta http completata");
delay (3000);
}
else {
// if you couldn't make a connection:
Serial.println("Connessione fallita");
Serial.println("Disconnesso.");
//Controllo LCD
client.stop();
delay(1000);
}
}