第1章 使用模块实现MQTT功能
上一篇介绍模块相关的资源和辅助工具,熟悉开发板的基本功能。本篇对模块的MQTT功能进行测试。
1.1 模块MQTT功能测试
在连接开发板的AT串口后,使用瑞萨官方的上位机调试工具测试功能时,在AT指令对话框中出现ERROR:-1,查看手册,表明当前不存在该指令。
在AT窗口中输入“AT+HELP”可以查看当前模块支持的AT指令列表,和瑞萨官方的指令对比下来发现两者的命名规则不同。
查看模块的AT指令说明文档,可以查看当前不同功能对应的AT指令和指令的使用方法。
1.2 模块连接外部MCU,MQTT功能使用和测试
这里选择NUCLEO-F411RE开发板和模块通过串口通讯,为NUCELO-F411RE增加网络功能,实现MQTT应用。RT-Thread提供NUCLEO-F411RE开发板的支持,同时组件中有AT模块,在RT-Thread的基础上,添加额外的指令,可以快速开发AT应用。
1.2.1 创建RT-Thread工程
在RT-Thread Studio中创建NUCELO-F411RE工程。
1.2.2 添加AT组件
在工程的可视化配置界面,点击“AT客户端”和“ulog日志”组件,图标由灰色变为彩色后,表示组件添加成功。
在图标的悬浮菜单中点击配置项,进入AT组件的配置界面,设置模块的配置项。
完成AT组件配置后,使能硬件串口中的uart6作为和开发板进行通讯的串口。
至此,模块的配置完成。
1.2.3 通过命令行测试AT指令
在AT组件中开启了CLI命令行接口,通过这一接口,可以在开发板上直接对模块的AT功能进行测试。在main函数中添加AT初始化函数,指定uart6为AT通讯使用的串口。
at_client_init("uart6", 512);
硬件上,模块的AT串口引脚根据原理图为GPIOA4A(TX)和GPIOA5A(RX)
NUCLEO-F411RE上UART6(PA11为Tx,PA12为Rx)的配置引脚和硬件上的引脚位置如下。
连接硬件,编译工程并下载到NUCLEO-F411RE中,通过串口连接开发板,进入到msh命令行界面。输入“at client”指令,可以进入到AT指令调试的命令行界面。
开发板、PC和手机连接到同一个Wifi网络,从而构成一个MQTT网络拓扑结构。首先,通过“ipconfig”命令行指令确定PC的Wifi网络的IP地址。
另外,MQTT测试需要MQTT服务器(Broker)作为信息中转的节点。首先,下载Mosquitto安装包。
完成安装后,修改mosquitto安装目录下的mosquitto.conf文件。
1. 搜索“# listener port-number[ip address/host name/unix socket path]”文本,在其下一行添加“listener 1883”,用于表示MQTT服务器的监听端口号;
2. 搜索“# allow_anonymous false”,删除“#”注释符,或者在新的一行添加“allow_anonymous false”,用于禁止匿名登录,强制客户端通过凭证连接服务器。
3. 搜索“# passwd_file”,在其下一行添加“password_file pwfile.example”用于指定存储账号名称和密码的文件。
完成上述步骤后,在powershell(由于安装在C盘,需要以管理员身份打开powershell)中执行“./mosquito_passwd -c pwfile.example admin”添加名为admin的账号,同时在弹出的输入框中输入对应的密码。
重新打开Powershell,应用上述的改动,运行“.\mosquitto -c .\mosquitto.conf -v”来运行MQTT服务器。至此,在PC完成MQTT服务器的建立。
在手机上安装任意的MQTT工具,用于接收开发板发出的MQTT信息,这里选择MQTT Dashboard作为MQTT客户端工具。
在APP中指定消息服务器的配置,指定服务器的地址、登录账户和密码。
创建切换按钮,订阅topic为“button”的消息。设定ON和OFF状态下对应的消息值。具体的配置如下图。
通过AT指令建立MQTT客户端的初始化流程如下,通过使用AT组件中的命令行工具,可以在线对图中流程进行调试。
按照图中的流程,在AT命令行中依次输入对应的AT指令,保证输入正确后,可以完成MQTT客户端的连接。
完成上述连接后,通过AT指令发布消息,消息的topic为“button”,msg为“button is pressed”或者“button is released”
在AT命令行中输入移植指令,即可推送MQTT消失到网络中,同时手机APP客户端会根据发送的消息内容,改变控件的状态
发出按键按下的MQTT消息。
发出按键释放的MQTT消息。
1.3 总结
在借助RT-Thread中的AT调试工具,可以快速验证AT指令流的准确性,方便调试。开发板支持MQTT指令,在本地搭建MQTT网络,可以快速实现MQTT原型应用。