Nota

Ciao, benvenuto nella Community di appassionati di SunFounder Raspberry Pi, Arduino e ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino e ESP32 insieme ad altri appassionati.

Perché unirti?

  • Supporto esperto: Risolvi i problemi post-vendita e le sfide tecniche con l’aiuto della nostra community e del nostro team.

  • Impara e condividi: Scambia consigli e tutorial per migliorare le tue competenze.

  • Anteprime esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e alle anteprime.

  • Sconti speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni festive e giveaway: Partecipa a promozioni festive e concorsi a premi.

👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!

5. Sistema di chiamata in cloud con @MQTT

Il Message Queuing Telemetry Transport (MQTT) è un semplice protocollo di messaggistica. È anche il protocollo di messaggistica più comune per l’Internet delle Cose (IoT).

I protocolli MQTT definiscono il modo in cui i dispositivi IoT trasferiscono i dati. Sono basati sugli eventi e interconnessi utilizzando il modello Pub/Sub. Il mittente (Publisher) e il destinatario (Subscriber) comunicano tramite argomenti (Topics). Un dispositivo pubblica un messaggio su un argomento specifico, e tutti i dispositivi iscritti a quell’argomento ricevono il messaggio.

In questa sezione, verrà realizzato un sistema di chiamata utilizzando Pico W, HiveMQ (un servizio broker MQTT pubblico e gratuito) e quattro pulsanti. I quattro pulsanti rappresentano quattro tavoli in un ristorante, e potrai vedere quale tavolo necessita di assistenza su HiveMQ quando il cliente preme il pulsante.

1. Componenti necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

È sicuramente conveniente acquistare un kit completo, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

Kit Kepler

450+

Kepler Ultimate Kit

Puoi anche acquistarli separatamente dai link qui sotto.

SN

COMPONENTE

QUANTITÀ

LINK

1

Introduzione al Pico W

1

ACQUISTA

2

Cavo Micro USB

1

3

Breadboard

1

ACQUISTA

4

Cavi Jumper

Diverse

ACQUISTA

5

Resistenza

4(10KΩ)

ACQUISTA

6

Pulsante

4

ACQUISTA

7

Modulo Caricatore Li-po

1

8

18650 Battery

1

9

Battery Holder

1

2. Costruisci il circuito

Avvertimento

Assicurati che il modulo caricabatterie Li-po sia collegato come mostrato nello schema. Altrimenti, un cortocircuito potrebbe danneggiare la batteria e il circuito.

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

3. Visita HiveMQ

HiveMQ è una piattaforma di messaggistica basata su broker MQTT e client che consente un trasferimento di dati veloce, efficiente e affidabile ai dispositivi IoT.

  1. Apri HiveMQ Web Client nel tuo browser.

  2. Collega il client al proxy pubblico predefinito.

    ../../_images/mqtt-1.png
  3. Clicca su Add New Topic Subscription.

    ../../_images/mqtt-2.png
  4. Inserisci gli argomenti che vuoi seguire e clicca su Subscribe. Gli argomenti impostati qui dovrebbero essere più personali per evitare di ricevere messaggi da altri utenti; fai attenzione anche alla distinzione tra maiuscole e minuscole.

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

4. Installa il modulo MQTT

Prima di iniziare il progetto, dobbiamo installare il modulo MQTT per Pico W.

  1. Connettiti alla rete eseguendo do_connect() nella Shell, che abbiamo scritto in precedenza.

    Nota

    • Digita i seguenti comandi nella Shell e premi Enter per eseguirli.

    • Se non hai gli script do_connect.py e secrets.py nel tuo Pico W, fai riferimento a 1. Accesso alla Rete per crearli.

    from do_connect import *
    do_connect()
    
  2. Dopo una connessione di rete riuscita, importa il modulo mip nella shell e utilizza mip per installare il modulo umqtt.simple, che è un client MQTT semplificato per MicroPython.

    import mip
    mip.install('umqtt.simple')
    
  3. Vedrai che il modulo umqtt è installato sotto il percorso /lib/ di Pico W al termine dell’installazione.

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

5. Esegui lo script

  1. Apri il file 5_mqtt_publish.py nel percorso kepler-kit-main/iot.

  2. Clicca sul pulsante Esegui script corrente o premi F5 per eseguirlo.

    ../../_images/5_calling_system2.png
  3. Torna su HiveMQ Web Client e quando premi uno dei pulsanti sulla breadboard, potrai vedere il messaggio su HiveMQ.

    ../../_images/mqtt-4.png
  4. Se desideri che questo script si avvii automaticamente, puoi salvarlo nel Raspberry Pi Pico W come main.py.

Come funziona?

Il Raspberry Pi Pico W deve essere connesso a Internet, come descritto in 1. Accesso alla Rete. Per questo progetto, utilizza questa funzione.

from do_connect import *
do_connect()

Inizializza 4 pin per i pulsanti.

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

Crea due variabili per memorizzare l”URL e l”client ID del broker MQTT che utilizzeremo per connetterci. Poiché stiamo utilizzando un broker pubblico, il nostro client ID non verrà utilizzato, anche se richiesto.

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

Connettiti all’agente MQTT e mantieni la connessione per un’ora. In caso di errore, resetta il 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 variabile topic, che è l’argomento che il sottoscrittore deve seguire. Dovrebbe essere lo stesso argomento inserito nel passo 4 di 2. Visita HiveMQ sopra. Tra l’altro, b qui converte la stringa in byte, poiché MQTT è un protocollo basato su byte binari e non su stringhe di testo.

topic = b'SunFounder MQTT Test'

Imposta le interruzioni per ogni pulsante. Quando un pulsante viene premuto, viene pubblicato un messaggio sotto 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)