682|1

497

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

【nRF7002-DK Wi-Fi® 6开发套件】MQTT通讯与点灯 [复制链接]

本帖最后由 dirty 于 2023-12-15 00:58 编辑

        本篇实现nRF7002-DK MQTT发布订阅并实现点灯控制。

一.了解MQTT

        MQTT 是一个客户端服务端架构的发布/订阅模式的消息传输协议,在物联网云端与设备端数据交互通讯方面应用广泛。MQTT使用发布/订阅消息模式,Topic与Playload组合形式,有三种消息发布服务质量QoS。下图是MQTT网络结构。

图1:MQTT网络结构

二.工程代码

        在这里参照官方ncs\v2.5.0\nrf\samples\net\mqtt工程代码,做好配置及适当修改。

1.在pri.conf添加wifi账号密码以便连接服务端。

CONFIG_WIFI_CREDENTIALS_STATIC_SSID="XXX"
CONFIG_WIFI_CREDENTIALS_STATIC_PASSWORD="XXX"
CONFIG_WIFI_CREDENTIALS_STATIC_TYPE_PSK=y

 2.增加控制LED灯代码,由于网络连接状态已使用LED2,这里MQTT订阅控制就用LED1,添加代码如下.

src\modules\led\led.c

#define LED0		0

void led0_on(void)
{
	int err = 0;
	err = led_on(led_device, LED0);
	if (err) {
		LOG_ERR("led_on, error: %d", err);
	}
}

void led0_off(void)
{
	int err = 0;
	err = led_off(led_device, LED0);
	if (err) {
		LOG_ERR("led_off, error: %d", err);
	}
}

 3.在MQTT订阅里检索关键字,这里是"ON","OFF",并分别控制LED1亮、灭,代码如下

src\modules\transport\transport.c

static void on_mqtt_publish(struct mqtt_helper_buf topic, struct mqtt_helper_buf payload)
{
	LOG_INF("Received payload: %.*s on topic: %.*s", payload.size,
							 payload.ptr,
							 topic.size,
							 topic.ptr);

	//检索控制LED1
	if(strcmp(payload.ptr,"ON")==0)
	{
		LOG_INF("Light on LED0 \r\n");
		led0_on();
	}
	else if(strcmp(payload.ptr,"OFF")==0)
	{
		LOG_INF("Light off LED0 \r\n");
		led0_off();
	}
}

 4.配置编译烧录

        编译配置,这里使用了TLS加密配置,第1步需要配置上,否则编译不过。编译配置如下图所示,编译完成后烧录。

图2:编译配置

5.打开串口,按复位键,可看到开发板连上服务器test.mosquitto.org ,并间隔定时发布消息,也可以通过按Button1主动触发发布。如下图是MQTT连接与消息发布日志。我们可以看到MQTT的host,Client ID,Port,发布订阅topic.对后面MQTT代理工具配置有用。

图3:MQTT连接与消息发布

 

三.MQTT发布订阅测验及控灯

1.MQTT代理工具准备及配置连接

        这里使用MQTT.fx工具,配置如下图所示

图4:MQTT工具配置

2. 工具连接与订阅设备端消息发布

        连接好后工具右侧显示绿色点,在订阅选项卡填上topic并订阅。在设备端按button1可主动发布订阅,在MQTT端订阅收到发布消息。如下图所示

图5:MQTT连接与消息订阅

3.MQTT消息发布,控灯

        在MQTT工具发布选项卡填上发布topic,写上消息,点击发布,观察设备端收到订阅消息并LED1按消息亮/灭。如下图所示

图6:MQTT发布消息,设备端订阅

        开发板上LED1对订阅的消息受相应控制。

图7:设备MQTT订阅LED1灯效

 

四.小结

        Nordic SDK MQTT 功能集成较为完善,通过实践掌握使用可以根据应用需要很方便快捷实现定制化需求,在与云端交互通讯方面很是好用、有用。

 


 

此帖出自RF/无线论坛

最新回复

楼主的分享十分有用,先收藏起来,慢慢学习,非常感谢楼主的无私奉献   详情 回复 发表于 2023-12-15 22:40
点赞 关注
个人签名

保持热爱

 

回复
举报

755

帖子

5

TA的资源

纯净的硅(高级)

沙发
 

楼主的分享十分有用,先收藏起来,慢慢学习,非常感谢楼主的无私奉献

此帖出自RF/无线论坛
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表