I sent the information with AT commands because I did not find another way to send it to the database, the client print I used it to send to the database via ethernet but with the sim900 I could not use. the code I use is the following
#include <SoftwareSerial.h>
SoftwareSerial SIM900(10, 11); // Configura el puerto serial para el SIM900. Para el Arduino MEGA utilizar pines 10 y 11
char aux_str[50];
//Contenido de la dirección Http
char direccion[] = "GET /xxxxxxxx/iot.php?valor=350&valor1=100\r\nHost: xxx.xxx.xxx.xxx\r\nConnection: close\r\n\r\n";
void setup()
{
SIM900.begin(9600); //Configura velocidad del puerto serie para el SIM900
Serial.begin(9600); //Configura velocidad del puerto serie del Arduino
delay(1000);
Serial.println("Iniciando...");
iniciar();
}
void loop() {
PeticionHttp();
delay(100);
enviarAT("AT+CIPCLOSE", "CLOSE OK", 10000); //Cerramos la conexion
enviarAT("AT+CIPSHUT", "OK", 10000); //Cierra el contexto PDP del GPRS
delay(3000000);
}
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;
}
void iniciar()
{
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+CGATT=1\r", "OK", 1000); //Iniciamos la conexión GPRS
enviarAT("AT+CSTT="internet.comcel.com.co","comcel","comcel"", "OK", 3000); //Definimos el APN, usuario y clave a utilizar
enviarAT("AT+CIICR", "OK", 3000); //Activamos el perfil de datos inalámbrico
enviarAT("AT+CIFSR", "", 3000); //Activamos el perfil de datos inalámbrico
}
void PeticionHttp()
{
if (enviarAT("AT+CREG?", "+CREG: 0,1", 1000) == 1) //Comprueba la conexion a la red
{
if (enviarAT("AT+CREG?", "+CREG: 0,1", 1000) == 1) //Comprueba la conexion a la red
{
enviarAT("AT+CIPSTART="TCP","xxx.xxx.xxx.xxx","80"", "CONNECT OK", 5000); //Inicia una conexión TCP
// Envíamos datos a través del TCP
Serial.println(aux_str);
sprintf(aux_str, "AT+CIPSEND=%d", strlen(direccion));
Serial.println(aux_str);
if (enviarAT(aux_str, ">", 10000) == 1)
{
enviarAT(direccion, "OK", 10000);
}
}
else
{
//reiniciar();
//iniciar();
}
}
}