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…
 

(69) Comments

    • Eduardo

    Hola disculpa este módulo no puede funcionar de forma independiente sin el Arduino?

    • Hola Eduardo, no puede funcionar por sí mismo. Un saludo.

  • Buenas noches, me queda una duda… còmo puedo hacer para que la latitud y longitud me aparezcan como número flotante en vez de estar en formato NEMA?… Por favor… ayuda 🙁 estoy usando el SIM808

    • Hola Víctor prueba con AT+CGPSINF=0

    • Joan

    Hola buenas tardes,

    En mi caso solo estaría interesado en los datos GPS del módulo para poder comunicarlos a un centro de control de semáforos para saber porque calle viene un vehículo. Seria posible usar el módulo sin la SIM? Y en caso afirmativo como seria posible transmitir estos datos al centro de control de los semáforos?

    Muchas gracias!

    • Hola Joan, sí sólo quieres usar el GPS te recomiendo este módulo, que es más exacto y además tiene datalogger https://www.prometec.net/producto/gps-shield/

      Supongo que la central está muy lejos de los semáforos, ¿no? En ese caso o lo haces con un GPRS o por Wifi o ethernet si tienes posibilidad. Si estuviera cerca podrías hacerlo por radiofrecuencia. Un saludo.

  • Hola Buenas Tardes…
    Muchas Gracias por la página, ha sido de muchísima ayuda para mi trabajo de grado…
    Quisiera saber si hay algún tutorial disponible para enviar coordenadas (Latitud, Longitud,Altura) del modulo SIM 808 a una dirección Ip en Internet en donde esta alojado un servicio o página web, la idea es hacer un Tracking o rastreo en Tiempo Real de un vehiculo al que se le instale el modulo SIM 808..
    Muchas Gracias por tan valiosa ayuda…

    • Hola Kevin, tenemos pendiente el tutorial, esperamos subirlo en no demasiado tiempo… De forma resumida tienes que hacer un GET o POST a la página donde quieres subir los datos con la estructura de la dirección de esta sesión (aunque aquí lo subimos desde un esp8266) https://www.prometec.net/esp8266-subir-valores/

    • Carlos Andres

    Hola Prometec Gracias Por Todas Sus Ayudas
    Tengo un problema.
    Tengo este URL https://api.thingspeak.com/update?api_key=FWSRSN6FP3KZZF5P&field1=50&field2=20 en donde puedo enviar datos a thingspeak a un canal que yo he creado. Pruebo esto en un buscador de un celular o un PC y funciona perfectamente. Pero al realizarlo con el Arduino UNO y el SIM 808 obtengo lo siguiente:

    Estoy generando los comandos y viendo su respuesta a través del monitor serie del ID de arduino.

    ¿Cual podrá ser la razón por la que esta pasando esto?

    Me gustaría que me orientaran frente a este tema. Muchas Gracias Por SU Pronta Respuesta

    • Hola Carlos, sólo te ocurre al intentar subir los datos a thingspeak o al tratar de conectarte a cualquier página web?

  • Buenos días.

    Ante todo gracias por tu web, sirve de mucha ayuda y está todo muy bien explicado y ordenado. Una pasada el curro que te pegas, eskerrik asko!

    En algunas webs he podido encontrar información acerca de esta placa (SIM808), donde se indica que esta placa también tiene bluetooth. Teníamos pensado hacer un proyecto para el cual necesitaríamos un SIM808 para GPS y GSM, y un HC-O6 para conectividad bluetooth con el móvil. ¿Sería posible utilizar esta misma placa, para el GSM + GPS + Bluetooth?

    Gracias por la respuesta. Un saludo.

    • Hola Ander, la que nosotros vendemos y hemos usado para el tutorial no tiene bluetooth, pero deberías poder poder usar un bluetooth a parte. Eso sí te recomendaría usar un Arduino Mega que tiene varios puerto serie. Un saludo.

    • Carlos

    Gracias Por Cada Una De Sus Respuestas
    Me gustaría saber si esta tarjeta también se puede encender por software. ¿como funciona su pulsador de 3 pines?
    ¿Cuentan con alguna información acerca de los PCB de la SIM808 EVB V 3.2 para analizar alguna posible solución?

    Muchas Gracias Por Su Respuesta.

    • Hola Carlos, en principio no se puede, pero puedes cortocircuitar el pulsador con un pin de Arduino y usarlo para encenderlo por software. Un saludo.

    • Carlos

    Buen Día Muchas Gracias Por Todos Estos Aportes.

    SI yo deseo enviar los datos del GPS, mas halla de separar las cadenas y organizar los datos, como se pueden enviar dichos datos a un servidor. ¿Que comandos se deben utilizar? ¿que se debe tener en cuenta?

    Muchas Gracias Por La Respuesta

  • Hola, buenas tardes, un favor podrías enviarme el código que ocupaste, por favor, gracias.

    • Lo tienes en la parte COMANDOS AT PARA EL GSM/GPRS

      El programa simplemente lee los comandos AT que luego le enviaremos por el puerto serie.

    • Xavier

    Buenas tardes,
    Buenas tardes,

    he conectado la SIM808 a un arduino nano en los pines 7 y 8, al correr el código se varía el tiempo de envio de mensaje que está puesto con millis cada 30 segundos y lo hace cuando quiere, a los 5 seg, a los 2, etc… También me ocurre que el arduino se reinicia sólo de vez en cuando.
    La alimentación es independiente para cada uno.

    Cuando corre el código sin conectar la SIM, lo hace correctamente, guardando los tiempos y sin reiniciarse.
    A que puede ser debido?

    Saludos

    • Hola Xavier, ¿cómo estás alimentando el SIM808? Recuerda también unir las tierras del Arduino y del SIM808. Normalmente si se reinicia al alimentar la SIM suele ser por falta de alimentación. Un saludo.

    • Geronimo

    Hola me gusto la informacion pero tengo una duda podria hacerlo con un modulo gps gprs sim900 arduino? los comando de todo y le procedimiento es compatible con este modulo?
    Le agradeceria su respuesta gracias.
    Saludos

    • Hola Gerónimo, los comandos son iguales pero el sim900no tiene GPS. Puedes conectarle un módulo GPS a parte si lo necesitas. Un saludo.

Give a Reply

WordPress Anti-Spam by WP-SpamShield

¡Ofertón!

Robot Rover 4×4

Ahora por sólo

50€ + IVA

¡Lo quiero!