BC20/BC26-opencpu移植cjson,mqtt等注意事项

本文讲述了在芯片慌潮中,如何通过移远BC20/BC26模组的opencpu方案解决MCU成本问题。重点介绍了在移植开源库如cJSON和paho-mqtt过程中遇到的问题,包括Cstdlib库替代、time.h和浮点数处理,以及MQTT库的定制开发。资源链接包含在内。

  如今芯片慌,单片机涨价的厉害,移远的BC20/BC26等模组的opencpu方案节省MCU,提供计算力的服务。还是很节省成本的。
  但是使用模组移植一些标准的开源库的时候就会遇到,编译出错。经过查找原因是,模组对于标准C库的支持其实是有问题的。所以在给的opencpu的sdk中,给出了常用的C stdlib的替代函数,在头文件 ql_stdlib.h 给出了。
  比如移植cjson库(https://github.com/DaveGamble/cJSON)除了,stdlib库不能使用还要进行C标准库 time.h 和 浮点数的修改最终得到一版可以使用的 cjson,存放于github中。
https://github.com/JetLinWork/bc20_bc26_libs
目录 cjson下

  模组使用mqtt进行二进制的数据包通信一定要会需要用到移植标准paho-mqtt(https://github.com/eclipse/paho.mqtt.embedded-c)库,进行转换后的库我也同步存放到git中。mqtt移植过去只要重写 MQTTRTOS.h 头文件中的read/write函数,改为实际的发送tcp数据接口,其他的参照demo开发即可。
https://github.com/JetLinWork/bc20_bc26_libs
目录 mqtt下

+优快云传东西下载要收币。

### 移远 BC260Y 开源项目及相关资料下载 #### 1. BC260Y 模块简介 BC260Y 是一款基于 NB-IoT 技术的低功耗广域网络 (LPWAN) 模块,专为物联网应用设计。该模块支持 OpenCPU 架构,允许开发者直接在其内部 MCU 上运行应用程序,从而减少对外部 MCU 的依赖并降低整体系统成本[^1]。 #### 2. 开源项目推荐 以下是几个与 BC260Y 及其 OpenCPU 方案相关的开源项目: - **cJSON移植** cJSON 是一个轻量级 JSON 解析库,广泛用于嵌入式设备的数据处理。然而,在 BC260Y 的 OpenCPU 环境中,由于标准 C 库的支持有限,需要对其进行适配修改。JetLinWork 提供了一版针对 BC20/BC26 的兼容版本,存储在 GitHub 中: ```plaintext https://github.com/JetLinWork/bc20_bc26_libs/tree/master/cjson ``` - **MQTT 协议实现** MQTT 是一种高效的 IoT 设备通信协议,适合低带宽环境下的数据传输。为了适应 BC260Y 的特性,可能也需要对现有的 MQTT 实现进行调整。同样可以在上述仓库找到经过适配的 MQTT 客户端代码: ```plaintext https://github.com/JetLinWork/bc20_bc26_libs/tree/master/mqtt ``` - **时间函数替代** 在 BC260Y 的 SDK 中提供了 `ql_stdlib.h` 头文件来解决部分标准 C 函数缺失的问题。如果涉及日期或时间操作,则需特别注意使用这些替代方法[^2]。 #### 3. 软件开发资源 对于希望快速上手 BC260Y 的开发者来说,以下是一些必备的软件工具和文档链接: - **官方 SDK 下载地址**: 移远通信官网提供了完整的 OpenCPU SDK 文档和技术支持服务。访问以下页面获取最新版本: ```plaintext https://www.quectel.com/product/bc26-series.htm ``` - **Arduino 平台集成** 如果您更倾向于使用 Arduino IDE 进行开发,可以尝试将 BC260Y 配合 ESP32 或其他控制器一起工作。具体教程可参考相关社区分享的内容[^3]。 #### 4. 示例代码片段 下面展示如何通过 AT 命令配置 BC260Y 加入蜂窝网络的一个简单例子: ```cpp #include <SoftwareSerial.h> #define RX_PIN 9 #define TX_PIN 8 SoftwareSerial nbIoT(RX_PIN, TX_PIN); void setup() { Serial.begin(115200); nbIoT.begin(9600); // 设置波特率匹配模组默认设置 delay(2000); sendATCommand("ATE0"); // 关闭回显模式 sendATCommand("AT+QCFG=\"nwscanseq\",00,1,0,0,0"); // 手动指定扫描序列 } void loop() {} void sendATCommand(const char* cmdStr){ nbIoT.println(cmdStr); while(!nbIoT.available()){} String response = nbIoT.readString(); Serial.print(response); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值