bclose

SIM808: GSM/GPRS + GPS

Localización GPS, llamadas, mensajes e Internet
tienda online prometec

Objetivos

.

 

 

    • Presentar el módulo GSM/GPRS y GPS SIM808.
    • Aprender cómo conectarlo a nuestro Arduino.
    • Trabajar con los comandos AT.
    • Aprender a obtener las coordenadas GPS y la hora en UTC.

 

Material requerido.

ArduinoUNO Arduino Uno o similar. Un PC con el entorno de Arduino correctamente instalado y configurado.
 GSM/GPRS GPSUn módulo GSM/GPRS GPS SIM808.
Img_3_6Algunos macho-hembra de Protoboard.
Power supply

 Una fuente de alimentación para Arduino.

 

EL MÓDULO SIM808: GSM/GPRS + GPS

 

Este módulo está basado en el chip SIMCOM SIM808 y nos ofrece, además de las funcionalidades de envío y recepción de datos GSM/GPRS (la de los teléfonos móviles 2g), la tecnología GPS de navegación por satélite. O sea que, gracias a este módulo y utilizando una tarjeta SIM, seremos capaces de enviar y recibir llamadas y SMS, conectarnos a Internet y conocer nuestras coordenadas y el horario UTC (Tiempo Universal Coordinado).

Y por supuesto tiene conexión para cascos y micrófono para que podamos hablar con quien nos llame o cuando llamemos nosotros.

GSM/GPRS GPS

Para comunicarnos con este tipo de módulos utilizamos los comandos AT, unos viejos conocidos de esta página.

 
  • Toda la parte de comunicaciones GSM/GPRS es semejante a la que tratamos con el SIM900.
  • Así que si queréis, os recomendamos echar un ojo a sus respectivas sesiones Módulo GSM/GPRS SIM900.
 

 

CONEXIONES Y PUESTA EN MARCHA

 

Vamos a empezar por colocar en el módulo SIM808 la tarjeta SIM que vayamos a usar, que se pone en la parte de abajo de la placa. Es para tarjetas SIM de las grandes, así o usáis una de esas o necesitaréis de un adaptador.

También deberíamos poner en el módulo las dos antenas que vienen con él, la del GPRS y la del GPS. En las conexiones de la placa vienen marcado donde se conecta cada una de ellas. Antena GPRS y GPS SIM808

Y ahora nos toca conectarlo al Arduino, para lo que usaremos los pines Tx y Rx de la tarjeta (transmisión y recepción de datos), que conectaremos a los pines 7 y 8 del  Arduino respectivamente. Pueden ser otros pines cualesquiera, siempre que los soporte la librería Software Serial que vamos a utilizar. Además uniremos las tierras y utilizaremos una fuente de alimentación externa para el módulo SIM808, ya que a la hora de comunicar este tipo de módulos consume mucho y no será suficiente con la alimentación del Arduino.

 
  • Recordad que las conexiones Rx y Tx del módulo y del SIM808 deben ser cruzadas, es decir, el Rx de uno al Tx del otro y viceversa para que se puedan comunicar de forma efectiva.
  • Y que no se os olvide unir las tierras de todos los componentes que uséis, o no funcionará.
 
SIM808 gprs gps arduino

Para encender el módulo utilizaremos el LED de encendido, y veremos como se ilumina un LED. Y para activar la alimentación a la tarjeta SIM tendremos que pulsar el pulsador un par de segundos. Al hacerlo veremos como se encienden dos LEDs, uno fijo y otro que parpadear una vez por segundo. Mientras esté así significa que no ha encontrado la red móvil, cosa que solucionaremos metiendo el PIN como veremos más adelante.

 

COMANDOS AT PARA EL GSM/GPRS

 

Para poder comunicarnos vía comandos AT tendremos que cargar un programa para la comunicación serie como hemos hecho tantas veces anteriormente. Crearemos una instancia llamada SIM808 y seleccionaremos los pines del Arduino que queramos usar para comunicarnos (Rx y Tx). Nosotros hemos elegido el 7 y el 8, pero podéis usar cualquiera que sea compatible con la librería. También podéis cambiar la velocidad de comunicación, pero debe ser la misma para el puerto serie y para la instancia que hemos creado. Nosotros hemos elegido 19200 porque es la que usa el SIM900, de forma que podamos usar los programas que ya tenemos de esas sesiones.

#include <SoftwareSerial.h>
SoftwareSerial SIM808(7, 8); //Seleccionamos los pines 7 como Rx y 8 como Tx

void setup()
{
 SIM808.begin(19200);
 Serial.begin(19200);
 delay(100);
}

void loop()
{
 //Envíamos y recibimos datos
 if (Serial.available() > 0)
 SIM808.write(Serial.read());
 if (SIM808.available() > 0)
 Serial.write(SIM808.read());
}

