Duda sobre el modulo SIM900

hola chicos, estoy probando el modulo SIM900 y mi única finalidad era enviar un mensaje pero no logro hacerlo, puedo hacer llamadas sin problema, los comandos AT me responden bien, pero cuando quiero mandar un mensaje de texto nunca llega, ya probé muchísimas combinaciones de código, ya que vi que en varios códigos hay algunas variantes y ninguna funciona, este es el código que estoy usando

#include <SoftwareSerial.h> //Se incluye la librería de "SoftwareSerial"
SoftwareSerial sim900(7, 8); // Se define los pines para la comunicación serial 
void setup() {

 sim900.begin(9600);   // Configuración de la velocidad en baudios del módulo SIM900
 Serial.begin(9600);    // Configuración de la velocidad en baudios del monitor serie (Arduino)
 delay(1000);
 sim900.println("AT+CPIN=\"1111\"");
 delay(25000);
} 

void loop() {


envio_sms();  // esta funcion la cambio por "hacer_llamada()" cuando quiero llamar
while (1);


}

void envio_sms()
{
Serial.println("Enviando sms...");
sim900.print("AT+CMGF=1\r"); // Establecer en modo envió de sms
delay(100);
/* Se le asigna el numero, debes cambiar la clave de acuerdo al país si eres de México 
solo agrega el numero al que enviaras el sms */
sim900.print("AT+CMGS=\"525577656266\""); 
delay(1000);
sim900.print("Hola, Saludos"); // Contenido que llevara el sms
//sim900.print("\r"); 
delay(100);
sim900.print((char)26);
delay(100);
sim900.println();
delay(5000);
Serial.println("SMS Enviado...");
//delay(5000);

}

void hacer_llamada()
{
/* Se marca al numero, debes cambiar la clave de acuerdo al país si eres de México 
solo agrega el numero al que llamaras */
sim900.println("ATD+5215577656266;"); 
delay(100);
sim900.println();
}

yo suponía que el error estaba en esta linea "sim900.print(“AT+CMGS=“525577656266"”);”
así que he probado muchas cosas aquí, por ejemplo poner el numero completo como en llamada, escribir el signo + antes del numero, poner o quitar las claves de mi pais, usar un caracter “r” al final, etc. pero sigo sin poder enviar el mensaje, como notas adicionales estoy usando una fuente aparte para el modulo y comparto tierras (como mencione si me responden los comandos at y se pueden hacer llamadas), la verdad no se que puede estar mal

prueba con estos cambios. A mi hace años que me funcionan

void envio_sms()
{
Serial.println("Enviando sms...");
sim900.print("AT+CMGF=1\r"); // Establecer en modo envió de sms
delay(1000); // mejor 1000
/* Se le asigna el numero, debes cambiar la clave de acuerdo al país si eres de México
solo agrega el numero al que enviaras el sms */
sim900.print("AT+CMGS=\"525577656266\"\r"); // falta el \r
delay(1000);
sim900.print("Hola, Saludos"); // Contenido que llevara el sms
sim900.print("\r"); //activar el \r
delay(1000); // mejor 1000
sim900.print((char)26);
//delay(100); // comentar
sim900.print("\r"); // mejor el \r
delay(5000);
Serial.println("SMS Enviado...");
//delay(5000);

}

Y en vez de delays, monta una función que espere a la respuesta del sim900, con lo cual será todo mas rápido

Saludos

Muchas gracias, funciono! al parecer faltaba la diagonal invertida y carácter “r” al final, asi como esta el código que me pusiste solo agregue el símbolo “+” antes del numero y al fin envió el mensaje :D, ahi les comparto el codigo completo por si alguien en el futuro ve este post

 #include <SoftwareSerial.h> //Se incluye la librería de "SoftwareSerial"
SoftwareSerial sim900(7, 8); // Se define los pines para la comunicación serial 
void setup() {

 sim900.begin(9600);   // Configuración de la velocidad en baudios del módulo SIM900
 Serial.begin(9600);    // Configuración de la velocidad en baudios del monitor serie (Arduino)
 delay(1000);
 sim900.println("AT+CPIN=\"1111\""); // el pin de la tarjeta sim, normalmente 1234, 0000, 1111, tienes que averiguarlo según tu sim
 delay(25000);
} 

void loop() {

envio_sms(); // esta función se cambia por "hacer_llamada()" para llamar
while (1);

}
void envio_sms()
{
Serial.println("Enviando sms...");
sim900.print("AT+CMGF=1\r"); // Establecer en modo envió de sms
delay(1000); // mejor 1000
/* Se le asigna el numero, debes cambiar la clave de acuerdo al país si eres de México
solo agrega el numero al que enviaras el sms */
sim900.print("AT+CMGS=\"+5255........\"\r"); 
delay(1000);
sim900.print("Hola, Saludos A"); // Contenido que llevara el sms
sim900.print("\r"); //activar el \r
delay(1000); // mejor 1000
sim900.print((char)26);
//delay(100); // comentar
sim900.print("\r"); // mejor el \r
delay(5000);
Serial.println("SMS Enviado...");
//delay(5000);

}

void hacer_llamada()
{
/* Se marca al numero, debes cambiar la clave de acuerdo al país si eres de México 
solo agrega el numero al que llamaras */
sim900.println("ATD+52155........;"); 
delay(100);
sim900.println();
}