设计一个程序,来演示如何通过 MicroPython 使用 MQTT 和 HTTP 协议控制 WIZio-RTU 上的外设
WIZio-RTU 是一款基于 WIZnet W55MH32Q 芯片打造的高性能工业控制板,专为工业应用而设计。它具备灵活的电源选项、多种接口以及可靠的控制核心,能够满足各种工业监控和自动化需求。
通过与 MicroPython 的集成,您可以轻松使用 HTTP 和 MQTT 等协议对板上的外设进行控制和监控。本项目展示了使用 HTTP 和 MQTT 实现的简单 LED 开关应用。
WIZio-RTU 引脚布局
上图展示了 WIZio-RTU 上的主要接口,包括:
•8 个数字输入
•8 个继电器输出
•4 个模拟输入
•2 个模拟输出
•以太网连接
•RS-232 和 RS-485 通信
•可选的 CAN 和 4G 支持
•内置 EEPROM
•可选的 PoE 供电支持
这些接口使该控制板适用于多种应用场景,从简单的开发项目到工业监控和自动化系统均可胜任。在这个简单的项目中,我将一个外部LED连接到RY1继电器的输出端。
另一块板(W55MH32L-EVB)用作外部电源。
项目结构
在接下来的部分中,我将首先介绍通过HTTP版本来切换继电器的方法,包括使用HTTP网页界面或调用HTTP端点;然后介绍MQTT版本,通过我们封装的MQTT仪表板或WSL终端实现相同功能。
对于本程序所需的大部分代码,通常只需修改http_app.py和mqtt_app.py这两个文件。这两个文件列出了HTTP的默认端点、MQTT订阅的默认主题,以及每个端点/主题的功能。
HTTP协议
关于HTTP版本,请访问WIZio-RTU HTTP配置服务器GitHub仓库获取代码,以及WIZio-RTU HTTP配置文档了解相关说明。
该仓库中的主要文件为http_app.py、device.py和server.py。
•device.py:WIZio-RTU的外设状态
•server.py:一个轻量级的HTTP服务器,用于管理WIZio-RTU的路由http_app.py:创建服务器和设备对象,并提供用户访问的端点。
在板子复位后,main.py 应自动启动程序。REPL 将显示一个IP地址,您可以使用该地址打开网页界面。
打开数字I/O标签页,点击 RY1 按钮以控制第一个继电器。当继电器开启时,通过RY1和COM端子连接的外部LED应亮起。
您还应该听到继电器发出“咔哒”声,并在WIZio-RTU板上看到对应的继电器指示灯亮起。
下方的数字输入部分显示设备当前的输入状态。JavaScript会定期向 http_app.py 中定义的 /din 端点发送请求,自动更新这些值。
您可以在文档页面查看其他标签页的使用方法,以及更深入的技术细节,了解服务器与设备如何协作。
MQTT协议
如需MQTT版本,请访问 WIZio-RTU MQTT设备GitHub仓库获取代码,以及WIZio-RTU MQTT设备配置文档以了解相关说明。
该仓库的核心文件包括 mqtt_app.py、device.py 和 device_mqtt.py。
•mqtt_app.py:注册您希望监听并执行操作的主题。
•device.py:WIZio-RTU 的外设状态。
•device_mqtt.py:设备与 MQTT 库之间的桥梁。
此外还有一个 tools/dashboard.py 文件,您可以在本地运行自定义的 MQTT 控制面板来管理 WIZio-RTU。
同样地,在板子复位后,main.py 应直接运行 MQTT 应用程序。如果成功,终端应显示请求 MQTT 消息的提示。
如果您使用其他 MQTT 控制面板工具,则需要修改 mqtt_app.py 中的主题名称,以便控制设备。
在本示例中,我将使用内置的 MQTT 控制面板。如果您在本地运行,需先安装 Eclipse Mosquitto,并允许本地计算机访问端口 1883。
要运行控制面板,请按照 ReadMe 文件说明操作,或在克隆后进入 tools/ 目录并运行以下命令。
打开控制面板后,点击“连接”以测试是否能连接到本地 Broker。如果成功,Broker 状态应变为“已连接”。
在 WIZio-RTU 上,设置 mqtt.将 JSON 发送到 MQTT 服务器的 IP 地址,然后重置板子。如果板子能够连接到服务器,你应该会在“连接”页面看到日志开始更新。
打开数字 I/O 部分,它使用与 HTTP 项目类似的界面,但仅使用不同的协议。
要开启 LED,只需点击 RY1 按钮,设备就会在 RY1 下的外部电路 LED 上亮起。同时,内置的 LED 也会亮起,并发出非常明显的咔哒声。
输入部分的工作方式与 HTTP 部分类似,但不再通过仪表盘调用端点,而是由设备持续向指定主题发送其输入状态,必要时会更新输入框内容。
访问文档页面,了解有关 MQTT 连接的更多详细信息以及如何操作其他标签页。
结论
WIZio-RTU 提供了多种实用的接口,可用于监控和控制工业设备,而 MicroPython 使该板的编程和实验变得更加简便。
在本简单的示例中,使用 HTTP 和 MQTT 协议分别控制了相同的继电器和 LED 电路,展示了该板支持不同协议进行控制的能力。
尽管本项目仅演示了基本的继电器控制功能,但相同的应用也可以用于处理数字输入、模拟信号、串行通信、EEPROM 存储以及其他 WIZio-RTU 的功能。
本文编译自hackster.io





