MQTT 客户端示例
源码位置: samples/network/mqtt/tcp 查看源码
基于 coreMQTT 库的 MQTT 客户端示例。
功能说明
连接到 MQTT Broker
订阅主题
发布消息
接收消息
硬件连接
本示例使用芯片内部 WiFi 外设,无需额外接线。
配置
使用前请修改 src/main.c 中的以下配置:
#define MQTT_BROKER_HOST "broker.emqx.io" // MQTT Broker 地址
#define MQTT_BROKER_PORT 1883 // MQTT Broker 端口
#define MQTT_CLIENT_ID "arcs_mqtt_client"
#define TARGET_WIFI_SSID "your_wifi_ssid" // WiFi SSID
#define TARGET_WIFI_PWD "your_wifi_pwd" // WiFi 密码
#define MQTT_TOPIC_PUB "arcs/test/pub" // 发布主题
#define MQTT_TOPIC_SUB "arcs/test/sub" // 订阅主题
示例内容
连接 WiFi 网络
连接 MQTT Broker
订阅主题
发布消息
等待接收消息
断开连接
编译
重要提示:在编译前,请先确认您使用的开发板型号。SDK 目前支持以下开发板:
arcs_evb - ARCS EVB 评估板
arcs_mini - ARCS Mini 开发板
根据您的开发板型号,选择对应的编译命令:
在示例目录下执行编译:
# 使用 arcs_evb 开发板
./build.sh -C -DBOARD=arcs_evb
# 或使用 arcs_mini 开发板
./build.sh -C -DBOARD=arcs_mini
Note
如果在 SDK 根目录执行,需要指定示例路径:
# 使用 arcs_evb 开发板
./build.sh -C -S samples/<示例路径> -DBOARD=arcs_evb
# 或使用 arcs_mini 开发板
./build.sh -C -S samples/<示例路径> -DBOARD=arcs_mini
Note
确保已安装对应的工具链。
烧录
编译完成后,使用 SDK tools 目录下的 cskburn 工具烧录固件:
./tools/burn/cskburn -s /dev/ttyUSB0 -b 3000000 0x0 build/arcs.bin -C arcs
Note
烧录参数说明:
-s /dev/ttyUSB0:串口设备路径,需要根据实际情况修改 - Linux 系统:通常是/dev/ttyUSB0或/dev/ttyACM0- 可通过ls /dev/tty*命令查看可用串口设备 - 不同开发板或 USB 转串口芯片可能使用不同的设备名-b 3000000:烧录波特率(3Mbps)0x0:烧录起始地址build/arcs.bin:编译生成的固件路径-C arcs:芯片类型
注意事项:
确保开发板已正确连接到电脑
如果无法识别串口设备,请检查 USB 连接线是否正常,或尝试其他 USB 端口
预期输出
烧录固件后,设备会:
连接 WiFi
连接 MQTT Broker
订阅
arcs/test/sub主题向
arcs/test/pub主题发布消息等待接收消息
断开连接
测试方法
使用公共 MQTT Broker
推荐使用以下公共 MQTT Broker 进行测试:
broker.emqx.io:1883 (推荐)
test.mosquitto.org:1883
使用 MQTTX 工具测试
MQTTX 是一个跨平台的 MQTT 客户端工具,可以方便地进行测试。
1. 安装 MQTTX CLI
curl -LO https://www.emqx.com/en/downloads/MQTTX/v1.12.1/mqttx-cli-linux-x64
sudo install ./mqttx-cli-linux-x64 /usr/local/bin/mqttx
2. 订阅设备发布的主题
在电脑上运行以下命令,订阅设备将要发布消息的主题:
mqttx sub -h broker.emqx.io -p 1883 -t "arcs/test/pub"
3. 运行设备固件
烧录并运行固件后,MQTTX 会收到设备发布的消息:
topic: arcs/test/pub, qos: 0, size: 16B
Hello from ARCS!
4. 向设备发送消息
在另一个终端运行以下命令,向设备订阅的主题发送消息:
mqttx pub -h broker.emqx.io -p 1883 -t "arcs/test/sub" -m "Hello ARCS Girl"
设备端会打印接收到的消息:
Received PUBLISH: topic=arcs/test/sub, payload=Hello ARCS Girl