树莓派Pico W无线开发板MQTT协议通信MicroPython编程实践

这篇具有很好参考价值的文章主要介绍了树莓派Pico W无线开发板MQTT协议通信MicroPython编程实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本博文介绍采用Thonny+MicroPython和umqtt.simple库MQTTClient类的对象方法编制树莓派Pico W无线开发板MQTT协议通信程序,将Pico W无线开发板、电脑或Android手机无线连接到远程MQTT服务器,给出采用电脑MQTTX应用程序及手机Android MQTT客户端App远程控制Pico W无线开发板板载LED灯和扩展LED灯亮灭的示例程序。
1.安装micropython-umqtt.simple库
假设树莓派Pico W无线开发板已事先安装好MicroPython固件并且设置好了Pico W无线开发板的Thonny IDE开发环境。Pico W无线开发板具体使用方法可参见本博主博文“树莓派Pico W无线WiFi开发板使用方法及MicroPython网络编程实践”。
这里以Windows为例,运行Thonny,依次点击[Tools]→[Manage Packages…]显示“Manage Package for Raspberry Pico”对话框,在编辑框输入“umqtt.simple”且点击[Search on PyPI] umqtt.simple库,如图1所示。
树莓派Pico W无线开发板MQTT协议通信MicroPython编程实践
图1
选取[micropython-umqtt.simple],点击[Install]按钮安装micropython-umqtt.simple库,如图2所示。
树莓派Pico W无线开发板MQTT协议通信MicroPython编程实践
图2
micropython-umqtt.simple成功安装后,umqtt.simple库将存放于树莓派Pico W无线开发板的lib文件夹中。
2. 树莓派Pico W无线开发板硬件接口扩展一只LED发光二极管
(1)所需硬件材料清单
•Pico W无线开发板×1;
•Micro-USB数据线×1;
•470Ω电阻×1;
•面包板×1;
•LED二极管×1;
•公对公杜邦线×2。
(2) Pico W无线开发板硬件接口扩展一只LED接口电路
Pico W无线开发板硬件接口GPIO信号引脚排列如图3所示。
树莓派Pico W无线开发板MQTT协议通信MicroPython编程实践
图3
这里使用Pico W无线开发板的GPIO15引脚 (Pin20物理引脚) 扩展一只LED,即Pico W无线开发板Pin20物理引脚可与470Ω~1kΩ的电阻R和LED器件D串联后接地,其硬件接口电路原理图如图4所示。
树莓派Pico W无线开发板MQTT协议通信MicroPython编程实践
图4
图4所对应的硬件接线外观图如图5所示。
树莓派Pico W无线开发板MQTT协议通信MicroPython编程实践
图5
3. 树莓派Pico W无线开发板MQTT协议通信MicroPython程序示例
将Pico W作为客户端实现基于MQTT协议的通信,需用到umqtt.simple库中的MQTTClient类。树莓派Pico W无线开发板设备端通过WiFi连接到MQTT服务器的MQTT MicroPython程序清单如下:

# Filename: pico_w_mqtt.py
import network
from umqtt.simple import MQTTClient
import time
from machine import Pin
station = network.WLAN(network.STA_IF)
station.active(True)
station.connect("用户使用的WiFi名称","用户使用的WiFi密码") 
time.sleep(8)
led_onBoard = machine.Pin("LED",machine.Pin.OUT)
led_onBoard.value(0)
led_external = Pin(15, Pin.OUT)
led_external.value(0)

BrokerAddr = 'test.mosquitto.org'   # 指定的MQTT服务器: test.mosquitto.org
# 其他的MQTT服务器:broker.hivemq.com, mqtt.p2hp.com等
mqttPort = 1883  # 1883为指定的MQTT服务器端口号
ClientID = "Pico_W"  # 设定PICO_W为Pico W开发板设备ID
Topic = "LED"  # 设定MQTT主题为LED

def sub_callback(topic, msg):
    topic = str(topic,'utf-8')
    msg = str(msg,'utf-8')
    command= msg.strip()
    print((topic, command))  # 显示主题和命令消息
    if command == "开灯":  # "开灯"命令消息
        led_onBoard.value(1)
        led_external.value(1)
    if command == "关灯":  # "关灯"命令消息
        led_onBoard.value(0)
        led_external.value(0)
  
# 将Pico W开发板连接到指定的MQTT服务器
mqttClient = MQTTClient(ClientID, BrokerAddr, mqttPort, keepalive = 300)
mqttClient.set_callback(sub_callback)
mqttClient.connect()
mqttClient.publish("MQTT_Test", "Start", qos = 0)
mqttClient.subscribe(Topic, qos = 0)  # Pico W开发板订阅主题
print("Ok")

