Módulo GSM SIM800L con Arduino | Comandos AT | Biblioteca

El módulo SIM800L es un módulo GSM/GPRS pequeño e ideal para pequeños proyectos ideales. El módulo es compatible con la red GSM/GPRS de banda cuádruple, disponible para la transmisión remota de datos de mensajes SMS y GPRS. SIM800L es más avanzado que sus módulos SIM900 anteriores.

Hay otras versiones múltiples de SIM800 disponibles. Las opciones de modelos dependen de las necesidades de la aplicación. Pero SIM800L se usa ampliamente para aplicaciones comunes. Las características de los diferentes modelos se dan a continuación.

  • SIM800L tiene funcionalidad FM.
  • SIM800C tiene funcionalidad Bluetooth.
  • SIM800F es pin compatible con el módulo SIM900.
  • SIM868 es una versión dual sim con GNSS y factor de forma pequeño.

Los comandos AT son en su mayoría los mismos para todos los módulos GSM basados ​​en comandos AT de SIMCOM, excepto que sus características adicionales como Bluetooth, FM variarán. Consulte la hoja de datos para obtener más detalles.

El SIM800L puede funcionar con una corriente máxima de 2 amperios. También tiene una función de bajo consumo de energía que consume 1 mA de corriente en modo de suspensión. Debe alimentar el módulo de 3,7 V a 4,4 V según la hoja de datos. Más que eso dañará el módulo. Puede usar un convertidor reductor como LM2596 para lograr este rango de voltaje y corriente.

Características:

  • 2G Cuatribanda 850/900/1800/1900MHz
  • Recibe y realiza llamadas utilizando las salidas de altavoz y micrófono
  • Recibir y enviar SMS
  • Escuche transmisiones de radio FM
  • Conectividad GPRS multi-slot class12: máx. 85,6 kbps (descarga/carga)
  • Estación móvil GPRS clase B
  • Controlado por comando AT (3GPP TS 27.007, 27.005 y comandos AT mejorados SIMCOM)
  • Admite reloj en tiempo real
  • Rango de voltaje de funcionamiento 3,4 V ~ 4,4 V
  • Soporta A-GPS
  • Bajo consumo de energía, 1mA en modo de suspensión
  • Compatibilidad con microtarjeta SIM

Estado de parpadeo del LED:

Si la alimentación del SIM800L es suficiente, el LED incorporado comienza a parpadear según su funcionamiento. Si la potencia no es suficiente, recibirá una señal deficiente y buscará la red todo el tiempo (si todavía está buscando, ajuste el potenciómetro ligeramente pero no exceda mucho más de 4.7v). La frecuencia del parpadeo indica lo siguiente:

  • Cada segundo: buscando una red.
  • Cada tres segundos: conectado a una red.
  • Dos veces por segundo: conectado a través de GPRS.

Nota: El SIM800L acepta solo 2G (No 4G)

En este tutorial, veremos cómo usar el módulo GSM SIM800L con un Arduino.

Detalles de pines:

En la parte posterior del módulo, puede encontrar los detalles del pin impresos en él. Usaremos 5 pines para conectar con Arduino para la operación básica. Ellos son

NET – Pasador de antena para el módulo (tipo resorte incluido). Puede usar una antena externa a través de un conector uFL disponible en el módulo para una mejor recepción de la señal.

VCC: fuente de alimentación de 3,4 V a 4,4 V con un mínimo de 2 amperios. (Se recomienda LM2596 con una entrada de adaptador de 9/12V 1Amp y debe ajustarse a 4.2V).

RST – Restablecer

RXD – Receptor al módulo – Lógico 3.3V (Para ser conectado al pin Arduino TX. Se recomienda divisor de voltaje).

TXD – Transmisor del módulo (Para ser conectado a Arduino RX Pin).

GND – Tierra.

Diagrama de circuito:

Antes de realizar las conexiones, asegúrese de que la salida LM2596 esté configurada en 4,4 V ajustando el potenciómetro en el módulo LM2596. Puede usar un multímetro para verificar el voltaje (o) puede usar el módulo LM2596 con pantalla. Como sabemos, el SIM800L acepta 3,6 V – 4,4 V y 2 amperios, el módulo SIM800L puede extraer tanta corriente como sea necesario del LM2596 con un voltaje fijo.

El pin RX del módulo SIM800L debe conectarse al pin TX del Arduino. De manera similar, el pin TX de SIM800L debe conectarse al pin RX de Arduino. En lógica simple, un receptor puede recibir algunos datos solo si se transmiten desde algún lugar. De manera similar, para el lado del transmisor, cuando se envían algunos datos, el otro debe recibirlos para utilizarlos.

