当前这篇文章介绍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
模块上有两排接口,一个是GPS信号输出接口,一个是BC20控制接口。
使用USB转TTL模块,将BC20板子与电脑连起来,调试板子是否正常。
1.2 测试模块
第一步接上之后,串口调试助手选择波特率为115200,勾选软件上的发送新行选项。发送AT过去,正常模块会返回OK。
1.3 上电初始化操作
查询模块是否正常
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定位
官方文档:
激活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指令连接华为云服务器,上传数据测试。
官方文档:
连接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