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日