Buongiorno a tutti,
Il mio problema è il seguente: dopo aver collegato la scheda SIM800L al mio arduino uno, e una volta fatti tutti i passaggi di inizializzazione (led lampeggia una volta ogni 3 sec.), al comando per settare l'APN (sim Things Mobile e APN: TM), il comando restituisce 0 al posto di 1.
Inoltre una volta che passo quel comando, il led lampeggia 3 volte al secondo, segno che è connesso al GPRS.
Qualcuno mi saprebbe spiegare il motivo/indicare cosa sbaglio?
Segue il codice e il messaggio di "errore".
#include <SoftwareSerial.h>
#define SIM800_TX_PIN 2
#define SIM800_RX_PIN 3
//Create software serial object to communicate with SIM800
SoftwareSerial serialSIM800(SIM800_TX_PIN,SIM800_RX_PIN);
void setup() {
//Begin serial comunication with Arduino and Arduino IDE (Serial Monitor)
Serial.begin(9600);
while(!Serial);
//Being serial communication witj Arduino and SIM800
serialSIM800.begin(9600);
Serial.println("Initializing...");
delay(6000);
serialSIM800.println("AT"); //Once the handshake test is successful, it will back to OK
updateSerial();
serialSIM800.println("AT+CSQ"); //Signal quality test, value range is 0-31 , 31 is the best
updateSerial();
serialSIM800.println("AT+CCID"); //Read SIM information to confirm whether the SIM is plugged
updateSerial();
serialSIM800.println("AT+CREG?"); //Check whether it has registered in the network
updateSerial();
serialSIM800.println("AT+CGATT?"); //Check whether GPRS is attached
updateSerial();
Serial.println("Setup Complete!");
delay (1000);
}
void loop() {
boolean flag_data=1;
if(flag_data==1){
getdata();
flag_data = 0;
}
updateSerial();
}
void updateSerial()
{
delay(500);
while (Serial.available())
{
serialSIM800.write(Serial.read());//Forward what Serial received to Software Serial Port
}
while(serialSIM800.available())
{
Serial.write(serialSIM800.read());//Forward what Software Serial received to Serial Port
}
}
void getdata(){
Serial.println("Get data HTTP");
//set up GPRS, connection type
serialSIM800.print("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"\r");
delay(1000);
// set the APN
serialSIM800.print("AT+SAPBR=3,1,\"APN\",\"TM\"\r");
delay(1000);
//tries to connect to GPRS
serialSIM800.print("AT+SAPBR=1,1\r");
delay(2000);
// initialise embedded HTTP ruttine
serialSIM800.print("AT+HTTPINIT\r");
delay(2000);
// set the HTTP session
serialSIM800.print("AT+HTTPPARA=\"CID\",1\r");
delay(1000);
// set the HTTP URL
serialSIM800.print("AT+HTTPPARA=\"URL\",\"mio_URL\r");
delay(1000);
// start the session
serialSIM800.print("AT+HTTPACTION=0\r");
delay(10000);
// read the data of the HTTP server
serialSIM800.print("AT+HTTPREAD\r");
delay(1000);
// terminate the HTTP server
serialSIM800.print("AT+HTTPTERM\r");
delay(100);
serialSIM800.println();
}
Il serial monitor restituisce invece:
Initializing...
AT
OK
AT+CSQ
+CSQ: 25,0
OK
AT+CCID
XXXXXXXXXXXXXXXXX
OK
AT+CREG?
+CREG: 0,5
OK
AT+CGATT?
+CGATT: 0
OK
Setup Complete!
Get data HTTP
AT+SAPBR=3,1,"CONTYPE","GPRS"
OK
AT+SAPBR=3,1,"APN","TM"
OGet data HTTP
AT+SAPBR=3,1,"CONTYPE","GPRS"
OK
AT+SAPBR=3,1,"APN","TM"
Get data HTTP
AT+SAPBR=3,1,"CONTYPE","GPRS"
OK
AT+SAPBR=3,1,"APN","TM"
Get data HTTP
Come si può notare, il comande AT+SAPBR=3,1,"APN","TM" restituisce 0 e poi va in loop.
Grazie per l'aiuto!
P.S. Ho parlato con Things Mobile e mi hanno confermato che l'APN sia bene TM.