Envío de información Fallida desde Arduino.

Saludes a todos, espero esten bien. El motivo de este post es dado que recién comienzo a usar el modulo gsm/gprs Sim900 S2-1040S-Z1K18. Lo he probado varias veces y ya he realizado con éxito llamadas y envío de sms cortos.

Ahora, pruebo la parte de conexión a internet y envio de info a una base de datos. Pero ahora que deseo enviar cierta info de una variable en especifico me he quedado corto, el modulo trabaja con comandos AT y algunos de estos comando me son nuevos.

Realice mi código, pero funciona a medias. Tengo mi base de datos en Mysql y la he probado enviándole valores desde el navegador y estos llegan bien a la base de datos, pero cuando los envío desde el arduino no sucede nada.

Adjunto mi codigo, un ejemplo de una funcion relacionada.

#include <SoftwareSerial.h>     // Libreria para la comunicacion con el Modulo SIM900
SoftwareSerial SIM900(10, 11); // Configura el puerto serial para el SIM900. 


//----------------- Variables a utilizar ----------------------//
//SoftwareSerial SIM900(10, 11); // Configura el puerto serial para el SIM900
String Medicion= "HOLA";           // Se inicializa la variable.
int Valor1=5;

// -----------------SIM900--------------
int respuesta;
char aux_str[50];


//--------------------- Setup General --------------------------//
void setup()
{
  Serial.begin(19200);

//************* SIM900 ********//
  SIM900.begin(19200);          //----Configura velocidad del puerto serie para el SIM900
  Serial.begin(19200);          //-----Configura velocidad del puerto serie del Arduino
  delay(1000);
  Serial.println("Iniciando...");
  iniciar();
//***********************************  
}


//--------------------- Ciclo General --------------------------//
void loop()
{
  //************** SIM900 *********//
  while (true)
  {
  delay(20000);
  if (SIM900.available() & (Serial.available())) 
  {
    Serial.write(SIM900.read());
  }
  //**************************************************************//
  }
}



//--------------------- Funciones a utilizar ---------------------//