while True:
    mqttClient.wait_msg()
    time.sleep(1)

以上pico_w_mqtt.py程序与MQTT协议通信相关的语句大多已添加注释,这里不再多做解释。将树莓派Pico W无线开发板连接到电脑,启动Thonny IDE (假设Pico W无线开发板的开发环境已事先设置成功),在Thonny编辑器窗口复制粘贴本程序。
4.测试树莓派Pico W无线开发板MQTT协议通信程序
(1)使用电脑客户端MQTTX应用程序远程控制Pico W无线开发板LED灯的亮灭
电脑客户端MQTTX应用程序可从 https://mqttx.app
网址下载,这里下载Windows版本MQTTX应用程序,下载后直接将其安装到电脑即可。
下面我们运行前面的Pico W无线开发板pico_w_mqtt.py程序,当Pico W无线开发板成功连接到WLAN和远程MQTT服务器后,Thonny的Shell窗口将显示”Ok”字符串信息,表明远程MQTT服务器连接成功,如图6所示。
树莓派Pico W无线开发板MQTT协议通信MicroPython编程实践
图6
接下来,运行MQTTX程序,选取[MQTT Connections]设置电脑客户端MQTT登录信息,这里将MQTT服务器(Host)设置为test.mosquitto.org,端口号(Port)设置为1883,电脑客户端名称(Name)设置为Pico_W_MQTT_Test,客户端ID设置为Test_1,还可设置可选的用户名(Username)及密码(Password)。点击[Connect]按钮连接远程MQTT服务器。远程MQTT服务器连接成功后,在消息的主题(Topic)编辑框输入“LED”,在消息的正文(payload)编辑框输入“开灯”命令,如图7所示。
树莓派Pico W无线开发板MQTT协议通信MicroPython编程实践
图7
在图中点击右下角的[发送]命令按钮后,Pico W无线开发板板载LED和扩展LED均被点亮,如图8所示。
树莓派Pico W无线开发板MQTT协议通信MicroPython编程实践
图8
当在消息的正文(payload)编辑框输入“关灯”命令时,Pico W无线开发板板载LED和扩展LED全部熄灭。
(2)使用Android手机客户端MQTTX应用程序远程控制Pico W无线开发板LED灯的亮灭
找一款Android手机MQTT客户端App程序(如MQTT client、MQTT Terminal等Android App),本文下载的是MQTT client_v0.16_apk,将其安装到Android手机,运行手机MQTT客户端程序,见图9所示。
树莓派Pico W无线开发板MQTT协议通信MicroPython编程实践
图9
下面设置手机设备端MQTT登录信息,这里将MQTT服务器和端口号设置为test.mosquitto.org:1883,设备ID设置为手机的设备ID,这里设置为My_Android,接下来设置用户名及密码,设置完成后,按[登录]按钮,如图10所示。
树莓派Pico W无线开发板MQTT协议通信MicroPython编程实践
图10
根据前面介绍的在Pico W无线开发板上执行的pico_w_mqtt.py程序可知,我们使用的主题为”LED”,消息为”开灯”或”关灯” 命令字符串,这里将手机MQTT客户端程序要发布的主题设置为”LED”,如图11所示。
树莓派Pico W无线开发板MQTT协议通信MicroPython编程实践
图11
在手机MQTT客户端程序中,按[消息]按钮并输入”开灯”消息命令后,,我们将看到Pico W无线开发板板载LED和扩展LED灯均被点亮。
下面对手机远程控制Pico W无线开发板板载LED和扩展LED亮灭的MQTT通信过程做简要说明。
手机和Pico W都连接到同一个远程MQTT服务器。当Pico W无线开发板中的pico_w_mqtt.py程序执行成功后,开发板订阅的主题为“LED”、消息为”开灯”或”关灯”命令; 当手机客户端发布主题也为”LED”并在手机设备输入”开灯” 命令消息时,手机向远程MQTT服务器发送”LED”主题和”开灯”命令消息,MQTT服务器将”LED”主题和”开灯”命令消息发送到所有连接到该MQTT服务器上的设备,远程的Pico W无线开发板只有接收到”LED”主题和”开灯” 消息后,将在1秒后点亮板载蓝色LED灯和扩展硬件的红色LED灯,当输入”关灯”消息命令后,板载蓝色LED小灯和扩展硬件的红色LED灯将熄灭。
程序调试无误后,我们还可把pico_w_mqtt.py程序文件烧写到Pico W无线开发板的Flash中,将Pico W无线开发板外接5V电源即可独立运行。
除了使用本文介绍的电脑MQTT客户端应用程序和Android手机MQTT客户端App与远程的Pico W无线开发板进行MQTT协议通信外,我们还可针对各种应用场景开发专用的电脑、Android手机等MQTT客户端应用程序。
参考文献:
袁志勇 编著. 《AI嵌入式系统技术与实践-基于树莓派RP2040和MicroPython》. 北京: 北京航空航天大学出版社, 2023年第1版。

