miércoles, 6 de diciembre de 2017

Módulo GSM/GPRS SIM800L Arduino






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(7) 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.


FIN DEL POST

0 comentarios:

Publicar un comentario

Display matricial 8x8 con Arduino SPI y MAX7219

La matrices led de 8x8 son elementos extremadamente útiles para desplegar mensajes que puedan ser visibles desde la distancia. ...