Buenos días, tengo un problema con el módulo SIM800L.
Cuando empleo el siguiente código de envío de SMS automático, el uso de comandos AT desde el sketch funciona perfectamente:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(13, 12);
void setup(){
Serial.begin(9600);
mySerial.begin(9600);
delay(1000);
EnviaSMS();
}
void loop(){
if (mySerial.available()){
Serial.write(mySerial.read());
}
if (Serial.available()){
while(Serial.available()) {
mySerial.write(Serial.read());
}
mySerial.println();
}
}
// Funcion para el envio de un SMS
void EnviaSMS(){
mySerial.println("AT+CMGF=1");
delay(100);
mySerial.println("AT+CMGS=\"+34XXXXXXXXX\"");
delay(100);
mySerial.print("Hola Mundo!");
delay(500);
mySerial.print(char(26));
delay(100);
mySerial.println("");
delay(100);
}
Al emplear los siguientes comandos AT desde el monitor serie, envía peticiones HTTP perfectamente:
AT+SAPBR=3,1,"Contype","GPRS"
AT+SAPBR=3,1,"APN","m2m.vodafone.es"
AT+SAPBR=1,1
AT+SAPBR=2,1
AT+HTTPINIT
AT+HTTPPARA="CID",1
AT+HTTPPARA="URL","http://mi.dominio.com.php?variable1=valor1&variable2=valor2"
AT+HTTPACTION=0
AT+HTTPREAD
Y al hacer una mezcla de los dos anteriores códigos sale algo similar a lo siguiente:
#include <SoftwareSerial.h> // Incluimos la libreria SoftwareSerial
SoftwareSerial mySerial(13, 12); // Declaramos los pines RX(8) y TX(9) que vamos a usar
void setup(){
Serial.begin(9600);
mySerial.begin(9600);
delay(1000);
EnviaSMS();
}
void loop(){
if (mySerial.available()){
Serial.write(mySerial.read());
}
if (Serial.available()){
while(Serial.available()) {
mySerial.write(Serial.read());
}
mySerial.println();
}
}
void EnviaSMS(){
delay(8000);
mySerial.println("AT+SAPBR=3,1,\"Contype\",\"GPRS\"");
delay(500);
mySerial.print("AT+SAPBR=3,1,\"APN\",\"m2m.vodafone.es\"");
delay(500);
mySerial.print("AT+SAPBR=1,1");
delay(500);
mySerial.print("AT+HTTPINIT");
delay(500);
mySerial.print("AT+HTTPPARA=\"CID\",1");
delay(500);
mySerial.print("AT+HTTPPARA=\"URL\",\"http://mi.dominio.com.php?variable1=valor1&variable2=valor2\"");
delay(500);
mySerial.print("AT+HTTPACTION=0");
delay(500);
mySerial.print("AT+HTTPREAD");
delay(300);
Serial.print("FIN");
}
Sin embargo no se recogen los valores en la base de datos (mediante la petición get), y no devuelve nada por el monitor serie.
¿Sabe alguien qué problema puede haber?
Gracias.