Vi posto il codice completo , magari sbaglio io qualche cosa
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "inetGSM.h"
#include <avr/wdt.h>
#include "sms.h"
#include "call.h"
SMSGSM sms;
CallGSM call;
InetGSM inet;
String Z;
int RSSI;
int BER;
int I;
int J;
char msg[50];
boolean started=false;
int resetsystem = 0 ;
int ledtx = 6 ;
int ledber = 7 ;
char risultato[100];
char ip_address [50];
int IP1 ;
int IP2 ;
int IP3 ;
int IP4 ;
void setup()
{
Serial.begin(9600);
pinMode (ledtx,OUTPUT);
digitalWrite ( ledtx,LOW );
pinMode (ledber,OUTPUT);
digitalWrite ( ledber,LOW );
if (gsm.begin(4800)){
Serial.println("INIZIALIZZAZIONE MODULO GSM REGOLARE");
started=true;
} else {
Serial.println("INIZIALIZZAZIONE MODULO GSM FALLITA");
wdt_enable(WDTO_1S);
}
if (inet.attachGPRS("internet.wind", "", "")) {
Serial.println("COLLEGAMENTO AL PROVIDER");
digitalWrite(ledtx,HIGH);
// accendo il LED di aggancio alla rete
} else {
Serial.println("ERRORE COLLEGAMENTO AL PROVIDER");
wdt_enable(WDTO_1S);
// accendo il LED di errore di aggancio alla rete
}
// ricavo l'indirizzo IP e lo divido in 4 numeri interi
gsm.SimpleWriteln("AT+CIFSR");
delay(5000);
gsm.WhileSimpleRead(risultato);
Serial.println(risultato);
String Risposta2 = String(risultato);
byte SEP1 = Risposta2.indexOf(".");
String ip_1 = Risposta2.substring(0,SEP1);
String rimanenza1 = Risposta2.substring(SEP1+1,30);
byte SEP2 = rimanenza1.indexOf(".");
String ip_2 = rimanenza1.substring(0,SEP2);
String rimanenza2 = rimanenza1.substring(SEP2+1,30);
byte SEP3 = rimanenza2.indexOf(".");
String ip_3 = rimanenza2.substring(0,SEP3);
String rimanenza3 = rimanenza2.substring(SEP3+1,30);
byte SEP4 = rimanenza3.indexOf(".");
String ip_4 = rimanenza3.substring(0,SEP4);
IP1 = ip_1.toInt();
IP2 = ip_2.toInt();
IP3 = ip_3.toInt();
IP4 = ip_4.toInt();
};
void loop(){
send_data();
Serial.println(resetsystem);
if (BER <= 20) {
digitalWrite( ledber , LOW ) ;
delay(500);
digitalWrite( ledber , HIGH ) ;
delay(500);
digitalWrite( ledber , LOW ) ;
delay(500);
digitalWrite( ledber , HIGH ) ;
delay(500);
digitalWrite( ledber , LOW ) ;
delay(500);
digitalWrite( ledber , HIGH ) ;
} else if ( BER > 20 ) {
digitalWrite( ledber , HIGH ) ;
}
};
void send_data() {
int ANALOG0 = digitalRead(A0);
int ANALOG1 = digitalRead(A1);
int ANALOG2 = digitalRead(A2);
int ANALOG3 = digitalRead(A3);
int ANALOG4 = digitalRead(A4);
int ANALOG5 = digitalRead(A5);
int DIGITAL10 = digitalRead(10);
int DIGITAL11 = digitalRead(11);
int DIGITAL12 = digitalRead(12);
int DIGITAL13 = digitalRead(13);
resetsystem = resetsystem + 1 ;
if ( resetsystem == 10 ) {
wdt_enable(WDTO_1S);
}
if(started){
if (inet.attachGPRS("internet.wind", "", "")) {
Serial.println("COLLEGAMENTO AL PROVIDER");
digitalWrite(ledtx,HIGH);
// accendo il LED di aggancio alla rete
} else {
Serial.println("ERRORE COLLEGAMENTO AL PROVIDER");
wdt_enable(WDTO_1S);
// accendo il LED di errore di aggancio alla rete
}
gsm.SimpleWriteln("AT+CSQ");
delay(500);
gsm.WhileSimpleRead(risultato);
String Risposta = String(risultato);
// da qui sotto serve per pulire cio che ricevo dal comando CSQ
// e tengo solo il valore senza virgole
I = Risposta.indexOf("+CSQ");
I = Risposta.indexOf(":");
J = Risposta.indexOf(",");
Z = Risposta.substring(I,J);
RSSI = Z.toInt();
Z = Risposta.substring(J -2);
BER = Z.toInt();
// ho ottenuto BER che e il segnale espresso in numero intero
inet.httpGET("www.miosito.it",80,"/data_rx/ricezione_data.php?seriale=98890211&campo=",BER,"&ip1=",IP1,"&ip2=",IP2,"&ip3=",IP3,"&ip4=",IP4,
"&analog0=",ANALOG0,"&analog1=",ANALOG1,"&analog2=",ANALOG2,"&analog3=",ANALOG3,"&analog4=",ANALOG4,"&analog5=",ANALOG5,
"&digital10=",DIGITAL10,"&digital11=",DIGITAL11,"&digital12=",DIGITAL12,"&digital13=",DIGITAL13,msg,50);
}
digitalWrite(ledtx,LOW);
};
magari ho sbagliato qualche cosa , tipo aprire e chiudere le connessioni !!!!