bclose

Conectarse a Internet mediante GPRS

Realizar una conexión HTTP mediante Arduino y el módulo GRPS

Objetivos

 

 

    • Seguir ampliando las funcionalidades del módulo GPRS.
    • Aprender a configurar el GPRS para poder conectarnos a Internet.
    • Realizar una conexión TCP con servidor.
    • Enviar una petición HTTP a un servidor.
 

Material requerido.

 

  Tienda España Tienda Mexico
Vista principal de un arduino uno Arduino UNO Arduino UNO
Vista principal Shield GPRS Shield GPRS

 

CONFIGURAR LA CONEXIÓN A INTERNET

 

Si habéis seguido las sesiones que hemos dedicado hasta ahora al GPRS, no vais a tener ningún problema con esta. Y si no las habéis leído, os recomendamos que lo hagáis, porque vamos a pasar muy por encima las cosas que ya hemos explicado y vamos a reutilizar (con algunos cambios) la mayoría de las funciones que ya hemos usado antes. Concretamente vamos a basarnos en el programa que utilizamos en la sesión dedicada a Enviar y recibir llamadas y SMS.

De hecho las funciones que hemos usado para encender, apagar, reiniciar y enviar lo comandos AT y recibir las respuestas vamos a dejarlas tal cual.

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 power_on()
{
  int respuesta = 0;

  // Comprueba que el modulo SIM900 esta arrancado
  if (enviarAT("AT", "OK", 2000) == 0)  
  {
    Serial.println("Encendiendo el GPRS...");

    pinMode(9, OUTPUT);
    digitalWrite(9, HIGH);
    delay(1000);
    digitalWrite(9, LOW);
    delay(1000);

    // Espera la respuesta del modulo SIM900
    while (respuesta == 0) {
      // Envia un comando AT cada 2 segundos y espera la respuesta
      respuesta = enviarAT("AT", "OK", 2000);
      SIM900.println(respuesta);
    }
  }
}

void power_off()
{
  digitalWrite(9, HIGH);
  delay(1000);
  digitalWrite(9, LOW);
  delay(1000);
}

void reiniciar()
{
  Serial.println("Reiniciando...");
  power_off();
  delay (5000);
  power_on();
}

La función void iniciar(); en la que configuramos el módulo GPRS, la vamos a tener que cambiar para enviar los comandos AT que necesitamos para conectarnos correctamente a Internet. Lo primero es que vamos a necesitar conectarnos a la red GPRS.

Aunque no lo hemos dicho claro hasta ahora, os habréis dado cuenta que en cuanto activamos la tarjeta y metemos el PIN correcto el módulo se conecta a la red de forma automática. No hay más que esperar y comprobar que realmente lo haya hecho con el comando AT+CREG?.

Sin embargo para conectarnos a la red GPRS y adjuntarnos al servicio de paquetes que nos posibilite conectarnos a Internet tendremos que utilizar el siguiente comando:

AT+CGATT=1 //Conectamos a la red GPRS

 

Contenido solo disponible para suscriptores. ¡Accede al contenido!

Ya estamos preparados para cargar el sketch en nuestro Arduino, y si está todo correcto deberíamos ver cómo se va configurando en el monitor serie:

monitor serie internet gprs

Si ahora escribimos “h” en el monitor serie y pulsamos “Intro”, veremos cómo empiezan a llegar un montón de datos. La gran mayoría de ellos no nos interesan y corresponden a la programación de la página, que además, al ser de tipo WordPress tiene un montón de cosas. Pero si os fijáis veréis como tenemos lo que nos interesaba, y de esta forma podemos verificar que la conexión ha ido bien.

resultado http grps arduino

Aquí os dejamos el programa completo para que lo podáis descargar: gprs_internet.

 

Resumen de la sesión

 

