资讯详情

基于Wio RP2040无线迷你WiFi开发板的MQTT通信MicroPython编程实践

Wio RP2040无线迷你WiFi开发板(以下简称Wio RP2040开发板)是Seeed Studio该公司于2021年5月推出了迷你无线WiFi集成了开发板Wio RP2040无线WiFi该模块包括133MHz树莓派双核RP2040 MCU芯片和ESP8285无线WiFi芯片,支持流行的嵌入式微控制器编程语言MicroPython。由于树莓派Pico采用双核RP2040 MCU因此,芯片,Wio RP除了增加2040开发板外,2040开发板也增加了ESP除了8285芯片的无线网络通信功能外,开发板的基本用途和树莓派Pico开发板没有区别。 这里使用Wio RP2040开发板的GPIO15引脚 (Pin14物理引脚) 扩展一只LED,即Wio RP2040开发板Pin14物理引脚可与470一起使用Ω~1kΩ的电阻R和LED串联后接地设备D,见图1所示。 在这里插入图片描述 图1 图1对应的硬件连接图见图2所示。 图2 Wio RP乐信集成了2040模块的网络通信(Espressif)公司的ESP8285无线WiFi,因此Wio RP2040模块的通信能力完全取决于ESP通信性能为8285芯片。从Espressif公布的信息知道:ESP8285 芯片内部集成增强版Tensilica’s L106 钻石系列 32 位置核处理器,内封 1MB Flash;同 ESP8266 一样,ESP8285芯片提供高度集成 WiFi 系统级芯片解决方案,能满足可穿戴设备、物联网等用户对低功耗、紧凑设计和可靠性的需求。 Wio RP2040年开发板设备端通过WiFi连接到无线局域网MQTT服务器的MQTT MicroPython程序列表如下:

Filename: mqtt.py import network import mqtt  # 导入MQTT模块 import time from machine import Pin station = network.WLAN_SPI(network.STA_IF) station.active(True) station.connect("H3C_202","abcde12345")  time.sleep(10) led_onBoard = Pin(13, 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.p2hp.com, broker.hivemq.com等 mqttPort = 1883  # 1883为指定的MQTT服务器端口号 ClientID = 'Wio_RP2040'  # 设定Wio_RP2040为Wio RP204开发板设备ID Topic = 'LED'  # 设定MQTT主题为LED   def mqtt_callback(topic):     print("topic:{}".format(topic[0])) #显示主题     print("msg:{}".format(topic[
      
       1
       ]
       )
       ) 
       #显示消息 
       print
       (topic
       [
       1
       ]
       ) 
       #topic[1] 
       if
       (topic
       [
       1
       ] 
       == 
       "关灯"
       )
       : 
       #"关灯"命令消息 led_onBoard
       .value
       (
       0
       ) led_external
       .value
       (
       0
       ) 
       if
       (topic
       [
       1
       ] 
       == 
       "开灯"
       )
       : 
       #"开灯"命令消息 led_onBoard
       .value
       (
       1
       ) led_external
       .value
       (
       1
       ) client 
       = mqtt
       .MQTTClient
       (ClientID
       , BrokerAddr
       , mqttPort
       ) 
       # 将Wio RP2040开发板连接到指定的MQTT服务器 client
       .connect
       (
       ) client
       .publish
       (
       "Websocket_test"
       ,
       "Start"
       ) client
       .subscribe
       (Topic
       ) 
       # Wio RP2040开发板订阅主题 client
       .set_callback
       (mqtt_callback
       ) 
       print
       (
       "Ok"
       ) 
       while 
       True
       : client
       .wait_msg
       (
       ) time
       .sleep
       (
       1
       ) 
      

以上mqtt.py程序与MQTT通信相关的语句大多已添加注释,这里不再多做解释。将Wio RP2040开发板连接到电脑。启动Thonny开发环境(假设wio RP2040开发板的开发环境已事先设置成功),在Thonny编辑窗口录入该程序。 找一款Android手机MQTT客户端应用程序,本文下载的是MQTT client_v0.16_apk,将其安装到Android手机,运行手机MQTT客户端程序,见图3所示。 图3 下面设置手机设备端MQTT登录信息,这里将MQTT服务器和端口号设置为test.mosquitto.org:1883,设备ID设置为手机的设备ID,这里设置为My_Android,接下来设置用户名及密码,设置完成后,按[登录]按钮,见图4所示。 图4 根据前面介绍的在Wio RP2040开发板上执行的MQTT.py程序可知,我们使用的主题为”LED”,消息为”开灯”或”关灯” 命令字符串,这里将手机MQTT客户端程序要发布的主题设置为”LED”(见图5)。 图5 接下来,我们执行Thonny IDE中名为mqtt.py的MicroPython程序,当Wio RP2040开发板成功连接到WLAN和MQTT服务器后,Thonny的Shell窗口将显示”Ok”字符串信息,表明连接成功。 图6 在手机MQTT客户端程序中,按[消息]按钮并输入”开灯”消息命令(见图6),稍后我们将看到Wio RP2040开发板板载蓝色LED小灯和扩展硬件的黄色LED灯被点亮(见图7)。 图7 下面对本文手机远程控制Wio RP2040开发板的LED灯的MQTT通信过程做简要的说明。手机和WIo RP2040都连接到同一个MQTT服务器。当Wio RP2040开发板上的MQTT.py程序执行成功后,开发板订阅的主题为“LED”、消息为”开灯”或”关灯”命令; 当手机设备发布主题也为”LED”并在手机设备输入”开灯” 命令消息时,手机向MQTT服务器发送”LED”主题和”开灯”命令消息,MQTT服务器将”LED”主题和”开灯”命令 消息发送到所有连接到该MQTT服务器上的设备,远程的Wio RP2040开发板只有接收到”LED”主题和”开灯” 消息后,将在1秒后点亮板载蓝色LED小灯和扩展硬件的黄色LED灯,当输入”关灯”消息命令后,板载蓝色LED小灯和扩展硬件的黄色LED灯将熄灭。 程序调试无误后,我们还可把mqtt.py程序文件中的print语句删除,将mqtt.py程序文件存储到Wio RP2040开发板的Flash中,Wio RP2040开发板外接5V电源即可独立运行。除了使用本文介绍的Android手机MQTT客户端App与远程的Wio RP2040进行MQTT通信外,我们还可针对各种应用场景开发专用的Android手机MQTT客户端应用程序。

发布日期:2022年02月26日

标签: 10rp电阻

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司