发布日期:2023年05月01日文章来源地址https://www.toymoban.com/news/detail-460094.html

到了这里,关于树莓派Pico W无线开发板MQTT协议通信MicroPython编程实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【雕爷学编程】MicroPython动手做(32)——物联网之MQTT

    MQTT (Message Queuing Telemetry Transport)消息队列遥测传输协议,是一种基于发布/订阅(publish/subscribe)模式的\\\"轻量级\\\"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一

    2024年02月14日
    浏览(45)
  • 【39元linux开发板-ADB远程教程】-[ADB远程终端]-幸狐Luckfox Pico-超越树莓派PICO

    【教程-持续更新】 幸狐Luckfox Pico RV1103 教程合集 【39元linux开发板-ADB远程教程】-[ADB远程终端]-幸狐Luckfox Pico-超越树莓派PIC

    2024年02月10日
    浏览(45)
  • 树莓派Raspberry Pico RP2040 开发环境配置完全缝合终极版C-SDK

    更新:这篇文章写的有点乱,后续整理见我的个人博客:rp2040开发环境配置集合版 如果你只想要使用VScode作为你的开发环境,那么这篇会是更好的参考: RP2040配置VSCODE开发环境——一劳永逸版 RP2040作为一款树莓派的单片机,一开始我以为会有很成熟的开发方案,结果发现网

    2024年02月01日
    浏览(43)
  • Mqtt通信协议详解

    MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级” 通讯协议 ,该协议构建于TCP/IP协议上。 mqtt实现:需要客户端和服务端,不同的客户端通过服务端来获取消息,服务端相当于是个中转站,与各个客户端相连

    2024年02月15日
    浏览(36)
  • 树莓派Pico开发板与大功率MOSFET/IGBT器件驱动控制24V直流电机技术实践

    摘要 :本文在介绍MOSFET器件和IGBT器件作为电子开关基本原理的基础上,讲述了树莓派Pico与MOSFETIGBT器件驱动控制24V直流电机硬件接口技术,最后给出了树莓派Pico开发板GP15端口控制24V直流电机启停的MicroPython测试程序。 一、实验设备和元器件清单 • PC机(或笔记本)×1 • 树莓

    2023年04月16日
    浏览(47)
  • 物联网通信协议-MQTT及使用python实现

    简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的\\\"轻量 级\\\"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作

    2024年02月10日
    浏览(47)
  • 物联网开发笔记(74)- 使用Micropython开发ESP32开发板之UART串口通信

    一、目的         这一节我们学习如何使用我们的ESP32开发板来进行串口通信,使用串口实现数据收发。 二、环境         ESP32 + USB转TTL线(3.3V) + Thonny IDE + 几根杜邦线 + Win10 接线方法:         ESP32和USB转TTL线都接在电脑USB口上,USB转TTL线的Tx接ESP32 P32,USB转TTL线

    2024年02月16日
    浏览(55)
  • 网络通信协议-HTTP、WebSocket、MQTT的比较与应用

    在今天的数字化世界中,各种通信协议起着关键的作用,以确保信息的传递和交换。HTTP、WebSocket 和 MQTT 是三种常用的网络通信协议,它们各自适用于不同的应用场景。本文将比较这三种协议,并探讨它们的主要应用领域。 HTTP (超文本传输协议) HTTP  是最常见的协议之一

    2024年02月05日
    浏览(61)
  • 物联网开发笔记(53)- 使用Micropython开发ESP32开发板之蓝牙BLE通信

    一、目的         这一节我们学习如何使用我们的ESP32开发板通过蓝牙和手机进行通信。 二、环境         ESP32 + 手机(笔者用的小米10) + Thonny IDE 三、蓝牙介绍         这个知识大家自行百度吧,这里不再赘述什么是蓝牙和蓝牙的历史,以及相关的专业知识。 四、

    2024年02月06日
    浏览(55)
  • 基于Linux的树莓派和电脑之间的串口通信编程

    目录 1、串口基本认知 2、USB转TTL,使用ch340通信 2.1 TTL电平 2.2 串口接线方式 ​3、串口通信常用的API 4、代码通信实例 4.1 发送一个字符/字符串到串口 4.2 树莓读取串口数据(字符串) 4.3 双方互相通信 4.3.1 树莓派接收一个字符同时再发送字符到串口 4.3.2 树莓派子进程接收

    2024年02月03日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包