Skip to main content

Envío y Recepción de Mensajes SMS con el Quectel 4G HAT para Raspberry Pi

Introducción

En zonas rurales y remotas, donde la cobertura 4G es escasa o inexistente, la comunicación por SMS a través de redes 2G se convierte en una herramienta vital para garantizar la conectividad ininterrumpida en sistemas IoT. Para la preservación de la vida silvestre, esta tecnología permite sistemas de alerta automatizados que monitorean condiciones ambientales, rastrean el movimiento de animales y reportan eventos críticos en tiempo real. Al aprovechar módulos 4G con capacidades de SMS, los dispositivos pueden enviar alertas automáticas y recibir instrucciones, asegurando que, incluso en regiones aisladas, los esfuerzos de conservación no se vean limitados por la falta de infraestructura moderna de red. Esta integración de automatización y comunicación ayuda a mejorar la efectividad de los sistemas de monitoreo en áreas silvestres remotas, ofreciendo una solución confiable para la protección e investigación.

Preparación del Hardware

Raspberry Pi 5Raspberry Pi 4G LTE CAT4 HAT

El montaje

Enviar un SMS usando la herramienta QCOM en Windows

Paso 1: Configurar el Módulo

  • Conectar el Módulo
    • Conecta el módulo a tu PC con Windows mediante USB. Asegúrate de que los interruptores DIP estén en la posición correcta. En este caso, todos los interruptores deben estar en 0, lo que significa que están deshabilitados.
  • Encender el Módulo
    • Presiona el botón de encendido en el módulo.
  • Verificar los Puertos de Comunicación

Paso 2: Abrir la Interfaz de QCOM

  • Instalar y Ejecutar QCOM
    • Descarga e instala el software QCOM v1.6 (si aún no lo tienes).
    • Ejecuta la herramienta en tu PC.
  • Configurar el Puerto COM
    • Selecciona el puerto COM asociado con el módulo (por ejemplo, COM3) en la interfaz de QCOM.
    • Establece la velocidad de baudios al valor recomendado (por ejemplo, 9600).

Paso 3: Enviar un SMS

Probar la Comunicación del Módulo

  • En el cuadro de entrada de comandos, escribe el siguiente comando:
AT
  • Haz clic en "Send".
  • El módulo debería responder con:
OK
  • Esto confirma que el módulo está listo.

Configurar el Modo SMS

  • Escribe el siguiente comando para configurar el modo SMS en texto:
AT+CMGF=1
  • Haz clic en "Send".
  • El módulo debería responder con:
OK

Verificar el Número del SMSC

  • Consulta el número del SMSC (Centro de Servicio de Mensajes Cortos) desde la tarjeta SIM escribiendo:
AT+CSCA?
  • Haz clic en "Send". La respuesta debería ser algo como:
+CSCA: "+1234567890",145
OK
  • Si no se muestra ningún SMSC, contacta a tu proveedor de servicios para obtener el número correcto y configúralo usando:
AT+CSCA="+1234567890"

Redactar y Enviar el SMS

  • Escribe el comando para iniciar un SMS:
AT+CMGS="+9876543210"
  • Sustituye +9876543210 con el número de teléfono del destinatario.

  • Haz clic en "Send".

  • La interfaz de QCOM mostrará:

>
  • Ahora, escribe tu mensaje (por ejemplo, ¡Hola!) en el cuadro de texto.

Enviar el SMS

  • Presiona Ctrl + Z o usa la opción correspondiente en la interfaz QCOM para enviar el mensaje.
  • El módulo responderá con:
+CMGS: 25 
OK
  • Esto indica que el SMS fue enviado exitosamente.

Paso 4: Verificar el SMS

  • Revisa el teléfono del destinatario para asegurarte de que el mensaje haya sido recibido.

Enviar un SMS usando Minicom en Raspberry Pi

Asumiendo que ya has instalado los controladores y encendido el módulo correctamente. Si no es así, por favor sigue esta guía.

Paso 1: Abrir Minicom

note

Si no tienes instalados los controladores necesarios para comunicarte mediante comandos AT, deberás instalarlos.

sudo minicom -D /dev/ttyUSB2

*Paso 2: Sigue los Comandos de la Tabla

ComandoRespuestaExplicación
ATEOKHabilita el eco para ver los comandos escritos en Minicom.
ATOKVerifica si el módulo está listo.
AT+CMGF=1OKEstablece el modo de SMS en modo Texto.
AT+CSCA?+CSCA: "+1234567890",145Consulta el número del Centro de Servicios de Mensajes Cortos (SMSC) desde la SIM.
AT+CMGS="+94712222803">Prepara el módulo para aceptar el contenido del mensaje para el destinatario especificado.
(Escribe el mensaje: ¡Hola!)(Sin respuesta)Escribe el contenido del mensaje.
(Presiona Ctrl+Z)+CMGS: 25 OKEnvía el mensaje. El módulo confirma con +CMGS y el ID de referencia del mensaje.

Script en Python para Enviar Mensajes


import serial
import time

# Configure the serial port
SERIAL_PORT = "COM7" # Replace with your module's COM port (e.g., COM3 on Windows, /dev/ttyUSB2 on Linux)
BAUD_RATE = 9600 # Adjust to the baud rate of your GSM module

# SMS details
SMSC_NUMBER = "+9477000000" # Replace with your carrier's SMSC number in international format
RECIPIENT_NUMBER = "+94712222813" # Replace with the recipient's phone number in international format
MESSAGE = "Hello, this is a test message from Python!"

def send_at_command(command, expected_response="OK", timeout=3):
"""Send an AT command to the GSM module and wait for a response."""
ser.write((command + "\r").encode())
time.sleep(timeout)
response = ser.read_all().decode()
print(f"Command: {command}\nResponse: {response}")
return expected_response in response

