Hola que tal llevo mucho tiempo con este codigo intentando resolver este problema con un sim800L v2. he estado probrando con el siguiente codigo que lo obtuve de un tutorial de youtube. Arduino y SIM800L EVB - Envía Mensajes de Texto - YouTube
He seguido cada paso inclsuo he revisado el datashet del SIM800l para su conexion, lo estoy alimentando con 5V y 2A de una fuente externa.
Al parecer todo funciona bien en el monitor Serie me aparecen los mensajes que deberian de aparecer el sim800l funciona de manera correcta, el probelma es que nunca recibo ningun mensaje.
he probado con distintos chips e incluso de di a la tarea de buscar uno anterior que aun funcione con redes 2G o 3G y sigo sin recibir el mensaje.
Espero me puedan ayudar muchas gracias.
#include <SoftwareSerial.h>
SoftwareSerial Sim800_RxTx(10,11); // 10 RX, 11 TX.
byte Pul_1 = 5;
byte Pul_2 = 7;
int EstadoPul_1,EstadoPul_2 = 0;
void setup()
{
Serial.begin(9600);
Sim800_RxTx.begin(9600);
// pinMode(Pul_1, INPUT_PULLUP);
// pinMode(Pul_2, INPUT_PULLUP);
pinMode(Pul_1, INPUT);
pinMode(Pul_2, INPUT);
Serial.println("Iniciando Control Sim800L...");
}
void loop()
{
EstadoPul_1 = digitalRead(Pul_1);
EstadoPul_2 = digitalRead(Pul_2);
if (EstadoPul_1 == LOW) {
Serial.println("Enviando primer mensaje");
EnviarMensaje("0987136097", "Peligro Incendio");
delay(2000);
}
if (EstadoPul_2 == LOW) {
Serial.println("Enviando segundo mensaje");
EnviarMensaje("0988408441", "Peligro Movimiento Detectado");
delay(2000);
}
}
void EnviarMensaje(String StrNumTelf, String StrMensaje)
{
String StrTramaAT = "AT+CMGS=\"+" + StrNumTelf + "\"\r";
// Sim800_RxTx.print("AT+CMGS=\"+0987136097\"\r")
Serial.println("Enviando el Mensaje ..."); //Show this message on serial monitor
Sim800_RxTx.print("AT+CMGF=1\r"); //Set the module to SMS mode
delay(100);
Sim800_RxTx.print(StrTramaAT); //Your phone number don't forget to include your country code, example +212123456789"
delay(500);
Sim800_RxTx.print(StrMensaje); //This is the text to send to the phone number, don't make it too long or you have to modify the SoftwareSerial buffer
delay(500);
Sim800_RxTx.print((char)26);// (required according to the datasheet)
delay(500);
Sim800_RxTx.println();
Serial.println("Texto Enviado.");
delay(500);
}
¿Has probado conectando el pin VDD a 5V?
Saludos
Creo que deberias añadir capturas del monitor serial o copiar el texto que te sale para un mejor diagnostico, asi tambien ejecutar el comando AT+CSQ para saber si hay señal de tu proveedor móvil desde el lugar desde donde te encuentras, asi tambien leyendo en el datasheet de los comandos AT se sugiere que la forma en que estas enviando no es la correcta Comandos AT
String StrTramaAT = "AT+CMGS=\"+" + StrNumTelf + "\"\r";
Segun el datasheet si vas a poner el "+" debes enviarlo en formato internacional segun veo ese numero parece ser de ecuador puedes poner de esta forma el numero con el código internacional 593 antes del número
EnviarMensaje("593968600400", "Peligro Incendio");
Y por cierto espero que esos numeros no sean verdaderos porque sino te recomendaria por seguridad editar tu post y borrarlos porque este foro es público
Los números son los que están en el código del tutorial, y seguramente el autor los dejó para "promocionarse".
Claramente el PO los debe de haber cambiado por el suyo (espero).
Y es cierta tu observación, se debe poner el código de país, incluso está comentado en el código
Sim800_RxTx.print(StrTramaAT); //Your phone number don't forget to include your country code, example +212123456789"
[Off-topic]
Es lamentable ver códigos que han mutado con el tiempo porque quienes los reproducen agregan su granito de arena para empeorarlos.
En este caso, el autor del tutorial no puso el prefijo de Ecuador en su ejemplo. O sea, hizo un tutorial con un código que tal como está no le debió funcionar ni a él mismo. 
Se refiere a alimentar también Arduino con esos 5V y 2A de la fuente externa?
No, te pregunté si probaste conectando el pin VDD del SIM a 5V.
No, Ok gracias déjeme intentarlo nuevamente y le informare.
¿EL VDD se alimenta con la fuente externa de 2A?
Hola que tal, he probado ejecutar los códigos uno por uno en un código en blanco para ver como funciona el modulo sim y al parecer todos los códigos responden bien, tanto el de saber la señal del proveedor, el cambio de modo SMS así como el simple comando de AT para asegurarme de que el modulo esta bien conectado.
Osea los comandos AT te funcionan cuando los ejecutas uno x uno, allí si puedes enviar el mensaje sms tranquilamente?
Entonces debe ser en la forma que envias los comandos AT, ya que no abres ni cierras la comunicación serial tienes que aumentar los delay que utilizas para que coloquialmente hablando "llegue" la respuesta de los comandos que ejecutas, algo asi como esto:
void EnviarMensaje(String StrNumTelf, String StrMensaje)
{
//Se establece el formato de SMS
String StrTramaAT = "AT+CMGS=\"+593" + StrNumTelf + "\"\r\n"; //593 es el código internacional del pais
Serial.println(StrTramaAT);
//configurar modulo modo SMS
Sim800_RxTx.write("AT+CMGF=1\r");
delay(1000);
//Enviar comando para un nuevo SMS al numero establecido
Sim800_RxTx.print(StrTramaAT);
delay(1000);
//Enviar contenido del SMS
Sim800_RxTx.print(StrMensaje);
delay(1000);
//Enviar Ctrl+Z para determinar que ese fue todo el mensaje
Sim800_RxTx.write((char)26);
delay(1000);
Serial.println("Texto Enviado.");
}
Prueba a cambiar los delay unos sugieren manejar delay de 3000 ms, aunque lo ideal seria abrir y cerrar la comunicación serial pero la verdad aún no se como hacer eso jjj
Volvamos unos post para atrás...
En el código de #1 (que es textual el del tutorial de donde lo tomaste) los SMS se envían al los teléfonos del autor (Innova)
¿Cambiaste los números por el tuyo, verdad?
Recuerda que debes poner el prefijo de país, por ej. el de Argentina es +54, como el "+" ya está prefijado en el código, si yo tuviese que enviar un mensaje a un teléfono de Bs. As debería cargar "541199990000", donde 54 es el prefijo de país, 11 el código de área de Bs. As. y 99990000 sería el número de abonado.
Asi es, cambie mi numero por los que tiene el codigo y tambien ponia mi codigo, yo soy de mexico asi que ponia el +52