1. 简介
NB模组:BC260Y
通讯方式:串口——AT指令
BC260Y模组是一款经典的物联网模组
2. 连接的平台:中国电信物联网平台CTWing
LWM2M通讯方式
2-连接的测试平台:安信可透传云平台
TCP-IP通讯方式
网址:
http://tt.ai-thinker.com:8000/ttcloud
3.公司云平台(保密)(TCP)
4. 使用LWM2M协议
连接电信平台使用LWM2M协议
AT
AT+QRST=1
重启模块
1 无需去附着网络,自动立即重启
AT+QSCLK=0
配置休眠模式
<n> 整型。
0 禁用休眠模式
1 允许模块休眠等级最深可进入 Deep Sleep 模式
2 允许模块休眠等级最深可进入 Light Sleep 模式
AT+CGMI 查询制造商信息
AT+CGMI
OK
AT+CGSN 查询产品序列号
AT+CGSN=1
查询IMEI
ATE 设置命令回显模式
ATE1
是否回显从外部接收的命令
AT+QBAND=0
查询/设置工作频段
该命令用于查询当前注册的频段或设置要锁定的频段
<band_number> 整型。优先搜索的频段数量。
0 所有频段
1~3 要锁定的频段数。
<band> 整型。NB-IoT 频段及顺序。有效值:3、5、8。
<operating_band> 整型。锁定的频段。有效值:3、5、8。
* 该命令执行后会触发模块断开网络,重新注册网络
AT+CGPADDR?
显示 PDP 地址
AT+NNMI=1
收数据模式为直吐模式
直吐模式收到数据直接数据
不需要指令去查看缓存
AT+NCFG=0,60
AT+NCFG=0,86400
生存周期
?
AT+CSCON=1
AT+CSCON?
连接状态
<n> 整型。启用/禁用 URC。
0 禁用 URC
1 启用 URC +CSCON: <mode>
<mode> 整型。信令连接状态。
0 空闲状态
1 已连接状态
该命令可提供 TA 感知的无线连接状态(即和基站的连接状态)信息,并可返回当前状态的指示。该状
态仅在无线事件(例如发送和接收)发生时更新
AT+CEREG?
EPS 网络注册状态
该命令用于查询当前 EPS 网络注册状态,
并用于当 EPS 网络注册状态改变时,设置上报的 URC 的显
示格式
<n> 整型。
0 禁用上报网络注册状态 URC
1 启用上报网络注册状态 URC +CEREG: <stat>
2 启用上报网络注册状态和位置信息 URC:
+CEREG: <stat>[,[<tac>],[<ci>],[<AcT>]]
3 允许上报网络注册状态、位置信息和 EMM 原因值 URC:
+CEREG: <stat>[,[<tac>],[<ci>],[<AcT>][,<cause_type>,<reject_cause>]]
4 对于请求 PSM 的 UE,允许上报网络注册状态、位置信息和网络定时器配置 URC:
+CEREG: <stat>[,[<tac>],[<ci>],[<AcT>][,,[,[<active_time>],[<periodicTAU>]]]]
5 对于请求 PSM 的 UE,允许上报网络注册状态、位置信息、EMM 原因值和网络定时器
配置 URC:
+CEREG: <stat>[,[<tac>],[<ci>],[<AcT>][,[<cause_type>],[<reject_cause>][,[<act
ive_time>,[<periodicRAU>]]]]
<stat> 整型。EPS 注册状态。
0 未注册,MT 当前未搜索网络
1 已注册,归属网络
2 未注册,但 MT 当前正在尝试附着或搜索网络以进行注册
3 注册被拒绝
4 未知(例如:超出 E-UTRAN 覆盖范围)
5 注册,漫游状态
AT+NCDPOPEN="221.229.214.202",5683
发起连接
OK
+CSCON: 1
+QLWEVTIND: 0//注册LWM2M 成功
+QLWEVTIND: 3 //平台订阅Object19 成功
出现+QLWEVTIND:3 以后就说明模组已经和平台连接上了。能够看到已激活状态
AT+CSQ
信号强度
AT+NMSTATUS?
查询注册状态
其中AT+NMSTATUS?返回的其他指令
字符串类型 含义
UNINITIALISED 未初始化状态
REGISTERING 连接中
REJECTED_BY_SERVER 连接请求被服务器拒接
TIMEOUT 连接超时
REGISTERED 已连接未订阅
REGISTERED_AND_OBSERVED 已连接已订阅
DEREGISTERED 连接断开
RESUMPTION_FAILED 会话恢复失败
AT+NMGS=10,01020304050607080900
发送数据
+NNMI:
接收数据
详情见官方文档:【BC260Y-CN-LWM2M_应用指导】
5. 使用TCPIP协议
开启模组的电源后
模组会自动检测SIM卡的存在
然后自动入网
参考下面的日志
[2024-10-24 13:39:12.688] bsp_iot_open
[2024-10-24 13:39:12.985] ret=-2
[2024-10-24 13:39:12.985] RT_ETIMEOUT
[2024-10-24 13:39:14.086] I_EVT_POWERON
[2024-10-24 13:39:14.086] i_len=1
[2024-10-24 13:39:14.551] I_EVT_POWERON
[2024-10-24 13:39:14.551] i_len=7
[2024-10-24 13:39:14.551] l=5
[2024-10-24 13:39:14.551]
[2024-10-24 13:39:14.551] RDY
[2024-10-24 13:39:14.551] i_len=0
[2024-10-24 13:39:14.883] I_EVT_POWERON
[2024-10-24 13:39:14.883] i_len=12
[2024-10-24 13:39:14.895] l=10
[2024-10-24 13:39:14.895]
[2024-10-24 13:39:14.895] +CFUN: 1
[2024-10-24 13:39:14.895] i_len=0
[2024-10-24 13:39:15.616] I_EVT_POWERON
[2024-10-24 13:39:15.616] i_len=16
[2024-10-24 13:39:15.616] l=14
[2024-10-24 13:39:15.616]
[2024-10-24 13:39:15.616] +CPIN: READY//jiancedao
[2024-10-24 13:39:15.616] i_len=0
[2024-10-24 13:39:20.636] I_EVT_POWERON
[2024-10-24 13:39:20.636] i_len=13
[2024-10-24 13:39:20.636] l=11
[2024-10-24 13:39:20.636]
[2024-10-24 13:39:20.648] +CSCON: 1
[2024-10-24 13:39:20.648] i_len=0
[2024-10-24 13:39:22.750] I_EVT_POWERON
[2024-10-24 13:39:22.750] i_len=20
[2024-10-24 13:39:22.750] l=18
[2024-10-24 13:39:22.750]
[2024-10-24 13:39:22.750] +IP: 10.24.10.72
下面是使用初始化示例:
使用TCPIP协议
AT
AT+QRST=1
重启模块
1 无需去附着网络,自动立即重启
AT+QSCLK=0
配置休眠模式
<n> 整型。
0 禁用休眠模式
1 允许模块休眠等级最深可进入 Deep Sleep 模式
2 允许模块休眠等级最深可进入 Light Sleep 模式
AT+CGMI 查询制造商信息
AT+CGMI
OK
AT+CGSN 查询产品序列号
AT+CGSN=1
查询IMEI
ATE 设置命令回显模式
ATE1
是否回显从外部接收的命令
//深休眠唤醒后有效
AT+QBAND=0
查询/设置工作频段(工作的频段-如果运营商卡确定的话,那么频段就确定不需要扫频)
该命令用于查询当前注册的频段或设置要锁定的频段
<band_number> 整型。优先搜索的频段数量。
0 所有频段
1~3 要锁定的频段数。
<band> 整型。NB-IoT 频段及顺序。有效值:3、5、8。
<operating_band> 整型。锁定的频段。有效值:3、5、8。
* 该命令执行后会触发模块断开网络,重新注册网络
//深休眠唤醒后有效
AT+CSCON=1
<n> 整型。启用/禁用 URC。
0 禁用 URC
1 启用 URC +CSCON: <mode>
AT+CSCON?
连接状态
<n> 整型。启用/禁用 URC。
0 禁用 URC
1 启用 URC +CSCON: <mode>
<mode> 整型。信令连接状态。
0 空闲状态
1 已连接状态
该命令可提供 TA 感知的无线连接状态(即和基站的连接状态)信息,并可返回当前状态的指示。该状
态仅在无线事件(例如发送和接收)发生时更新
//深休眠唤醒后有效
AT+CEREG?
EPS 网络注册状态
该命令用于查询当前 EPS 网络注册状态,
并用于当 EPS 网络注册状态改变时,设置上报的 URC 的显
示格式
<n> 整型。
0 禁用上报网络注册状态 URC
1 启用上报网络注册状态 URC +CEREG: <stat>
2 启用上报网络注册状态和位置信息 URC:
+CEREG: <stat>[,[<tac>],[<ci>],[<AcT>]]
3 允许上报网络注册状态、位置信息和 EMM 原因值 URC:
+CEREG: <stat>[,[<tac>],[<ci>],[<AcT>][,<cause_type>,<reject_cause>]]
4 对于请求 PSM 的 UE,允许上报网络注册状态、位置信息和网络定时器配置 URC:
+CEREG: <stat>[,[<tac>],[<ci>],[<AcT>][,,[,[<active_time>],[<periodicTAU>]]]]
5 对于请求 PSM 的 UE,允许上报网络注册状态、位置信息、EMM 原因值和网络定时器
配置 URC:
+CEREG: <stat>[,[<tac>],[<ci>],[<AcT>][,[<cause_type>],[<reject_cause>][,[<act
ive_time>,[<periodicRAU>]]]]
<stat> 整型。EPS 注册状态。
0 未注册,MT 当前未搜索网络
1 已注册,归属网络
2 未注册,但 MT 当前正在尝试附着或搜索网络以进行注册
3 注册被拒绝
4 未知(例如:超出 E-UTRAN 覆盖范围)
5 注册,漫游状态
//深休眠唤醒后有效
AT+CGPADDR?
显示 PDP 地址
AT+CSQ
信号强度
AT+CCLK
获取网络时间
这个指令在项目中出现很大一个问题
在某段时间的测试中,大量的设备获取时间为2000年0时0分0秒
说明获取不到网络时间
和厂家沟通后发现和注册的小区没有关系
厂家查看了模组的日志后给的说法是基站没有回复时间
但是没有解决方法,
后面无奈更改了获取时间的平台为阿里云NTP服务器
在过了几周后之前使用基站网络时间的设备又可以正常获取,
离谱呀,才学疏浅
询问厂家技术,他们也是半桶水,又说是运营商的问题,又牵扯到核心网
基站-核心网-运营商
一时半会研究不懂
哈哈哈
//AT+QIDNSCFG 配置 DNS 服务器地址
问: 什么是DNS
DNS服务的作用将域名解析为IP 地址
客户端向DNS服务器(DNS服务器有自己的IP地址)发送域名查询请求
DNS服务器告知客户机Web服务器的IP 地址客户机与Web 服务器通信
[参考链接](https://blog.csdn.net/qq_31930499/article/details/79767330)
AT+QIDNSCFG=0,"223.5.5.5","8.8.8.8"
1. 阿里DNS: 223.5.5.5 223.6.6.6
延迟在25ms左右,基本不掉包,速度可以保证,对阿里没有偏见的同学是可以考虑的,毕竟是国内的,访问速度可以保证的
2. Google DNS: 8.8.8.8 8.8.4.4
几乎从知道这个DNS之后就一直在用,延迟在50ms左右,速度还可以,就是由于众所周知的原因,掉包比较严重,我在使用的时候也会有相应的感觉,但我是可以接受的
//AT+QNTP 通过 NTP 服务器同步本地时间
//该命令通过 NTP 服务器同步本地时间为世界标准时间(UTC)
问:什么是NTP
网络时间协议NTP(Network Time Protocol)是TCP/IP协议族里面的一个应用层协议,用来使客户端和服务器之间进行时钟同步,提供高精准度的时间校正。NTP服务器从权威时钟源(例如原子钟、GPS)接收精确的协调世界时UTC,客户端再从服务器请求和接收时间。
1. 中国[China] cn.ntp.org.cn
2. 阿里云NTP时间源服务器 "ntp.aliyun.com"
AT+QNTP=0,"ntp.aliyun.com",123,1
+QNTP: 0,"2024/10/24,05:39:25"
AT+QCCID
获取sim卡信息
远程连接
AT+QIOPEN=0,0,"TCP","122.114.122.174",34066
本地端口为自动分配
+CSCON: 1
+QIOPEN: 0,0
+QIOPEN: 0,0 //建立连接成功
//在 TCP 下深休眠唤醒后无效
AT+QISTATE=1,0 //查询连接状态
+QISTATE: 0,"TCP","hf.quectel.com",2020,0,2,0,1 //连接成功
AT+QICFG="dataformat",1,1 //配置发送接收的数据格式为十六进制格式
AT+QICFG="dataformat" //查询配置是否成功
AT+QISEND=0,3,"313233" //发送十六进制字符串数据
AT+QICLOSE=0 //主动断开
//注意事项
发送接收使用16进制
URC +QIOPEN: <connectID>,<err>上报的超时时间为 60 秒,
请在 URC 上报完成后再进行其他操作
如果 TCP/UDP 连接创建失败,需执行 AT+QICLOSE=<connectID>关闭当前 Socket,然后再次尝
试打开 Socket 以创建 TCP/UDP 连接
如果使用<local_port>指定了本地端口号,当执行 AT+QICLOSE 命令后,本地端口号需要释放,才
能确保下一次正常使用本地端口号。因此,建议在关闭 Socket 后等待 70 秒再重新执行 AT+QIOPEN
命令。如果在回收端口之前使用 AT+QIOPEN 创建新连接,则会导致连接创建失败
Socket 的数据访问模式目前仅支持直吐模式,暂不支持缓存模式
文本格式数据的最大长度 1024 字
节,十六进制格式数据的最大长度是 512 字节
SEND OK 仅表示数据已经发送至协议栈
MCU 应在收到 SEND OK 或者 SEND FAIL 响应后再继续发送下一条数据
这个问题可以在面试时使用,判断是否看全数据手册的一种方式
问题是模式使用完毕,你给模组断电时进行哪些操作?
若需要给模块断电,建议执行 AT+CFUN=0 再断电
模块断电之前,需进行如下操作:
通过 MCU 向模块发送 AT+CFUN=0 命令,触发模块向核心网发送
去附着消息
AT+CFUN=0 再断电
触发模块向核心网发送去附着消息
若入网异常或数据传输业务失败后,请按如下流程进行异常处理:
1) 执行 AT+CFUN=0 关闭射频和 SIM 卡;
2) 执行 AT+QCSEARFCN 命令(清除记忆频点);
3) 执行 AT+CFUN=1 再次尝试入网以及数据传输业务;
4) 若入网或数据传输业务仍失败,可根据退避算法进行 3 次重试;
若仍失败,则断电关机,待下一次业务上报时,再重新入网
//接收到的数据格式
+QIURC: "recv",0,42,"00ff240101002343596591a2a1101c110014000000000000000000000100000000000000000000000001"
//查询模块当前的网络服务信息
+QENG: 0,3688,11,264,"09018613",-84,-8,-77,6,8,"4B03",0,21,3
264
<sc_pci> 整型。服务小区物理小区识别码。范围:0~503
-84
有符号整型。服务小区的 RSRP 值。单位:dBm。可为负数
6
有符号整型。服务小区的最新 SNR 值,单位:dB。可为负数
AT+QENG=0
//原始数据
+QENG: 0,3688,11,264,"09018613",-82,-7,-75,7,8,"4B03",0,-128,3
OK
//ASCLL码显示
0D 0A 2B 51 45 4E 47 3A 20 30 2C 33 36 38 38 2C 31 31 2C 32 36 34 2C 22 30 39 30 31 38 36 31 33 22 2C 2D 38 32 2C 2D 37 2C 2D 37 35 2C 37 2C 38 2C 22 34 42 30 33 22 2C 30 2C 2D 31 32 38 2C 33 0D 0A 0D 0A 4F 4B 0D 0A
6. 低功耗工作
BC26模组是NB-IoT(窄带物联网)技术的一种实现,它采用了低功耗设计以适应长时间运行的需求。PSM(Power Saving Mode)、DRX(Discontinuous Reception)和 eDRX(Extended Discontinuous Reception)是NB-IoT中用于降低功耗的三种关键机制。下面是对这些概念的理解:
PSM (Power Saving Mode)
定义:PSM是一种深度睡眠模式,模组在此模式下几乎完全关闭无线电接收器,仅在预定的时间窗口内短暂开启以接收寻呼消息。(定时开窗通讯)
优点:极大降低功耗,适合不需要频繁通信的应用场景。
缺点:在PSM模式下,模组无法接收下行数据,直到下一个寻呼时间窗。
应用场景:适用于数据传输间隔长,如每天或每周上传一次数据的设备。
DRX (Discontinuous Reception)
定义:DRX是一种周期性的接收模式,模组在每个DRX周期内监听一次寻呼信道,其余时间关闭接收机。
优点:相比连续接收模式,功耗较低,但比PSM和eDRX功耗高。
缺点:功耗高于eDRX和PSM,不适合超低功耗要求的应用。
应用场景:适用于需要较快响应时间和定期数据传输的场景。
eDRX (Extended Discontinuous Reception)
定义:eDRX是DRX的扩展版本,它允许模组在更长的周期内监听寻呼信道,周期范围从20.48秒到2.92小时。
优点:相比于DRX,eDRX提供了更低的平均功耗,同时保持了一定的响应速度。
缺点:响应时间比DRX慢,但比PSM快。
应用场景:适用于需要比PSM更快响应,但比DRX更低功耗的应用,如每小时上报一次数据的传感器。
这些机制的使用取决于具体的应用需求,比如设备的电池寿命、数据传输频率和响应时间要求。在设计物联网设备时,可以根据设备的工作模式和功耗需求选择合适的机制。例如,对于需要快速响应的设备,可能更倾向于使用eDRX;而对于只需要偶尔传输数据的设备,则可以使用PSM来最大化电池寿命。
7. 备注碎片
-
重要的点
(有一个文档需要被看到: 终端应用设计指导文档)
在开发某一个过程中,养成良好的习惯,官方的文档尽量全部看完再去做,官网文档要看完,避免有坑不知道 -
入网超时300秒
-
问题:模组上电流程
-
解答: 模组上电 先识别SIM卡,识别成功后开始入网
-
这是模组的搜网步骤【详见 搜网机制说明】
-
中国移动 AT+QBAND=1,8 仅使能 B8
该命令执行后会触发模块断开网络,重新注册网络。 -
运营商自注册
-
搜网机制
目前 BC260Y-CN 默认的全频段搜网时间是 480 秒,即模块如果在 480 秒后仍然找不到网络,则会判断当前环境为无网络 -
软件勘误手册
当模块处于深休眠模式,串口能否接收数据?
当模块处于深休眠模式,串口无法收发数据。如果需要通过串口接收数据,需持续发送 AT 命令,模块返回 OK 后,才能进行数据业务;也可以先通过 PSM_EINT 引脚唤醒模块,再进行数据业务 -
如何判断 NB-IoT 网络的信号质量?
当 RSRP > -100 dbm 且 SNR > 3 db,业务比较稳定,成功率高 -
模块是否支持 USIM 卡热插拔?
不支持。如果掉卡,再次插入卡后,需重启模块以发起找卡 -
DRX 周期不支持配置,也不支持功能开启或关闭;eDRX 和 PSM 的周期均可配置,也支持功能开启
和关闭, -
但网络是否接受配置依赖于运营商设置。如果网络不支持配置 eDRX 和 PSM 的周期,建议咨询运
营商特定 APN 对应的 eDRX、PSM 时长,以期找到一个符合业务模型的节能周期。 -
需要注意,打开 PSM 模式并不代表模块可以进入 PSM 模式,还需要查看网络是否打开了 PSM。
-
最终能否进入该模式还要取决于模块当前注册的基站是否支持 PSM 模式。
-
模组最终选用的是中国移动的卡 ,
R13,R14 技术标准
为什么模块开机后无法注册网络?
模块开机后无法注册网络,请检查如下方面是否存在异常:
⚫ 执行 AT+CPIN?确认模块是否找到 USIM 卡。
⚫ 确认 USIM 卡是否欠费。
⚫ 分别执行 AT+QBAND?和 AT+CFUN?确认模块工作频段和工作模式是否正确。
⚫ 执行 AT+QENG=0 确认模块射频信号是否正常。
参考的官方文档
【BC260Y-TCP-IP应用指导】
【BC260Y-AT命令手册】
4.模块的功耗控制
- 模组有电源开关,长时间唤醒一次,工作完关闭电源,简单有效
- 使用AT休眠模式
8. 频段
9. 问答
-
问:模组业务使用的是哪种方式
答: TCP -
问: 模组MQTT 用过吗
答: 用过,下篇文章 -
问: 模组上电流程
答: 检查SIM卡,然后根据卡运营商自动注网, 注网时间不固定, 注网成功后会返回IP地址
然后进入用户的配置流程 -
问: 模组的发射功率是多少,接收灵敏度有多少, 发射瞬时电流有多少
答: 23dBm, -115dBm, 500 600MA左右
-
问: AT指令交互框架用的是什么 ,为什么
答: 使用的是表驱动的方式,因为这种方式资源占用小,
第三方的工具如 AT command 初始占用多少呢? 5K大小,而且使用不灵活 -
问: 数据接收呢,串口使用的哪种方式
答: 使用的是中断缓存接收方式,使用lwrb环形缓冲区
空闲中断+DMA是一种合理的方式,但是DMA的通道貌似不够,
一种通用的方案是合理的解
一种定制的方案是时间花费了深度够了,但往后复用率低,不易于移植
请开始博弈: 正解说:因人而异 哈哈哈 -
问: 遇到过什么难解的问题吗
答: 出现部分模组网络时间出错的问题,这个技术深度不够,原厂的人也踢皮球 -
问: 模组的传输效率
答: 在做升级的时候,模组最大16进制负载512字节,否则会拆分
模组与平台的通讯受输出端波特率的影响,这个问题深究就是模组的内存缓存的问题
模组与云端通讯速率 > 模组与设备通讯速率
问: 懂TCP
答: 不懂 差得远
问: NBIOT是什么
答: 窄带物联网 NB-IoT 网络只消耗大约 180KHz 的带宽
低功耗 低成本-半双工-信号覆盖广
缺点: 延时大 - 数据量小 - 速率低 - 频次低
问: 物理小区是什么
-
定义:
- **物理小区(Physical Cell)**是移动通信网络中的基本覆盖单元,由一个基站(如eNodeB或gNodeB)及其天线系统提供无线信号覆盖。
-
唯一标识:
- 每个物理小区都有一个唯一的编号,称为物理小区标识(PCI, Physical Cell Identity),用于区分不同的小区并避免干扰。
-
覆盖范围:
- 一个物理小区的覆盖范围通常是一个扇形或圆形区域,具体取决于基站的天线配置和功率设置。
-
基站与小区的关系:
- 一个基站可以管理多个物理小区,通过不同的天线扇区、频段或其他技术手段来实现。每个物理小区有自己的PCI。
-
用户设备连接:
- 用户设备(如手机)通过识别PCI来选择并连接到正确的基站,从而接入网络并进行通信。
简单类比
- 现实生活中的小区:城市中的一个住宅小区有多个房子,每个房子有唯一的门牌号。
- 通信网络中的小区:城市中的一个地理区域被划分为多个物理小区,每个小区有唯一的PCI,帮助用户设备正确连接到网络。