Table of Contents

Laboratorul 05: Transmiterea Datelor Senzoriale prin MQTT pe Raspberry Pi Pico

Obiective:

Acest laborator introduce utilizarea protocolului MQTT pentru a transmite date de la un Raspberry Pi Pico catre un broker MQTT configurat pe un laptop. Veti invata cum sa configurati un broker MQTT pe Windows, sa trimiteti un mesaj simplu folosind MQTT si veti finaliza laboratorul cu doua taskuri:

Partea I: Introducere teoretica

1. Ce este MQTT?

MQTT (Message Queuing Telemetry Transport) este un protocol de comunicatie simplu si eficient, folosit in principal in aplicatiile Internet of Things (IoT) pentru a transmite mesaje intre dispozitive si servere. Protocolul MQTT este bazat pe un model publish-subscribe (publicare-abonare), unde un broker (server) gestioneaza mesajele intre clientul care publica si clientul care se aboneaza la un anumit canal de comunicatie, numit topic.

Componentele principale ale MQTT:

Fluxul de Conexiune MQTT:

Partea II: Configurarea Brokerului Mosquitto pe Windows

Instalarea si configurarea VS Code cu extensia MicroPico

Pas 1: Instalare Mosquitto

Pas 2: Configurare Mosquitto pentru a permite conexiuni externe

Pas 3: Porneste Mosquitto

Partea III: Configurarea Codului pe Raspberry Pi Pico pentru a Trimite un Mesaj Simplu

In acest exemplu, vei scrie un program pe Raspberry Pi Pico care se conecteaza la Wi-Fi si trimite un mesaj simplu („Hello World”) catre brokerul MQTT.

a) Instalarea MicroPython pe Raspberry Pi Pico

b) Pregatirea bibliotecii umqtt.simple pe Pico

c) Codul de conectare la broker si publicare a unui mesaj

Codul de mai jos configureaza conexiunea si trimite un mesaj de test pe topicul test/topic.

send_msg.py
import network
import time
import umqtt.simple as mqtt
 
# Seteaza detaliile retelei Wi-Fi
ssid = 'numele_wifi'
password = 'parola_wifi'
 
# Conectare la Wi-Fi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)
 
while not wlan.isconnected():
    print("Conectare la retea...")
    time.sleep(1)
 
print("Conectat la retea:", wlan.ifconfig())
 
# Configurare client MQTT
mqtt_server = 'IP-ul_laptopului'  # Inlocuieste cu IP-ul laptopului
client_id = 'pico_test'
topic = 'test/topic'
 
# Initializeaza clientul MQTT si se conecteaza la broker
client = mqtt.MQTTClient(client_id, mqtt_server, port=1883)
 
try:
    client.connect()
    print("Conectat la broker MQTT")
 
    # Trimite un mesaj simplu
    message = "Hello World"
    client.publish(topic, message)
    print(f"Mesaj trimis: {message}")
 
    # Deconecteaza-te
    client.disconnect()
 
except Exception as e:
    print("Eroare de conectare:", e)

c) Explicatii despre Cod

Partea IV: Testarea Mesajului de Test pe Laptop

Pasi:

Exercitii

Exercitiu 1: Transmiterea de Date de la Senzori

Configurati Raspberry Pi Pico sa citeasca date de la un senzor de temperatura si unul de lumina si sa publice aceste date pe doua topicuri MQTT separate.

Exercitiu 2: Analiza Pachetelor MQTT cu Wireshark

Utilizati Wireshark pentru a monitoriza traficul MQTT intre Raspberry Pi Pico si brokerul Mosquitto de pe laptop, pentru a vizualiza structura si tipul pachetelor MQTT transmise. Identificati unde in interiorul pachetului sunt transmise datele revelante.

Interpretarea Pachetelor MQTT in Wireshark:

- CONNECT: Pachetul de conectare de la Pico catre broker.

- PUBLISH: Pachetul care contine mesajul publicat pe un topic specific.

- DISCONNECT: Pachetul de deconectare, trimis cand conexiunea este inchisa.