我是靠谱客的博主 清爽微笑,最近开发中收集的这篇文章主要介绍发布 RT-Thread 软件包 bc28_mqtt,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、介绍

bc28_mqtt 是基于移远 BC28 模块 AT 固件的 MQTT 软件包,使用 UART 与 MCU 通信,目前实现了与阿里云物联网平台的连接。

从手册来看,BC35-G、BC28 和 BC95 的 AT 指令是兼容的,因此本软件包应该同时支持这三类模组。但是由于本人手上只有 BC28 模块,因此暂时无法验证,欢迎各位开发者参与验证。

GitHub 仓库:https://github.com/luhuadong/rtt-bc28-mqtt

1.1 特性

  • 支持掉线重连
  • 支持多实例
  • 线程安全

1.2 目录结构

名称说明
docs文档目录
examples例子目录
inc头文件目录
src源代码目录

1.3 许可证

bc28_mqtt 软件包遵循 LGPL-2.1 许可,详见 LICENSE 文件。

1.4 依赖

  • RT-Thread 4.0+
  • AT 组件

2、获取 bc28_mqtt 软件包

使用 bc28_mqtt 软件包需要在 RT-Thread 的包管理器中选择它,具体路径如下:

RT-Thread online packages --->
    internet of things --->
        [*] BC28 MQTT: connect to Aliyun with Quectel BC28 model --->

保存配置参数后,使用 pkgs --update 命令更新包到 BSP 中。

3、使用 bc28_mqtt 软件包

3.1 版本说明

版本说明
latest目前支持 MQTT 连接阿里云物联网平台,将持续维护

目前处于公测阶段,建议开发者使用 latest 版本。

3.2 配置选项

目前有如下几个配置项:

配置项数据类型说明
AT client device namestringAT Client 串口设备名称,如 uart3
Select baud rateint串口波特率,可选 4800、9600、115200
Reset pinintBC28 复位引脚号
ADC pinintBC28 ADC 引脚号(暂时无效)
Product Keystring阿里云三元组信息
Device Namestring阿里云三元组信息
Device Secretstring阿里云三元组信息
Keep-alive timeintMQTT 保活时间

4、API 说明

4.1 MQTT 功能接口

int bc28_mqtt_auth(void);
int bc28_mqtt_open(void);
int bc28_mqtt_close(void);
int bc28_mqtt_connect(void);
int bc28_mqtt_disconnect(void);
int bc28_mqtt_subscribe(const char *topic);
int bc28_mqtt_unsubscribe(const char *topic);
int bc28_mqtt_publish(const char *topic, const char *msg);

4.2 网络附着和去附着

int at_client_attach(void);
int at_client_deattach(void);

4.3 网络初始化接口

int bc28_init(void);
int build_mqtt_network(void);
int rebuild_mqtt_network(void);

5、应用示例

5.1 配置软件包

在 RT-Thread Env 环境下执行 pkgs --upgrade 更新软件包索引,在对应的 BSP 下执行 scons --menuconfig 配置 bc28_mqtt 软件包。

在这里插入图片描述

5.2 示例代码

勾选上“Enable bc28_mqtt sample”,再编译工程时会增加一个 bc28_mqtt_sample 测试程序。为了顺利进行测试,需要事先搭建阿里云物联网平台的产品与设备,topic 可以根据您的实际情况进行修改。

static void bc28_mqtt_sample(void *parameter)
{
    if(RT_EOK != bc28_init())
    {
        rt_kprintf("init failedn");
        return;
    }
    rt_kprintf("attach okn");

    while (RT_EOK != build_mqtt_network())
    {
        bc28_mqtt_close();
        rt_kprintf("rebuild mqtt networkn");
    }

    rt_kprintf("MQTT connect okn");

    /* user-code */
    char topic[256];
    rt_sprintf(topic, "%s/%s/user/hello", 
               PKG_USING_BC28_MQTT_PRODUCT_KEY, 
               PKG_USING_BC28_MQTT_DEVICE_NAME);

    bc28_mqtt_subscribe(topic);

    int cnt = 10;
    while (cnt--)
    {
        bc28_mqtt_publish(topic, "Hello, World!");
        rt_thread_mdelay(2000);
    }

    bc28_mqtt_close();
}

#ifdef FINSH_USING_MSH
MSH_CMD_EXPORT(bc28_mqtt_sample, BC28 MQTT sample);
#endif

最后

以上就是清爽微笑为你收集整理的发布 RT-Thread 软件包 bc28_mqtt的全部内容,希望文章能够帮你解决发布 RT-Thread 软件包 bc28_mqtt所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部