Nota

¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 junto a otros entusiastas.

¿Por qué unirse?

  • Soporte Experto: Resuelve problemas posventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y Comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Previsualizaciones Exclusivas: Obtén acceso anticipado a anuncios de nuevos productos y adelantos exclusivos.

  • Descuentos Especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.

  • Promociones Festivas y Sorteos: Participa en sorteos y promociones de temporada.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy.

5. Sistema de Llamada en la Nube con @MQTT

Message Queuing Telemetry Transport (MQTT) es un protocolo de mensajería simple. Es también el protocolo de mensajería más común para el Internet de las Cosas (IoT).

Los protocolos MQTT definen cómo los dispositivos IoT transfieren datos. Están basados en eventos e interconectados mediante el modelo Pub/Sub. El remitente (Publisher) y el receptor (Subscriber) se comunican a través de Temas (Topics). Un dispositivo publica un mensaje en un tema específico, y todos los dispositivos suscritos a ese tema reciben el mensaje.

En esta sección, crearemos un sistema de llamada de servicio usando Pico W, HiveMQ (un servicio gratuito de broker MQTT público) y cuatro botones. Los cuatro botones representan cuatro mesas en un restaurante, y podrás ver qué mesa necesita servicio en HiveMQ cuando el cliente presione el botón.

1. Componentes Requeridos

Para este proyecto, necesitamos los siguientes componentes.

Es conveniente adquirir el kit completo; aquí tienes el enlace:

Nombre

ELEMENTOS EN ESTE KIT

ENLACE

Kit Kepler

450+

Kepler Ultimate Kit

También puedes comprarlos por separado a través de los enlaces a continuación.

N.º

COMPONENTE

CANTIDAD

ENLACE

1

Conociendo el Pico W

1

COMPRAR

2

Cable Micro USB

1

3

Protoboard

1

COMPRAR

4

Cables de Puente (Jumpers)

Varios

COMPRAR

5

Resistor

4(10KΩ)

COMPRAR

6

Botón

4

COMPRAR

7

Módulo Cargador Li-po

1

8

Batería 18650

1

9

Portapilas

1

2. Construcción del Circuito

Advertencia

Asegúrate de que el Módulo de Carga Li-po esté conectado como se muestra en el diagrama. De lo contrario, un cortocircuito podría dañar la batería y el circuito.

../../_images/5.mqtt_pub.png

3. Visita HiveMQ

HiveMQ es una plataforma de mensajería basada en broker y cliente MQTT que permite la transferencia rápida, eficiente y confiable de datos a dispositivos IoT.

  1. Abre HiveMQ Web Client en tu navegador.

  2. Conecta el cliente al proxy público predeterminado.

    ../../_images/mqtt-1.png
  3. Haz clic en Add New Topic Subscription.

    ../../_images/mqtt-2.png
  4. Ingresa los temas (Topics) que deseas seguir y haz clic en Subscribe. Los temas configurados aquí deben ser únicos para evitar recibir mensajes de otros usuarios, y presta atención a las mayúsculas y minúsculas.

    ../../_images/mqtt-3.png

4. Instalación del Módulo MQTT

Antes de iniciar el proyecto, necesitamos instalar el módulo MQTT para Pico W.

  1. Conéctate a la red ejecutando do_connect() en el Shell, que escribimos anteriormente.

    Nota

    • Escribe los siguientes comandos en el Shell y presiona Enter para ejecutarlos.

    • Si no tienes los archivos do_connect.py y secrets.py en tu Pico W, consulta 1. Acceso a la Red para crearlos.

    from do_connect import *
    do_connect()
    
  2. Después de una conexión exitosa a la red, importa el módulo mip en el shell y utiliza mip para instalar el módulo umqtt.simple, que es un cliente MQTT simplificado para MicroPython.

    import mip
    mip.install('umqtt.simple')
    
  3. Verás que el módulo umqtt está instalado en la ruta /lib/ de Pico W después de completar la instalación.

    ../../_images/5_calling_system1.png

5. Ejecución del Script

  1. Abre el archivo 5_mqtt_publish.py en la ruta kepler-kit-main/iot.

  2. Haz clic en el botón Run current script o presiona F5 para ejecutarlo.

    ../../_images/5_calling_system2.png
  3. Vuelve a HiveMQ Web Client y, cuando presiones uno de los botones en la breadboard, podrás ver el mensaje en HiveMQ.

    ../../_images/mqtt-4.png
  4. Si deseas que este script se ejecute al inicio, puedes guardarlo en la Raspberry Pi Pico W como main.py.

¿Cómo funciona?

La Raspberry Pi Pico W debe estar conectada a Internet, como se describe en 1. Acceso a la Red. Para este proyecto, solo tienes que utilizarlo.

from do_connect import *
do_connect()

Inicializa los 4 pines de los botones.

sensor1 = Pin(16, Pin.IN)
sensor2 = Pin(17, Pin.IN)
sensor3 = Pin(18, Pin.IN)
sensor4 = Pin(19, Pin.IN)

Crea dos variables para almacenar el URL y el ID de cliente del broker MQTT que utilizaremos para conectarnos. Como estamos usando un broker público, nuestro ID de cliente no se utilizará, aunque sea requerido.

mqtt_server = 'broker.hivemq.com'
client_id = 'Jimmy'

Conéctate al agente MQTT y mantén la conexión durante una hora. Si falla, reinicia el Pico W.

try:
    client = MQTTClient(client_id, mqtt_server, keepalive=3600)
    client.connect()
    print('Connected to %s MQTT Broker'%(mqtt_server))
except OSError as e:
    print('Failed to connect to the MQTT Broker. Reconnecting...')
    time.sleep(5)
    machine.reset()

Crea una variable topic, que es el tema que el suscriptor necesita seguir. Debe ser el mismo que el tema configurado en el paso 4 de 2. Visita HiveMQ. Además, b aquí convierte la cadena en byte, ya que MQTT es un protocolo binario donde los elementos de control son bytes binarios y no cadenas de texto.

topic = b'SunFounder MQTT Test'

Configura las interrupciones para cada botón. Cuando se presiona un botón, se publica un mensaje en el topic.

def press1(pin):
    message = b'button 1 is pressed'
    client.publish(topic, message)
    print(message)

sensor1.irq(trigger=machine.Pin.IRQ_RISING, handler=press1)