try:
# Open the serial connection
ser = serial.Serial(SERIAL_PORT, BAUD_RATE, timeout=1)
time.sleep(2) # Allow the module to initialize

# Test communication with the GSM module
if not send_at_command("AT"):
raise Exception("GSM module not responding. Check the connection.")

# Set SMSC number (optional, only if needed)
if not send_at_command(f'AT+CSCA="{SMSC_NUMBER}"'):
raise Exception("Failed to set SMSC number.")

# Set SMS to text mode
if not send_at_command("AT+CMGF=1"):
raise Exception("Failed to set SMS mode to text.")

# Send SMS
if not send_at_command(f'AT+CMGS="{RECIPIENT_NUMBER}"', ">"):
raise Exception("Failed to initiate SMS sending.")

# Provide the message content and send Ctrl+Z to finalize
ser.write((MESSAGE + "\x1A").encode()) # Ctrl+Z is sent as '\x1A'
time.sleep(5) # Wait for the module to send the SMS
response = ser.read_all().decode()
print(f"SMS Send Response: {response}")

if "OK" in response:
print("SMS sent successfully!")
else:
print("Failed to send SMS. Check the module or command syntax.")

except Exception as e:
print(f"Error: {e}")

finally:
if ser.is_open:
ser.close()


Recepción de Mensajes SMS Usando Comandos AT en Entorno Windows

Esta sección explica paso a paso cómo recibir y leer mensajes SMS usando comandos AT. Sigue los comandos en el orden indicado.

Asumiendo que ya instalaste los controladores y encendiste el módulo correctamente. Si no, sigue esta guía.

Paso 1: Establecer el Modo de SMS en Texto

Utiliza el comando AT+CMGF=1 para configurar el módulo GSM en modo Texto, lo que facilita el manejo de SMS.

Comando:

AT+CMGF=1
Expected Response:
OK

Paso 2: Verificar el Almacenamiento Actual de Mensajes

Utiliza el comando AT+CPMS? para comprobar la configuración actual de almacenamiento de mensajes.

Comando:

AT+CPMS?

Respuesta esperada: +CPMS: "SR",0,5,"MT",19,255,"MT",19,255 OK

Explicación:

  • SR: Almacenamiento de Reportes de Estado (entregas de SMS).
  • MT: Memoria del terminal móvil (almacenamiento de la SIM y del módulo).
  • En este ejemplo, "MT" contiene 19 mensajes almacenados de un total de 255 posibles.

Paso 3: Cambiar el Almacenamiento de Mensajes a "MT"

Para acceder a los mensajes en la memoria del módulo, cambia el almacenamiento a "MT" usando:

Comando:

AT+CPMS="MT"

Respuesta esperada:

+CPMS: 19,255,19,255,19,255 OK

Explicación:

  • 19,255: Hay 19 mensajes almacenados en una capacidad máxima de 255.

Paso 4: Listar Todos los Mensajes Almacenados

Recupera todos los mensajes usando el comando AT+CMGL="ALL":

Comando:

AT+CMGL="ALL"

Respuesta esperada:

+CMGL: 1,"REC UNREAD","+1234567890","","20/12/05,10:44:12+32" Hello, this is a test message! +CMGL: 2,"REC READ","+9876543210","","20/12/05,10:45:12+32" Another test message! OK

Explicación:

  • +CMGL: 1: Índice del mensaje.
  • "REC UNREAD": Estado del mensaje (no leído).
  • +1234567890: Número del remitente.
  • El texto posterior es el contenido del mensaje.

Paso 5: Leer un Mensaje Específico

Para leer un mensaje por índice (por ejemplo, índice 1):

Comando:

AT+CMGR=1

Respuesta esperada:

+CMGR: "REC UNREAD","+1234567890","","20/12/05,10:44:12+32" Hello, this is a test message! OK

Explicación:

  • "REC UNREAD": El mensaje no ha sido leído.
  • +1234567890: Número del remitente.
  • El contenido del mensaje aparece después.

Recepción de Mensajes SMS Usando Minicom en Raspberry Pi

Asumiendo que ya instalaste los controladores y encendiste el módulo. Si no, sigue esta guía.

Paso 1: Abrir Minicom

sudo minicom -D /dev/ttyUSB2

Paso 2: Sigue los Comandos de la Tabla

PasoComandoDetalles de la RespuestaPropósito/Explicación
1ATEOKHabilita el eco para ver los comandos que se escriben.
2AT+CMGF=1OKEstablece el modo Texto para los mensajes SMS.
3AT+CPMS?+CPMS: "SR",0,5,"MT",19,255,"MT",19,255 OKVerifica el almacenamiento actual de los mensajes. "SR": Reportes de entrega. "MT": Contiene los mensajes almacenados en la SIM y módulo.
4AT+CPMS="MT"+CPMS: 19,255,19,255,19,255 OKCambia el almacenamiento de mensajes a "MT" (memoria del terminal).
5AT+CMGL="ALL"+CMGL: 1,"REC UNREAD","+1234567890","","20/12/05,10:44:12+32" Hello, this is a test message! +CMGL: 2,"REC READ","+9876543210","","20/12/05,10:45:12+32" Another test message! OKRecupera todos los mensajes almacenados. "REC UNREAD" indica mensaje no leído, seguido del número de remitente y el contenido.
6AT+CMGR=1+CMGR: "REC UNREAD","+1234567890","","20/12/05,10:44:12+32" Hello, this is a test message! OKLee un mensaje específico por su índice (1 en este caso).

Recursos

Soporte Técnico y Discusión de Productos

Gracias por elegir nuestros productos. Estamos aquí para brindarte soporte y asegurarnos de que tu experiencia sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a diferentes necesidades y preferencias.

Loading Comments...