En esta sesión hemos aprendido varias cosas importantes:

 
    • A configurar el módulo GPRS para conectarse a Internet.
    • Hemos realizado una conexión TCP con un servidor.
    • A enviar una petición Http.
    • Hemos realizado una conexión Http sin utilizar un navegador, utilizando nuestro Arduino.
    • Podemos utilizar nuestro Arduino para conectarnos a Internet desde cualquier lugar en el que tengamos cobertura de red móvil
 
 
 

LikeUsOnFacebook_Icon

 

Para porder realizar consultas a nuestros expertos, tienes que ser suscriptor. Suscribiendote nos ayudas a mantener este proyecto en marcha.

¡ Quiero Suscribirme !

Si ya eres premium y no puedes comentar haz login. Hacer login

(103) Comments

  • Avatar for Ivan Uriarte
    • Ivan Uriarte

    Cómo lo estás alimentando? Asegúrate de que sea una fuente de al menor 1A por el Barrel jack.

  • Avatar for Ivan Uriarte
    • Mitch

    Hola, he seguido este tuto y lo estoy montando con una sim claro, pero no me da red móvil, he probado desde un teléfono y no es problema de la sim, algo que pueda hacer para solucionar el problema?

  • Avatar for Ivan Uriarte
    • Ivan Uriarte

    Sí,, no habría problema. Lo más sencillo sería hacerlo con un SMS.

  • Avatar for Ivan Uriarte
    • Miguel

    Buenas,
    Tengo un SIM800l 2.0 y quería ver si también funciona para este módulo.
    Me funcionan todos los camandos pero cuando mando el comando AT+CREG? me devuelve:
    AT+CREG?
    +CREG: 0,2
    OK

    He probado la sim en un móvil y me funciona, coge cobertura y me manda mensajes.
    ¿Saben como tengo que conectar el cable del reset del SIM800L? Si lo conecto al reset del arduino, a un pin especifico o lo dejo al aire

  • Avatar for Ivan Uriarte
    • Jefferson

    Hola puedo enviar una variable que está leyendo voltaje dc y me envíe dicho valor al celular ?

  • Avatar for Ivan Uriarte
    • Jorge Luis Vargas Valencia

    Lograste solucionarlo? estoy teniendo este mismo problema

  • Avatar for Ivan Uriarte
    • Ivan Uriarte

    Es porque ahora hemos cambiado prometec a https y parece que este módulo tiene problemas con eso. Prueba con alguna URL que no sea https a ver si te funciona bien.

  • Avatar for Ivan Uriarte
    • ELIEZER

    Hola
    Esta excelente este tutorial.

    Muchas gracias y felicidades.

    Tengo una situación, me aparece esto al momento de entregarme el resultado de la página:

    12/05/2019 20:26:42.68 [TX] – AT+CIPSEND=73

    12/05/2019 20:26:42.71 [RX] –
    >
    12/05/2019 20:26:43.46 [TX] – GET /prueba-http/ HTTP/1.1

    12/05/2019 20:26:44.27 [TX] – Host: https://www.prometec.net

    12/05/2019 20:26:44.88 [TX] – Connection: close

    12/05/2019 20:26:59.47 [RX] –
    SEND OK
    HTTP/1.1 301 Moved Permanently
    Date: Mon, 13 May 2019 01:26:51 GMT
    Server: Apache
    X-Powered-By: PHP/5.6.40
    Access-Control-Allow-Origin: *
    Set-Cookie: PHPSESSID=ocn6ht0ggd6blqbutgjr3ejdf3; path=/
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    Location: https://www.prometec.net/prueba-http/
    Content-Length: 0
    Connection: close
    Content-Type: text/html; charset=UTF-8

    CLOSED

    Pero ya no me aparece lo restante como en tu imagen.

    Sabrás por que es eso?

    Excelente día.

    Saludos

  • Avatar for Ivan Uriarte
    • Ivan Uriarte

    Hasta donde yo sé, no es posible.

  • Avatar for Ivan Uriarte
    • Ivan Uriarte

    Hola Eduardo, graciasa ti por seguirnos. Prueba a ampliar el tamaño de char respuesta[100]; a ver si es que no entra el mensaje entero.

  • Avatar for Ivan Uriarte
    • Byron

    Hola, es posible hacer que un celular se conecte a internet utilizando la sim900 como si la sim900 funcionara como modem?

  • Avatar for Ivan Uriarte
    • Eduardo Rivera

    hola a todo el equipo prometec! muchas gracias por su apoyo en serio son de muchisima ayuda!! mi duda es por que al mandar la direccion (GET /GeoLocal-1.0-SNAPSHOT/DatosRemoto?b=1&p=I&c=100&y=19.465508&x=-99.284477 HTTP/1.1\r\nHost: pac.wfactura.com\r\n Connection: close\r\n\r\n) el monitor de comunicacion serial se satura y me manda signos de interrogación sin fin, asi:

    AT+CIFSR
    10.200.132.139
    AT+CREG?
    +CREG: 0,1
    AT+CIPSTART=»TCP»,»pac.wfactura.com»,»80″
    OK
    CONNECT OK
    AT+CIPSEND=133
    >
    GET /GeoLocal-1.0-SNAPSHOT/DatosRemoto?b=1&p=I&c=100&y=19.365508&x=-99.184477 HTTP/1.1
    Host: pac.wfactura.com
    Con⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮

    incluso ya no me contesta el send ok, pero el servidor si recibe la información. solo quiero eliminar lo de los signos de interrogacion. Tienen idea de cual es mi problema?

  • Avatar for Ivan Uriarte
    • Ivan Uriarte

    Habla con la compañía, o prueba con este apn modem.nexteldata.com.mx

  • Avatar for Ivan Uriarte
    • Jonathan

    Hola estoy trabajando con el sim900 y tengo at&t, pero el apn no tiene nombre de usuario, ni contraseña. La linea de código la deje así: («AT+CSTT=\»modem.nexteldata.com.mx\»,\»\»,\»\»») pero no logra conectarme. Podrían ayudarme?, he probado con otras sim de compañías y me va perfecto.

  • Avatar for Ivan Uriarte
    • Ivan Uriarte

    Hola César, no sé muy bien como se mira el saldo de una tarjeta, porque llevo mucho con contrato. Pero se me ocurren varias formas:
    -Haz una llamada y ponte los cascos, si te queda poco o no tienes, te avisará.
    -Si se puede mirar con un SMS envíalo y lee la respuesta.
    -Si hay que llamar a algún número, llama con los cascos puestos y escucha lo que te digan.

  • Avatar for Ivan Uriarte
    • César Anibal Moradel Fonseca

    Saludos Ivan.
    Muchas gracias por todos esos buenos tutoriales.

    He estado buscando entre tus tutos alguna respuesta sobre como saber el saldo que tiene la SIM CARD instalada en un Shield GPRS-GSM SIM900, hasta el momento no encuentro como hacerlo.

    Me ayudas con el código por favor.

    Mil Gracias.

  • Avatar for Ivan Uriarte
    • Ivan Uriarte

    Hola Laura, pruébala en un teléfono móvil no vaya a ser que no funcione la tarjeta.

  • Avatar for Ivan Uriarte
    • Ivan Uriarte

    No creo que pueda hacerse con un Arduino.

  • Avatar for Ivan Uriarte
    • Ivan Uriarte

    Hola Enrique no estoy muy seguro de entenderte… Puedes desarrollarlo un poco más?

  • Avatar for Ivan Uriarte
    • Enrique

    Hola. Excelente tutorial! mi pregunta es ¿Qué cámara me recomiendan usar junto con este módulo? Necesito realizar un streaming Saludos!

Para porder realizar consultas a nuestros expertos, tienes que ser suscriptor. Suscribiendote nos ayudas a mantener este proyecto en marcha.

¡ Quiero Suscribirme !

Si ya eres premium y no puedes comentar haz login. Hacer login