WiFi协议:MQTT、HTTP、CoAP、Bluetooth、LoRa

前言


树莓派 Pico W 是一款功能强大的微控制器,适合用于各种物联网(IoT)项目。那你是否懂: MQTT、HTTP、CoAP、Bluetooth 和 LoRa ?

1. MQTT(消息队列遥测传输)

MQTT 是一种轻量级的消息协议,广泛用于物联网设备之间的通信。它支持发布/订阅模型,适合于带宽有限或不稳定的网络。
 

安装依赖:

确保在 Pico W 上安装了 umqtt.simple 库。可以在 MicroPython 环境中使用以下命令导入:
 
from umqtt.simple import MQTTClient
示例代码
 
import network
import time
from umqtt.simple import MQTTClient
 
def connect_wifi(ssid, password):
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    wlan.connect(ssid, password)
    while not wlan.isconnected():
        print("Connecting to Wi-Fi...")
        time.sleep(1)
    print("Connected to Wi-Fi")
 
def mqtt_callback(topic, msg):
    print((topic, msg))
 
def main():
    ssid = "YOUR_SSID"
    password = "YOUR_PASSWORD"
    
    connect_wifi(ssid, password)
 
    client = MQTTClient("pico_client", "MQTT_BROKER_IP")
    client.set_callback(mqtt_callback)
    client.connect()
    client.subscribe("test/topic")
 
    while True:
        client.check_msg() # 检查消息
        time.sleep(1)
 
if __name__ == "__main__":
    main()

 

了解后,让来总结一下
  • 特性:
  • 发布/订阅模型:设备可以发布消息或订阅主题。
  • 连接保持:通过心跳机制保持与服务器的连接。
  • 轻量级:适合带宽有限的环境。
  • 优点:
  • 低延迟和高吞吐量。
  • 适合大量设备的互联。
  • 支持离线消息(QoS 级别)。
  • 缺点:
  • 依赖于 MQTT Broker。
  • 需要保持连接,可能消耗更多的能量。
  • 适用场景:
  • 智能家居、环境监测、工业自动化等需要实时数据传输的场景。

2. HTTP(超文本传输协议)

HTTP 是一种用于传输超文本的协议,常用于 Web 应用。可以使用 HTTP 来发送请求和接收响应。

示例代码

import network

import urequests

import time

 

def connect_wifi(ssid, password):

    wlan = network.WLAN(network.STA_IF)

    wlan.active(True)

    wlan.connect(ssid, password)

    while not wlan.isconnected():

        print("Connecting to Wi-Fi...")

        time.sleep(1)

    print("Connected to Wi-Fi")

 

def main():

    ssid = "YOUR_SSID"

    password = "YOUR_PASSWORD"

    

    connect_wifi(ssid, password)

 

    response = urequests.get("http://api.ipify.org") # 获取外部 IP 地址

    print("Response:", response.text)

 

if __name__ == "__main__":

    main()

3. CoAP(约束应用协议)

CoAP 是一种用于物联网的轻量级协议,特别适合于资源受限的设备。MicroPython 中有 CoAP 库可供使用,但可能需要手动安装。
 
示例代码
 
CoAP 在 MicroPython 中的实现可能会因库而异。
 
import network
import time
from umqtt.simple import MQTTClient
from coap import CoAP
 
def connect_wifi(ssid, password):
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    wlan.connect(ssid, password)
    while not wlan.isconnected():
        print("Connecting to Wi-Fi...")
        time.sleep(1)
    print("Connected to Wi-Fi")
 
def main():
    ssid = "YOUR_SSID"
    password = "YOUR_PASSWORD"
    
    connect_wifi(ssid, password)
 
    coap = CoAP()
    response = coap.get("coap://example.com/resource")
    print("Response:", response)
 
if __name__ == "__main__":
    main()
 

让我总结一下

3. CoAP(约束应用协议)

  • 特性:
  • 旨在为资源受限设备设计,基于UDP协议。
  • 类似于HTTP,但更轻量和高效。
  • 优点:
  • 低延迟,适合资源受限的设备。
  • 支持组播和可靠的传输机制。
  • 缺点:
  • 不如HTTP广泛支持。
  • UDP传输不保证顺序和可靠性。
  • 适用场景:
  • 传感器网络、家居自动化等低功耗设备的通信。

4. Bluetooth

树莓派 Pico W 本身不支持 Bluetooth,但如果使用的是 Raspberry Pi Pico 或其他具有 Bluetooth 功能的开发板(如 ESP32),可以通过蓝牙进行数据通信。
 
示例代码(ESP32)
 
from machine import Pin
from bluetooth import BLE
 
ble = BLE()
ble.active(True)
 
def on_rx(data):
    print("Received:", data)
 
ble.on('data', on_rx)
 
while True:
    ble.update()

让我们来总结一下

  • 特性:
  • 近距离无线通信协议,适合短距离设备间的直接通信。
  • 支持点对点和点对多点连接。
  • 优点
  • 低功耗,适合电池供电的设备。
  • 易于配对,适合个人设备连接。
  • 缺点:
  • 传输距离有限(通常在10-100米)。
  • 速度相对较慢,不适合大数据传输。
  • 适用场景:
  • 健康监测设备、智能穿戴设备、家庭自动化等需要短距离连接的场景。

5. LoRa(远程无线电)

LoRa 是一种用于长距离、低功耗的无线通信技术,通常用于农业、智能城市等应用。要在 Pico W 上使用 LoRa,需要一个 LoRa 模块(如 SX1276)。
示例代码
 
import machine
import time
from lib.lora import LoRa
 
# 创建 LoRa 对象
lora = LoRa(spi=1, cs=16, reset=17)
 
# 初始化 LoRa
lora.begin()
 
def send_message(message):
    lora.send(message)
    print("Sent:", message)
 
while True:
    send_message("Hello from Pico W")
    time.sleep(10)

然后来总结一下:

  • 特性:
  • 长距离、低功耗的无线通信协议。
  • 使用专用的LoRaWAN网络。
  • 优点:
  • 能够覆盖几公里的距离,非常适合乡村或城市环境。
  • 低功耗,适合长期运行的电池供电设备。
  • 缺点:
  • 速度较慢,仅适合小数据包的传输。
  • 需要 LoRa 网关,可能存在基础设施依赖。
  • 适用场景:
  • 智能城市、农业监测、远程环境监测等需要长距离通信的场景。

对比总结

7f215a3132d149269282a0e987fd7cff.jpg

 总结

根据项目需求和具体场景,选择适合的通信协议。

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值