Una vez hayamos cargado el programa abrimos el monitor serie y seleccionamos la velocidad correcta. El primer comando AT nos servirá simplemente para saber si el módulo responde y que por lo tanto la comunicación funciona. Y este comando es simplemente AT, lo escribimos y pulsamos INTRO. Debería respondernos con un OK; si no deberíamos repasar que esté todo en orden: conexiones, encendido y velocidad correcta.

monitor serie AT

Comprobado esto, ya podemos meter el PIN de la tarjeta SIM, que se hace mediante el comando AT+CPIN=”XXXX”; donde tendréis que sustituir XXXX por el pin que corresponda, en mi caso 1867, o sea, AT+CPIN=”1867″. Obtendremos un mensaje de respuesta indicando si el PIN es correcto, y en caso de que lo sea, el LED que parpadeaba una vez por segundo pasará a hacerlo cada 3 segundos (más o menos), indicando que ha encontrado la red móvil.

comando at pin sim

Y ahora ya estamos en disposición de enviar y recibir llamadas y conectarnos a Internet. Para comprobar que efectivamente podéis llamaros al numero de teléfono de la SIM que hayáis puesto en el módulo, o usar el comando ATDXXXXXXXXX; (sustituyendo las X por el número de teléfono y respetando el “;”) para llamar a quien queráis. Y si le conectáis unos cascos y un micrófono al módulo podréis hablar como si fuera un teléfono normal.

monitor serie llamar recibir

Os dejamos una tabla con los comandos AT más utilizados con este tipo de módulos y enlaces a las sesiones de SIM900 donde ya tratamos eso, porque los comandos AT son los mismos y la programación también.

 

COMANDOS AT PARA EL GPS

 

La parte del GPS se controla igual, mediante comandos AT, y vamos a verlos usando el mismo programa que en el apartado anterior. Primero activaremos el GPS mediante el comando AT+CGPSPWR=1. Y después preguntaremos por el estado del GPS hasta que veamos que ya nos ha posicionado utilizando AT+CGPSSTATUS?. Cuando nos devuelva “Location 3D Fix” ya podremos seguir, lo que suele llevar unos 30 segundos la primera vez.

buscar red gps

Ahora ya estamos en posición de obtener los datos del GPSusando el comando AT+CGPSINF=0 que nos devolverá algo como esto: “+CGPSINF: 0,4316.645000,257.667700,14.800000,20170117141311.000,0,9,1.796440,198.850006″; que siguiendo ese orden corresponden a:

  1. Modo: 0.
  2. Latitud: 43º 16′ 64.5″.
  3. Longitud: 2º 7′ 66 77″.
  4. Altitud 14.8
  5. Fecha en UTC: 20170117141311, o sea, 17 de enero de 2017 a las 14:13:11.
  6. Tiempo de respuesta: 0.
  7. Número de satélites: 9.
  8. Velocidad: 1.796440 en nudos.
  9. Curso: 198.850006.

 

Coordenadas y UTC

También podemos usar AT+CGPSOUT=32 para obtener los datos del GPS pero usando la especificación de la NMEA (National Marine Electronics Association), que define la interfaz entre varios equipos electrónicos marítimos. Con este comando recibiremos estos datos hasta que cerremos el GPS usando AT+CGPSPWR=0.

gps datos

Estos datos corresponden a:

  1. Horario UTC: 14:25:34.
  2. Estado: A=Activo, V=Vacío.
  3. Latitud: 43º 16′ 68.54″ N.
  4. Longitud: 2º 57′ 64.83″ W.
  5. Velocidad en nudos: 0.40.
  6. Ángulo de derrota en grados: 1236.98.
  7. Fecha: 17/01/17
  8. Variación magnética.
  9. Datos del Cheksum.

 

Y si queréis comprobarlo buscad en Google “posición por coordenadas” o algo parecido e introducir los datos de latitud y longitud que hemos obtenido. No es que tenga una precisión del 100% pero no está mal. Al menos a mí me ha localizado con un margen de error aceptable.

mapa

 

Resumen de la sesión

 

En esta sesión hemos aprendido varias cosas importantes:

 
    • Hemos presentado los módulos GSM/GPRS + GPS basados en el chip SIM808.
    • Sabemos como conectarlo y ponerlo en marcha.
    • A utilizar la parte GSM/GPRS para enviar y recibir llamadas y mensajes y conectarnos a Internet.
    • A obtener los datos del GPS: localización, horario y fecha UTC…
 

