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…
 

(95) Comments

    • Ray Ponce

    Hola, estoy teniendo problams con este modulo. Si llamo de mi movil al modulo da llamada y aparece RING en el serial, pero si trato de hacer una llamada del modulo a mi movil o a otro numero telefonico me envia “NO CARRIER”.
    De igual forma, quiero hacer una peticion GET a un webservice, todo va bien en los comandos AT hasta que llego al punto de at+httpaction=0, me envia el codigo de error 0,302,0 el cual significa “found”, quiero pensar que si esta encontrando el servicor pero no esta realizando la peticion.
    ¿Sabran ustedes como solucionar estos dos problemas que tengo?
    Les agradezco mucho la informacion porque llevo varios dias intentando descubrir como solucionarlo.

    • Si te deja recibir llamadas pero no enviarlas hay dos posibilidades, que esté mal conectado el cable de transmisión o que tengas la tarjeta SIM sin saldo, que a mí ya me ha pasado más de una vez. Es lo más probable…

  • hola.
    tengo un problema con el pin, lo agrego con el comando AT pero al insertarlo me da error.

    • Estás seguro de que el pin que metes es correcto? Te da error en el pin o no te reconoce el comando at?

      • si, de hecho compre otro sim y el pin es el mismo no se si eso sea el problema. tambien busque otro sim pero de diferente compañia y el sim es el mismo. no se a que se deba que sean iguales.
        pero tengo que decir que con el primer sim con el que lo probe, ingrese el pin y me dio error, entonces empece a ingresar otros comandos, siguiendo el procedimiento del tutorial, y al ingresar el comando de llamada pude realizar una. pero despues de eso ya no pude hacer que se conectara a la red nuevamente.
        y desde entonces sigo con el mismo problema, ya intente con una fuente diferente y no.

        • tengo una duda, el sim 808 con que compañias telefonicas puede trabajar?
          hice otras pruebas con un SIM Telcel y funciono bien y el pin era el mismo que con los sim anteriores de Unefon

    • Germán Castaños

    Saludos! Muy buenos sus tutoriales, les consulto, es posible encender a través del Arduino Uno este módulo SIM808 a traves de algunos de sus pines, tal como se puede encender el SIM900? Realmente no tengo mucha documentación de esta tarjeta, mi idea es minimizar el hecho de presionar botones, pues por esta razón deseo activarlo a través de algún pin. Espero sus comentarios, muy agradecido por los aportes que puedan brindar

    • Hola Germá, hasta donde yo sé no se puede, al menos no directamente. Lo que puedes hacer es cortocircuitar los dos pines del pulsador y conectarlo a un pin de Arduino y a tierra. De esa forma puedes activarlo con un pulso desde ese pin.

        • Germán Castaños

        Gracias Iván, si, eso lo había pensado. Pero decidí experimentar y a partir del SIM808 intentaré producir una placa a medida, aunque esta parece buena he visto que se desperdician capacidades, claro, aún no he determinado todo del todo, no tengo nada de documentación. Tendrás tú alguna? He buscado, pero solo encuentro de otras placas con este SIM. La mía es exactamente la que muestras. Muy agradecido por la información

        • Hola Germán, la verdad es que no hay mucha y la que hay no es demasiado clara. Busca sim808 shield datasheet en google a ver si encuentras algo que te pueda valer. Un saludo.

            • Andrés

            Sí puede encenderse aplicando un nivel alto a un pin de la placa. Si se coge la placa con el botón de encendido hacia abajo, a la derecha del botón hay unas vías donde pueden soldarse unos pines marcados como J19, J12, J13. Hay una descripción de ellos entre el pulsador y las vías. Para encenderlo sólo hay que aplicar un nivel alto durante un par de segundos al que está en la esquina inferior izquierda, marcado como “D9”. También tiene un pin de Reset “RST” y varios de control de flujo para el puerto serie. Yo uso D9 para encenderlo, RST para resetearlo y además “2.8V” para saber si el módulo está encendido o apagado. Aparecen 2.8V en ese pin cuando está encendido.

          • Estupendo Andrés, muchas gracias por la información. No conseguía encontrarlo por ninguna parte. Un saludo.

  • Hola Ivan
    he visto que conoces mucho sobre este modulo y pues quiero preguntarte sobre el SIM808 en una de las esquinas trae un pequeño motorcito “vibrador” ¿como lo puedo activar?

    • Yo no lo he conseguido hacer funcionar tampoco, a ver si me entero de algo o alguien ha podido activarlo…

        • Andrés

        Justo al lado del motorcito vibrador hay una serie de vías donde se pueden soldar pines. Justo debajo está la descripción de ellos. Para activar el motorcito hace falta aplicar un voltaje al pin “MOTO”. El vibrador ya está conectado a gnd. En esas vías hay además un puerto I2C, un par de GND y tres que están conectados a los leds de estado NET, STA y PPS, con lo que se puede conocer el estado del módulo mirando las señales en esos pines. Lo que no se decirte es si con un pin de un MCU será suficiente para activar el motor o se necesitaran varias en paralelo o incluso un transistor.

        • Muchas gracias de nuevo Andrés. Seguro que mucha gente, a parte de mí, estaba buscándolo. Gracias y un saludo.

  • Hola, muchas gracias por el tutorial, ¿de cuánto es la precisión aceptable?
    Compré un Tarot TL2970 y me daba un error de unos 30km…
    Un saludo.

  • Hola, me gustaria saber como poder hacer un servidor web en mi arduino, usando la Sim808 como conexion a internet. He levantado webservers a traves de ethernet y de wifi, pero no se si con este modulo podria hacer lo mismo ni como hacerlo. Muchas gracias!!

    • Hola Juan José, no estoy muy seguro de que pueda hacerse. A ver si puedo mirarlo en un rato.

  • Hola prometec, gracias a ustedes he aprendido mucho..
    Esta vez tengo un problema mayor acabo de adquirir un sim808 como el de este ejemplo, sin embargo no puedo hacer que funcione, tengo una fuente de alimentación externa de 6vcd 2amp. Coloqué puentes entré tierras Arduino y SIM808. Ya revise muchas veces los pines RX y TX, , agregué correctamente el PIN 1111, e incluso cambié de chip pero nada funciona..pueden ayudarme por favor..

    • Mi problema es el siguiente:
      El led de estados del GPRS se queda esperando el servicio de red.
      Uno de los leds. Permanece encendí mientras que el otro se encuentra blinkeando por 1 Segundo., Es todo lo que hace durante mucho tiempo ya no se que hacer. Alguna manera de poner resetear el módulo ??
      De antemano muchas gracias

      • Hola José, te responde a los comandos AT?

        • Hola Ivan gracias por contestar

          No, no me responde a los comandos AT.

          • Hola Jose, entonces lo más probable es que o tengas mal las conexiones o la velocidad del monitor serie. Comprueba ambas cosas.

    • Hola José, Donde tienes el probema. No te responde a los comandos AT? No te puedes conectar a la red?

    • 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!