Módulo GSM/GPRS SIM800L Arduino

Publicado por Victor Arrieta en

El SIM800L es un módulo de telefonía móvil GSM/GPRS Quad-Band,  que trabaja en las bandas de 850, 900, 1800 y 1900 MHz. Este diminuto dispositivo nos permite añadir voz, SMS y datos a nuestros proyectos con Arduino. Básicamente es conectar un celular a tu proyecto, por lo tanto es necesario tener una Simcard (2G), por obvias razones.

 

Lo primero que se debe hacer es soldar las regletas a tu módulo, te recomendamos hacerlo con mucho cuidado porque sólo tienes una oportunidad para que una soldadura quede perfecta. Lo segundo a tener en cuenta es que mientras se hace uso de ciertas funciones del módulo SIM800L, este puede llegar a hacer circular por su circuito de alimentación hasta 2A, por lo tanto el módulo no debe ser conectado a ninguna fuente de alimentación que no esté preparada para tales requerimientos, mucho menos a los pines de tu tarjeta Arduino. Lo tercero a tener en cuenta es que este módulo trabaja con un voltaje de 3.4V a 4.4V; esta es otra razón para no conectarlo a tu Arduino pues las tensiones que este usualmente maneja son: 3.3V, que es muy poco, y 5V que es demasiado. Una fuente de alimentación recomendada para este dispositivo es el conversor DC-DC LM2596, al cual podrías ajustar a estas especificaciones.

 

Lo siguiente a tener en cuenta es la conexión a la red GSM. Una vez insertes tu Simcard correctamente en el módulo notarás que la luz roja parpadea cada 2 segundos aproximadamente (con o sin Simcard); una vez el módulo se conecte exitosamente a la red la luz empezará a parpadear cada 5 segundos aproximadamente, seguro notarás la diferencia.

 

Finalmente, lo último y no menos importante a tener en cuenta es que este módulo se comunica con nuestro Arduino por medio de comandos AT. Los comandos AT son unas instrucciones codificadas en un leguaje especialmente diseñado para configurar módems. Existe una lista extremadamente extensa de las instrucciones que le pueden se dadas al módulo por medio de estos comandos, tal lista podrás encontrarla fácilmente en internet en el manual de comandos AT para la serie SIM800.

 

Este modo de comunicación por comandos AT con la placa Arduino permite también que sea necesario un reducido número de pines para el control del módulo, los más esenciales son la alimentación positiva y negativa, antena y los pines TXD y RXD, para transmisión y recepción de datos y comandos.

 

Pines del Módulo:

 

NET =  Conexión de la Antena

VCC = Alimentación positiva

RST = Entrada de reset del módulo

RXD = Comunicación

TXD = Comunicación

GND = Referencia negativa

RING = Indicador de que está sonando

DTR = Control para el modo sleep

MICP = Entrada diferencial de audio

MICN = Entrada diferencial de audio

SPKP  = Salida diferencial de audio

SPKN = Salida diferencial de audio

 

 

Conexión con Arduino UNO:

A continuación mostraremos un programa con el que podremos controlar el módulo SIM800L por medio del  módulo serial y comandos AT. Y daremos una lista ilustrativa de los comandos a ingresar para enviar y leer mensajes SMS, fíjate que tu Simcard tenga deshabilitado el código PIN.

 

-------------------------------------------------------------------------------------

 

Código:

 

#include <SoftwareSerial.h>    // Incluimos la libreria SoftwareSerial que nos permitirá la comunicación por un nuevo puerto serial

SoftwareSerial mySerial(8, 9); // Declaramos los pines RX(8) y TX(9) que vamos a usar

 

int count = 0;

unsigned char buffer_o[64];

 

void setup() {

  Serial.begin(9600);       // Iniciamos la comunicacion serie

  mySerial.begin(9600);     // Iniciamos una segunda comunicacion serie

}

 

void loop() {

  // Si hay datos del módulo

  while (mySerial.available()) {

    buffer_o[count++] = mySerial.read();  // Los desplegamos en el monitor serial

    if (count == 64) break;     

  }

  Serial.write(buffer_o,count);

  clearBufferArray();

  count = 0;

  // Si se han ingresado datos por el monitor serial

  if (Serial.available())

  {

    byte b = Serial.read();

    if (b == '*')

      mySerial.write(char(26));

    else

      mySerial.write(b);

  }

}

void clearBufferArray()

{

  for (int i = 0; i < count; i++)

  {

    buffer_o[i] = NULL;

  }

}

 

--------------------------------------------------------------------------------------

 

 

 

LISTA DE COMANDOS AT  EJECUTAR EN EL PUERTO SERIAL:

 

Nota: cuando veas<ENTER>” significa que debes presionar la tecla Enter 

 

  • ¿Cómo enviar un mensaje de texto con comandos AT desde el puerto serial?:

 

Escribes : AT+CMGF=1 <ENTER>

El Sistema responde : OK

Escribes : AT+CMGS="+573010000000" <ENTER>

(Reemplaza el número con tu número de celular en formato internacional)

El sistema responde : >

Escribes : Arca electronica*

(ojo el sms debe ir terminado en asterisco *)

El sistema responde : +CMGS: 62

Unos segundos después recibirás el mensaje de texto en el celular programado

 

  • ¿Cómo leer un mensaje de texto con comandos AT desde el puerto serial?

 

Escribes : AT+CMGF=1 <ENTER>

El Sistema responde : OK

Escribes : AT+CMGL="ALL" <ENTER>

El sistema responde :

 

+CMGL: 1,"REC UNREAD","+31625012354",,"07/07/05,09:55:16+08"

Test message 1

OK

 

En la respuesta del sistema puedes ver que dice primero el número del mensaje en el listado : “1” ; luego el estado :“REC UNREAD” ; seguido del número de remitente : “+31625012354” ; seguido de la fecha y hora de recepción : “07/07/05,09:55:16+08”; por último el texto del mensaje recibido: “Test message 1” y finaliza con un OK, que muestra que no hay más mensajes.

 

  • ¿Cómo borrar un SMS con comandos AT desde el puerto serial?

 

 

Escribes: AT+CMGD=1 <ENTER>

 

Donde el número 1 representa la ubicación del SMS en la memoria, reemplaza este número por el número de la ubicación del SMS que deseas borrar.


Compartir esta publicación



Publicación más reciente →