(127) Comments

    • Alain Vega

    hola, me funciona todo hasta la parte de meter el codigo: AT+CGPSSTATUS? me sale location not fix, he esperado mas de 1 hora, lo he reiniciado 2 veces pero no consigo que me diga location 3D fix. Alguna ayuda porfavor.

    • Si estás en interior prueba a sacarlo un poco por una ventana a ver si así te lo coge bien.

      • Felipe Santiago

      Hola Alain

      Yo también tuve el mismo inconveniente, aplique un reset al GPS en modo autonomo con el siguiente comando:mode AT+CGPSRST=1

      Luego, me funciono perfectamente

  • Hola tengo un problema uso una tarjeta sin nueva, y capta señal da los comandos sin nesecidad de introducir el pin, luego le dejo cierto tiempo sin usarlo , y lo vuelvo a utilizar y ya no quiere captar señal esto a que se puede dar.

    • Lo que puedes hacer es comprobar la conexión a la red cada cierto tiempo y si la pierde que se reinicie el módulo.

  • hola es necesario que el código pin de la Sim se inserte al realizar la prueba con los comandos AT, ya que yo al introducir el pin me sale error algen me puede ayudar .

    • Sí, es necesasrio el Pin

    • Jesus

    Buen dia
    Este modulo tambien se puede encender por software??
    En donde se pondria la soldadura? Igual que en el SIM900, en el PAD R13??
    Espero respuesta.
    Excelentes tutorials!!!!

    • Hola Jesús, no he encontrado nada, pero supongo que puedes cortocircuitar el pulsador con una salida de arduino

    • Gabriel

    hola yo estoy probando los modulos sim5320a 3g pues los 2g ya no se usan donde vivo quisiera saber si puedes darme algun aporte o si vas a hacer algun proyecto con 3g en mi casoo tengo problemas con conectarme con sitios seguros como https:// no haci con www. uso el comando AT+CHTTPSOPSE y me dan error agradeceria cualquier aporte

    • Hola Gabriel, de momento no los hemos usado nunca, si tenemos oportunidad lo haremos. A ver si mientras alguien puede ayudarte. Un saludo.

    • Joseph Aguilar

    Hola, muy buen tutorial.
    Tengo una pregunta: ¿Esta librería se puede usar con algún otro software de programación como el Code Composer Studio, para comunicar el Sim 808 con los microcontroladores MSP430G2553 y MSP432?

    • La verdad es que no tengo ni idea. A ver si alguien sabe algo.

    • Lida

    Disculpa una pregunta … Que modulo puedo utilizar para programar un camino con ciertas coordenadas para un carro.

    • Necesitas un modulo GPS pero ten en cuenta que vas a tener entre 1 y 2 m de incertidumbre en la posicion. Para un coche puede no ser mucho pero si e sun robot de 20 cm la cosa es distinta

  • hola,cuando mando un comando AT al modulo sim808 no recibo ninguna respuesta, a que se debe esto si ya revise el cableado la programación y la velocidad del modulo, necesito ayuda

    • Hola David, puede ser que tu módulo esté configurado a otra velocidad? O estás usando otro Ardino que no sea el UNO?

    • Eder

    Olá quero usar ele mas nunca liguei,para poder fazer comunicar com meu celular ,tenho 808 evd 3.2

    • Echa un ojo a está sesión, en teoría los comandos AT funcionan igual con el módulo sim900 que con el 808. Un saludo.

    • Erick

    Hola, buenas tardes sabes si el codigo de arduino y las conexiones funcionarían igual en una Sim 800L?.

    • Hola Erick, supongo que sí, aunque no lo he probado.

  • Como se saca la latitud y la longitud de los datos recibidos a través del GPS??
    En el ejemplo sale:
    4316.645000,257.667700
    Y se convierte en:
    Latitud: 43º 16′ 64.5″
    Longitud: 2º 7′ 66 77″
    Por mucho que lo quiero entender no tiene ningún sentido o lógica matemática la conversión…La latitud se convierte de diferente manera que la longitud?? Gracias de antemano!!!

    • Hola Mariano, hasta la coma es la latitud, simplemente van de dos en dos dígitos.

  • Qué tal, tengo una duda, cómo podría guardar los datos de las coordenadas y almacenarlos en una base de datos. Se me ocurre guardar a mi los resultados arrojados por SIM808 en una variable, pero no sé cómo podría guardarlo y posteriormente almacenarlo en una base de datos.

    • Hola Adán, puedes subirlos mediante internet a una base de datos, o puedes guardarlo en la memoria EEPROM del Arduino y más tarde utilizarlos. También puedes usar un data logger para guardarlos en un sd. Un slaudo.

  • Hola, cuando quiero ejecutar el envio de datos con este modulo a traves de http POST, me manda el error 601 “Network error”, sabran de que será????

Give a Reply

WordPress Anti-Spam by WP-SpamShield