Nota: Para un uso prolongado, se recomienda un divisor de voltaje ya que los pines TX y RX del SIM800L tienen un nivel lógico de 3,3 V. Solo necesitamos un divisor de voltaje en el pin RX de SIM800L. Porque un 3.3v de SIM800L puede manejarse con un Arduino Pin (TX) de 5V (probablemente un voltaje menor, pero se necesita incluso un 2.7v como señal alta).

El divisor de voltaje para 5V a 3.3V es

Vin = TX de Arduino = 5V

Vout = RX de SIM800L = 3.3V

R1 = 1,7 K ohmios

R2 = 3,3 K ohmios

Alternativamente, puede usar este cambiador de nivel bidireccional.

Código simple para enviar comandos AT y mostrar datos desde el módulo GSM en el monitor serie:

El siguiente código leerá los datos GSM a través de Software Serial y los imprimirá en Serial Monitor. De manera similar, envía la cadena ingresada por el usuario desde Serial Monitor al Módulo GSM.

#include <SoftwareSerial.h>  String tempSerial, tempGSM;  SoftwareSerial gsm(10, 11); // RX, TX of Arduino    void setup() {      Serial.begin(9600); //Set Serial Monitor Baudrate    Serial.println("SIM800L Test");    gsm.begin(4800); // Set GSM Baudrate    }    void loop() {    //Read from GSM and Print on Serial Monitor    if(gsm.available())    {      tempGSM = gsm.readString(); // Read from GSM and Store it in this variable.      Serial.println(tempGSM);    //Print the string from GSM to Serial Monitor.    }    //Write to GSM from user given Serial Monitor Inputs(AT Commands)    if(Serial.available())    {      tempSerial = Serial.readString(); //Read from Serial Monitor and store it in this variable.      gsm.println(tempSerial);   //Send the Serial Monitor Strings(AT Commands) to GSM.    }  }

Al usar el monitor en serie, enviamos comandos AT al módulo GSM para realizar varias funciones. Pero veremos algunos comandos AT en este tutorial. Puede consultar la hoja de datos de Comandos AT para varios Comandos AT.

AT

Si envía esto, el módulo GSM responderá ‘OK’. Esto significa que el Módulo GSM se está comunicando con Arduino.

ATD 98XXXXXXXX;

Este comando se utiliza para marcar un número. Debe agregar un punto y coma (;) después de este comando. La sintaxis es ATD;

Función SMS:

Para enviar o leer SMS desde el módulo, debemos configurar el módulo en modo SMS y luego usar los comandos AT para SMS.

Para configurar el Módulo GSM en modo SMS, utilice el siguiente código.

AT+CMGF=1

Una vez que regrese OK, use el segundo comando para leer el SMS.

AT+CMGR=1

Para enviar un SMS, configure el módem GSM en modo SMS usando ‘AT+CMGF=1’ y luego use el siguiente comando.

AT+CMGS="98XXXXXXXX"

El módem devolverá una flecha para ingresar el mensaje (>). Escriba el mensaje y presione enter.

Nota: Para salir del modo SMS, debemos enviar ‘Ctrl+Z’ en formato ASCII. Entonces, después de que finalicen las funciones de SMS, debemos enviar ’26’ para volver al modo normal. El ’26’ es el carácter ASCII para ‘Ctrl+Z’.

Sintaxis para enviar el carácter ASCII a GSM:

gsm.println((char)26);// 26 is ASCII code of CTRL+Z

¿Cómo usar la biblioteca SIM800L?

Para simplificar la operación, hay una biblioteca disponible en GitHub para usar el módulo SIM800L GSM. Puede descargar el archivo zip de la biblioteca SIM800L e instalarlo en su IDE de Arduino. Una vez descargado, puede abrir Archivo>Ejemplos>SIM800L y cargar el código. En esta biblioteca, los pines de serie del software se asignan a 10 (RX), 11 (TX) y 2 (RST) de Arduino de forma predeterminada. Puede modificarlo en la biblioteca si lo desea.

Código de muestra para enviar SMS utilizando la biblioteca SIM800L:

/*      *    PINOUT:   *        _____________________________   *       |  ARDUINO UNO >>>   SIM800L  |   *        -----------------------------   *            GND      >>>   GND   *        RX  10       >>>   TX      *        TX  11       >>>   RX   *       RESET 2       >>>   RST   *                   *   POWER SOURCE 4.2V >>> VCC  */    #include <Sim800l.h>  #include <SoftwareSerial.h> //is necesary for the library!!  Sim800l gsmModule;  //to declare the library    void setup(){                  gsmModule.begin(); // initializate the library.                  gsmModule.sendSms("+91XXXXXXXXXX","the text go here"); // (Mobile Number, Text to be sent).    }    void loop(){                  //do nothing  }

Escribimos el código solo en el ciclo de configuración porque solo debe enviarse una vez. Cargue el código y podrá recibir el SMS en el número que ingresó en el código.