Configuración de conectividad 4G LTE para IIoT con MQTT
Introducción
El HAT 4G LTE para Raspberry Pi ofrece una conectividad celular confiable y de alta velocidad, lo que lo hace esencial para aplicaciones remotas e industriales de IoT (IIoT). Con MQTT, un protocolo de mensajería ligero, los dispositivos pueden comunicarse eficientemente a través de redes celulares, incluso en ubicaciones aisladas. Usando comandos AT para la configuración, se simplifica el proceso de conectar dispositivos IoT a la red. Esta combinación de 4G LTE y MQTT mejora la transmisión de datos en tiempo real, permitiendo soluciones IIoT escalables con capacidades de gestión remota.
Requisitos previos
Requisitos de hardware
Raspberry Pi 5 | Raspberry Pi 4G LTE CAT4 HAT |
---|---|
![]() | ![]() |
Requisitos de software
Controladores y herramientas de comunicación
Si no has instalado los controladores relevantes y herramientas de comunicación, por favor revisa primero la guía.
Mosquitto Explorer
Usaremos el broker Mosquitto, específicamente el broker de prueba disponible en https://test.mosquitto.org, que no requiere nombre de usuario ni contraseña
. Para mayor comodidad, se recomienda instalar Mosquitto Explorer directamente en tu PC para fines de prueba.
Uso de comandos AT: Conectémonos al Broker MQTT
Paso 1: Configurar el modo de recepción
AT+QMTCFG="recv/mode",0,0,1
Paso 2: Abrir una red para el cliente MQTT
AT+QMTOPEN=0,"test.mosquitto.org",1883
Paso 3: Verificar el estado de la conexión MQTT (opcional)
AT+QMTOPEN?
Paso 4: Conectar un cliente al servidor Mosquitto MQTT
AT+QMTCONN=0,"clientExample"
Ten en cuenta que el ID del cliente debe ser único, así que asegúrate de generar uno altamente único. El broker público de Mosquitto no requiere nombre de usuario ni contraseña para el acceso.
Paso 5: Publicar un mensaje en un tópico
AT+QMTPUBEX=0,0,0,0,"test/topic",30
Cuando aparezca >
, escribe el mensaje y presiona Ctrl+Z
> This is test data, hello MQTT.
Abre Mosquitto Explorer e ingresa el tópico al que publicaste. Verás las actualizaciones aparecer allí.
Paso 6: Suscribirse a un tópico
AT+QMTSUB=0,1,"test/topic",2
Abre Mosquitto Explorer e ingresa el tópico y mensaje al que quieres publicar desde el módulo 4G.
Verás que el mensaje publicado fue recibido correctamente en el módulo 4G.
Paso 7: Cancelar suscripción a un tópico
AT+QMTUNS=0,2,"test/topic"
Paso 8: Desconectar el cliente del servidor MQTT
AT+QMTDISC=0
Implementación en Python
Paso 1. Preparar el directorio y entorno virtual
- Abre una terminal en tu Raspberry Pi.
- Crea una nueva carpeta para el proyecto y navega dentro de ella:
mkdir mqtt_EX
cd mqtt_EX
- Configura un entorno virtual de Python:
python3 -m venv --system-site-packages env
- Activa el entorno virtual:
source env/bin/activate
- Instala las librerías necesarias:
pip install pyserial
Paso 2. Preparar el script en Python
-
Abre el IDE Thonny Python (preinstalado en Raspberry Pi).
-
Crea un archivo nuevo en Thonny y pega el código proporcionado en el editor.
-
Actualiza el parámetro
usb_port
para que coincida con el puerto serial de tu Raspberry Pi para el HAT 4G. Normalmente, puede ser/dev/ttyUSB2
o/dev/ttyUSB3
. Ejemplo:
usb_port = "/dev/ttyUSB2"
- Guarda el archivo como
test_mqtt.py
dentro de la carpeta mqtt_EX.
import serial
import time
# Serial port configuration
SERIAL_PORT = '/dev/ttyUSB2' # Adjust based on your setup
BAUD_RATE = 9600
def send_at_command(ser, command, delay=1):
"""
Sends an AT command to the Quectel module and waits for a response.
"""
ser.write((command + '\r\n').encode())
time.sleep(delay)
response = ser.read_all().decode()
print(f"Command: {command}\nResponse: {response}")
return response
def main():
# Open serial connection
ser = serial.Serial(SERIAL_PORT, BAUD_RATE, timeout=5)
if not ser.is_open:
ser.open()
try:
# Configure MQTT receive mode
send_at_command(ser, 'AT+QMTCFG="recv/mode",0,0,1')
# Open MQTT connection
send_at_command(ser, 'AT+QMTOPEN=0,"test.mosquitto.org",1883')
send_at_command(ser, 'AT+QMTOPEN?') # Check connection status
# Connect to the MQTT broker
send_at_command(ser, 'AT+QMTCONN=0,"clientExample"')
# Subscribe to the topic
send_at_command(ser, 'AT+QMTSUB=0,1,"test/topic_subscribe",2')
print("Publishing and subscribing. Press Ctrl+C to stop.")
while True:
try:
# Publish a message
send_at_command(ser, 'AT+QMTPUBEX=0,0,0,0,"test/topic_publish",30')
send_at_command(ser, 'This is test data, hello MQTT.', delay=0.5)
# Read incoming messages
print("Checking for subscribed topic messages...")
incoming = ser.read_all().decode()
if incoming:
print(f"Received: {incoming}")
# Delay between operations
time.sleep(2)
except KeyboardInterrupt:
print("Exiting loop...")
break
# Unsubscribe from the topic
send_at_command(ser, 'AT+QMTUNS=0,2,"test/topic_subscribe"')
# Disconnect from the broker
send_at_command(ser, 'AT+QMTDISC=0')
finally:
# Close serial connection
ser.close()
if __name__ == '__main__':
main()
Paso 3. Ejecutar el script
- Abre una terminal y asegúrate de estar en el directorio del proyecto:
cd mqtt_EX
- Activa el entorno virtual:
source env/bin/activate
- Ejecuta el script usando Python:
python test_mqtt.py
- La salida será similar a la siguiente:
Recursos
- [Libro PDF] Guía de Aplicación MQTT
Soporte Técnico y Discusión de Producto
¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes formas de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para atender diferentes preferencias y necesidades.