//************* Inicio de la conexion GPRS ********//
void iniciar()
{
  enviarAT("AT+CPIN?", "OK", 2000);  
  Serial.println("Conectando a la red...");
  delay (5000);

  //Espera hasta estar conectado a la red movil
  while ( enviarAT("AT+CREG?", "+CREG: 0,1", 1000) == 0 )
  {
  }
  Serial.println("Conectado a la red.");
  enviarAT("AT+CSQ", "OK", 1000);     
  enviarAT("AT+COPS?", "OK", 1000);     
  enviarAT("AT+CGATT?", "OK", 1000);     
  enviarAT("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"", "OK", 2000);          
  enviarAT("AT+SAPBR=3,1,\"APN\",\"web.emovil\"", "OK", 2000);            
  enviarAT("AT+SAPBR=3,1,\"USER\",\"webemovil\"", "OK", 2000);            
  enviarAT("AT+SAPBR=3,1,\"PWD\",\"webemovil\"", "OK", 2000);            
  enviarAT("AT+SAPBR=1,1", "OK", 2000);                                
  Sensores();
}
//*********************************************//

//************* LECTURA DE VARIABLES ********//
void Sensores()
{
    Valor1=1145;  //-------------------------------------De donde se lee la variable
    Validacion();
}
//*********************************************//

//***** VALIDAR SI SE ESTA CONECTADO A LA RED *******//
void Validacion()
{
  if (enviarAT("AT+CREG?", "+CREG: 0,1", 1000) == 1)  //-----------Comprueba la conexion a la red
    {
      Serial.println("Conexion establecida Exitosamente...");
      delay(500);
      Serial.println("Obteniendo Mediciones...");
      delay(500);
      Reporte();
    }
  else
    {
     Serial.println("No hay conexion. Info Descartada.");
    }
}
//*********************************************//

//***** VALIDAR QUE LOS COMANDOS FUERON ENVADOS ******//
int enviarAT(String ATcommand, char* resp_correcta, unsigned int tiempo)
{
  int x = 0;
  bool correcto = 0;
  char respuesta[100];
  unsigned long anterior;
  memset(respuesta, '\0', 100);   //---------------------------- Inicializa el string
  delay(100);
  while ( SIM900.available() > 0) SIM900.read();    //--------- Limpia el buffer de entrada
  SIM900.println(ATcommand);      //--------------------------- Envia el comando AT
  x = 0;
  anterior = millis();
  // Espera una respuesta
  do {
    // si hay datos el buffer de entrada del UART lee y comprueba la respuesta
    if (SIM900.available() != 0)
    {
        respuesta[x] = SIM900.read();
        x++;
      // Comprueba si la respuesta es correcta
      if (strstr(respuesta, resp_correcta) != NULL)
      {
        correcto = 1;
      }
    }
  }
  // Espera hasta tener una respuesta
  while ((correcto == 0) && ((millis() - anterior) < tiempo));
  Serial.println(respuesta);

  return correcto;
}
//*********************************************//

//*********** REPORTE A LA PAGINA PHP ********//
void Reporte()
{               
      enviarAT("AT+HTTPINIT", "OK", 2000);                 
      enviarAT("AT+HTTPPARA=\"CID\",1\r\n", "OK", 2000);    
       enviarAT("AT+HTTPPARA=\"URL\",\"https://www.navuni.mipropia.com/Pagina1.php?Medicion=""1128""\"", "OK", 500);
      delay(2000);
      enviarAT("AT+HTTPACTION=0\r\n", "OK", 10000);
      enviarAT("AT+HTTPTERM\r\n", "OK", 2000);
      enviarAT("AT+SAPBR=0,1", "OK", 2000);
      Serial.println("Enviado");
      delay(3000); 
}

Y el codigo de mi base de datos es el siguiente

<?php

$conexion = mysql_connect("abcde", "abcde", "abcde");
mysql_select_db("abcde", $conexion);

mysql_query("INSERT INTO  `Mediciones` (`Medicion`,`Hora`,`Fecha`) VALUES ('". $_GET['Medicion'] . "', CURTIME(),CURDATE())",  $conexion);
?>

Cuando pruebo mi codigo, esto es lo que obtengo en mi monitor Serie

Iniciando...
AT+CPIN="1234"

ERROR

Conectando a la red...
AT+CREG?

+CREG: 0,1
Conectado a la red.
AT+CGATT=1


OK
AT+CSTT="internet.movistar.ni","movistarni","movistarni"

ERROR

AT+CIICR

ERROR

A
AT+CREG?

+CREG: 0,1
Conexion establecida Exitosamente...
Obteniendo Mediciones...
AT+SAPBR=3,1,"CONTYPE","GPRS"

OK
AT+SAPBR=3,1,"APN","internet.movistar.ni"

OK
AT+SAPBR=2,1

+SAPBR: 1,3,"0.0.0.0"

OK
AT+HTTPINIT

OK
AT+HTTPPARA="URL","http://www.navuni.mipropia.com/Pagina1.php?


ERROR

AT+HTTPREAD=425,100


OK
AT+HTTPPARA="CID",1


OK
AT+HTTPACTION=0


ERROR

AT+HTTPTERM

OK
Enviado

No se si el problema esta en mi código, oh realmente en mis placas e incluso en mi base de datos, pero si la base de datos me recibe los datos desde el navegador omito que este ahí el error. Estaré agradecido si me aclaran algun error que tenga.

Quedo atento a sus aclaraciones, y gracias de antemano.

Saludes a todos.

Att: NAV

Tras varios intentos, el error prevalece, que impedirá que el comando HTTPINIT se ejecute?

Revise que el modulo se conecte a la Red GPRS y lo hace porque me devuelve un 1 al ejecutar AT+CREG?, pero ya para iniciar el comando de HTTP no lo hace.

Iniciando...
AT+CPIN?

+CPIN: READY

OK
Conectando a la red...
AT+CREG?

+CREG: 0,1
Conectado a la red.
AT+CSQ

+CSQ: 15,0

OK
AT+COPS?

+COPS: 0,0,"MOVISTARNI"

OK
AT+CGATT?

+CGATT: 1

OK
AT+SAPBR=3,1,"CONTYPE","GPRS"

OK
AT+SAPBR=3,1,"APN","internet.movistar.ni"

OK
AT+SAPBR=3,1,"USER","movistarni"

OK
AT+SAPBR=3,1,"PWD","movistarni"

OK
AT+SAPBR=1,1

OK
AT+CREG?

+CREG: 0,1
Conexion establecida Exitosamente...
Obteniendo Mediciones...
AT+HTTPINIT?

ERROR

AT+HTTPINIT

ERROR

AT+HTTPPARA="CID",1


OK
AT+HTTPPARA="URL","http://www.navuni.mipropia.com/Pagina1.php?Medicion=

ERROR

AT+HTTPACTION=0


OK
AT+HTTPTERM


ERROR

+HTTPACTION:0,200,859

AT+SAPBR=0,1

OK
Enviado

Sus conclusiones son bienvenidas.

Att. N.A.V

Alguien podria en serio echarme una mano? He intentado de todo y no se si el error esta en mi placa oh la libreria SoftwareSerial no esta funcionando al 100%.

Ahora algunos comandos si se ejecutan bien, pero el dato sigue sin llegar a mi base de datos.!

Alguna idea de que estaria yendo mal?

Esto es lo que me corre actualmente en el monitor serie.

Iniciando...
AT+CPIN?

+CPIN: READY

OK
Conectando a la red...
AT+CREG?

+CREG: 0,1
Conectado a la red.
AT+CSQ

+CSQ: 16,0

OK
AT+COPS?

+COPS: 0,0,"CLARO"

OK
AT+CGATT?

+CGATT: 1

OK
AT+SAPBR=3,1,"CONTYPE","GPRS"

OK
AT+SAPBR=3,1,"APN","web.emovil"

OK
AT+SAPBR=3,1,"USER","webemovil"

OK
AT+SAPBR=3,1,"PWD","webemovil"

OK
AT+SAPBR=1,1

OK
AT+SAPBR=2,1

+SAPBR: 1,1,"10.249.235.73"

OK
AT+CIICR

ERROR

A
AT+CREG?

+CREG: 0,1
Conexion establecida Exitosamente...
Obteniendo Mediciones...
AT+HTTPINIT

ERROR

AT+HTTPPARA="CID",1


OK
AT+HTTPPARA="URL","https://www.navuni.mipropia.com/Pagina1.php?Medicion=1128"

OK
AT+HTTPACTION=1


OK
AT+HTTPTERM

ERROR

AT+SAPBR=0,1

OK
Enviado