当前这篇帖子介绍stm32 bc20连接华为云物联网平台,实现与上位机之间进行数据交互,完成真实的产品开发。
### 1.1 bc20模块
bc20是一款高性能、低功耗、多频段、支持 gnss 定位功能的 nb-iot 无线通信模块。bc20 在设计上兼容移远通信 gsm/gprs/gnss 系列的 mc20 模块,方便客户快速、灵活的进行产品设计和升级。bc20 提供丰富的外部接口和协议栈,同时支持中国移动 onenet 物联网云平台,为客户的应用提供极大的便利。
bc20支持北斗、gps、qzss 等多星座卫星系统解调算法,其定位更加精准,抗多路径干扰能力更强,比传统的单gps 模块具有更多优势。另外,bc20 模块中内置 lna 和低功耗算法:前者保证更高的灵敏度,后者保证低功耗模式下更低的耗流。
bc20 模块较传统 nb-iot gnss 方案体积减少 40%。凭借其紧凑尺寸、超低功耗和超宽工作温度范围,bc20 在各种应用中占具更大优势;其主要应用领域为:自行车和摩托车防盗、宠物追踪、金融财产追踪及行车记录仪等等。
c20 模块集成了 nb-iot 和 gnss(gps beidou) 双系统,在网络交互的同时, 实现 gnss 系统的
快速、精准定位, 满足客户低功耗与高定位精度的应用场景。
**相比传统的具有单一 gps 功能的模块, bc20 的主要优势如下:**
a. 内嵌的 gnss 模块,支持 gps beidou 双系统定位: 相同环境下可使用的卫星数量更多, 搜星的
b. 时间更短, 可加快定位速度, 提高定位精度;
c. nb 和 gnss 组合的小尺寸模块, 具备优良的环境适应性, 具备低功耗、抗干扰、高精度的特性;
d. 内置 sensor hub 及领先的 pdr 算法,完美提升定位精度;
e. 智能的 agps 辅助定位功能,加快冷启动模式下的定位速度
淘宝商店地址: https://m.tb.cn/h.focckgv?sm=5ffdfe?tk=mkb92ehi0zv
![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20223/9/1646813846885977137.png)
模块上有两排接口,一个是gps信号输出接口,一个是bc20控制接口。
使用usb转ttl模块,将bc20板子与电脑连起来,调试板子是否正常。
### 1.2 测试模块
第一步接上之后,串口调试助手选择波特率为115200,勾选软件上的发送新行选项。发送`at`过去,正常模块会返回`ok`。
![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20223/9/1646813893170107839.png)
### 1.3 上电初始化操作
```cpp
查询模块是否正常
at
ok
获取卡号,查询卡是否插好
at cimi
460041052911195
ok
激活网络
at cgatt=1
ok
获取网络激活状态
at cgatt?
cgatt: 1
ok
查询网络质量
at csq
csq: 26,0
ok
at cereg=? //检查网络状态
cereg: 0,1 //找网成功
ok
```
### 1.4 开启gps定位
**官方文档:**
![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20223/9/1646813924487545819.png)
```cpp
激活gps,要等一段时间
at qgnssc=1
ok
查询激活状态,1表示成功激活
at qgnssc?
qgnssc: 1
ok
获取一次gps定位语句
at qgnssrd="nmea/rmc"
qgnssrd: $gnrmc,120715.00,a,3150.78179,n,11711.93433,e,0.000,,310818,,,a,v*19
ok
```
### 1.5 连接mqtt服务器
下面通过mc20的at指令连接华为云服务器,上传数据测试。
官方文档:
![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20223/9/1646813956364180141.png)
```cpp
连接mqtt服务器
at qmtopen=0,"a161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com",1883
ok
qmtopen: 0,0
登录mqtt服务器
命令格式: at qmtconn=,,,
at qmtconn=0,"6210e8acde9933029be8facf_dev1_0_0_2022021913","6210e8acde9933029be8facf_dev1","6cea55404b463e666cd7a6060daba745bbaa17fe7078dfef45f8151cdf19673d"
ok
qmtconn: 0,0,0
订阅主题
命令格式: at qmtsub=,,"”,[,"”,…]
at qmtsub=0,1,"$oc/devices/6210e8acde9933029be8facf_dev1/sys/messages/down",2
ok
qmtsub: 0,1,0,2
发布主题
命令格式:at qmtpub=,,,,"",""
先发送指令:
at qmtpub=0,0,0,0,"$oc/devices/6210e8acde9933029be8facf_dev1/sys/properties/repor"
等待返回 ">"
接着发送数据.不需要加回车。
"{"services": [{"service_id": "gps","properties":{"longitude":12.345,"latitude":33.345}}]}"
数据发送完毕,再发送结束符。 十六进制的值--0x1a 。某些串口调试助手可以适应ctrl z 快捷键输入0xa
等待模块返回"ok",到此数据发送完成。
ok
qmtpub: 0,0,0
```
感谢分享
感谢分享
感谢分享
感谢分享
感谢分享
谢谢分享
感谢分享
mqtt(message queuing telemetry transport,消息队列遥测传输)是ibm开发的一个即时通讯协议,它比较适合于在低带宽、不可靠的网络的进行远程传感器和控制设备通讯等,正在日益成为物联网通信协议的重要组成部分。mqtt现在主要用于即时通讯,物联网m2m,物联网采集等。
感谢分享