文章目录
概述
本文继续使用小熊派IoT主板+NB28-A通信扩展板进行实验。文中将描述 NB28-A/BC28-CNV 通信模组使用AT指令连接华为IoTDA平台、发送和接收数据的详细流程步骤,并对该流程中所涉及的AT指令做出了工作原理级别的注释,以真正理解此通信交互过程。
@HISTORY
基本实验过程请参考 #< IoT/HCIP/基于NB-IoT模组的AT指令实验(小熊派IoT+NB28-A模组)>#,本文对其中 “NB28-A通信模组接入华为IoTDA平台” 章节内容做展开说明。在进行AT指令测试前,会先简单分析AT指令是如何从通信模组出发,经过了哪些路径最终到达华为IoTDA平台,主要涉及NB-IoT物联网解决架构中,无线接入网和NB-IoT核心网层的相关基础知识。
检查通信环境
NB-IoT是4G时代的产物,但被纳入5G及未来6G体系。 NB-IOT其作为4G LTE的衍生技术,其设计初衷是替代2G/3G的物联网连接,尤其适用于智能表计、环境监测等静态场景。NB-IoT具有比GSM高20dB的覆盖增益,可以在地下车库、地下室等信号难以到达的地方实现覆盖 。5G通过兼容性升级(如Release 16支持NB-IoT与5G核心网对接)和功能扩展(如低功耗唤醒、卫星直连),增强了NB-IoT的广覆盖和移动性支持。NB-IoT 已被纳入5G标准,成为5G时代物联网的核心技术之一。它将与NR(New Radio)技术结合,满足大规模机器连接(mMTC)场景的需求。预计6G将继承5G的物联网能力,并可能通过AI原生设计、通感一体化(通信与感知融合)等特性优化NB-IoT的性能。
该章节的AT实验,尚未触及IoTDA操作,只是在配置和检查通信链路。也就是说,理论上,执行本章中的AT指令设置和查询操作前,不必执行任何与平台通信相关的PSK、CDP、DTLS等配置操作。上边这个小结论也经过了我的实际验证,我并没有找到直接恢复出厂设置的办法,只是通过最笨的配置覆盖的方式,消除所有曾经执行过的正确或异常的配置信息。
若你之前进行过某些操作,或打开过UE功能,那么最好先临时关闭。
通信模组固件
# 查询固件信息
ATI
我先要强调的是如上版本,足够完成HCIP-IoT2.5中的所有实验。遇到问题,请先不要往固件上甩。
1、升级过程不是很简单,我尝试使用QFlash升级,暂时没有成功。移远通信的FAE说,为了升级这个NB28-A的固件,可能需要从通信板单独引出串口,而不能直接使用主板上的多合一功能的USB数据线。
2、模组内现在的固件版本是BC28CNVBAR02A03,而针对此型号的最新固件版本是04(202503从移远通信FAE获取)。网络中提及到一些BC28JAR01A08/09等固件升级包,这些是不适用于我们的BC28CNVBA通信模组的,不要瞎搞。
信号强度
//确认插好了SIM卡 //获取SIM卡的ICCID(集成电路卡识别码)
AT+NCCID
//响应
+NCCID:89860496162180471954
//查询SIM卡的PIN码状态,间接判断SIM卡是否就绪
AT+CPIN?
//响应
+CPIN: READY
//获取信号强度指示
AT+CSQ
//响应
+CSQ:15,99
一般资料显示最低要求为10,我们的NB28-A模组是没有外置天线的,信号强度并不高,如上,我的才15-16的样子。移远通信的FAC告诉我15这个值,不太乐观,可能会导致失败,但我最终是成功了的,说明15还凑合。后来的一次测试中,我收到了 +CSQ:99,99 反馈。
也就是说信号强度无法检测到,难道是昨天刮大风,基站坏了?原来是小问题,我当时处于AT+CFUN=0 即射频关闭的状态,此时 AT+CIMI 都无法调用,现象类似于SIM无法被识别。
CGATT指令参数 / 啥是PS域?
AT+CGATT 的参数说明中提到了(附着到)PS域的概念,我一开始并不太理解此概念。在成功完成一次实验后,我倒回头来重新测试该指令。对于BC28-CNV模组,即使我没有配置PSK、没有开启DTLS、没有正确配置CDP服务时,网络附着状态依然是正确的!那么这个PS域附着状态到底是甚?当通信模组运行起来后,我们谈及它是否成功附着到PS域这个问题,PS域在哪里?其对应什么实物设备?是基站?是路由器?还是什么移动通信供应商的某某系统或模块?是什么呢?
作为小白,为了得到上述问题的答案,我费了不少功夫,整理了 #< IoT/HCIP/细致解读 NB-IoT 无线接入层与核心网层 >#。结合该文的讨论,
一个小结论是,在NB-IoT网络中,所谓附着到PS域(分组交换域)的本质是通过EPC核心网的MME(移动性管理实体)完成移动性管理和会话管理。用户(通信模组)附着到PS域的过程,本质上是与MME建立信令连接,并由MME协调其他核心网元(如SGW、PGW)完成数据承载的配置。
PS附着状态:AT+CGATT
该命令用于将 MT 附着于 PS 域或将 MT 从 PS 域去附着。命令执行后,MT 保持在 V.250 命令状态。如果MT已经处于请求的 <state> 设置状态,则会忽略此命令,并返回OK响应。如果正在执行AT+CGATT,在附着或去附着注册步骤完成之前,再次执行此命令会返回错误。如果未达到请求状态,则会响应 ERROR 或 +CME ERROR: <err>。
注意参数说明,当state=1 时,自动选择 AT+COPS=0,这可能是在HCIP-IoT实验手册中,并没有提及AT+COPS指令执行过程的原因。
发送AT+CGATT,检测网络是否激活,为1激活,0未激活,若信号正常的情况下未激活,可以等待10s在发送试试。
#查询命令
AT+CGATT?
#响应
+CGATT:1
#设置命令
AT+CGATT=<state>
PLMN 选择:AT+COPS
在此之前,我只能大约意识到,通信模组上肯定是要有类似于手机信号接收和发送设备的硬件或模块,不光可以接收中国移动信号,也可以接收中国联通和中国电信的信号。实际上,
通信模组实现多运营商(如中国移动、中国联通、中国电信)信号接收和发送的核心硬件模块主要包括以下关键组件:多模多频段射频前端模块、基带处理单元、天线调谐器与多路复用器、SIM卡槽与eSIM技术。通信模组实现多运营商信号接收的硬件核心是多模射频前端模块和基带芯片组,通过射频开关、功率放大器、滤波器等电路动态适配不同频段,结合SIM/eSIM技术实现网络切换。
在射频前端模块中,“多模”指的是该模块能够支持多种通信制式或技术标准的能力。通信制式的多样性,多模射频前端需支持多种蜂窝网络标准,例如:2G:GSM、CDMA;3G:WCDMA、TD-SCDMA;4G:TD-LTE、FDD-LTE;5G:Sub-6GHz、毫米波频段。非蜂窝技术:Wi-Fi、蓝牙、GPS 等。协议栈兼容性,基带芯片需集成不同通信模式的协议栈,例如在4G/5G双模芯片中,需同时处理LTE和NR(New Radio)的物理层协议。
#查询指令
AT+COPS?
#我的响应
+COPS:0,2,"46000"
#@Note /在CFUN关闭设置的情况下COPS设置指令是无法执行的,提示524(UE 处于最小功能模式)异常
AT+COPS=0
先简单说下,<mode> 网络选择模式,自动或手动,我这里为0自动。 <format> 运营商名称格式,BC28下只有=2数字编码格式一种选择。 <oper> 是运营商信息 46000 代表中国移动(MCC=460,MNC=00)。MCC(Mobile Country Code),460 是中国唯一的移动国家代码,全球通用。MNC(Mobile Network Code),00 是中国移动的国内网络代码(46000、46002、46004等用于细分业务),类似的,中国其他运营商标识,中国联通(46001)、中国电信(46003)、中国广电(46015)等。
再开始前,先普及几个 AT+COPS 指令说明中提到的概念,
PLMN(Public Land Mobile Network,公共陆地移动网络) 是由政府或运营商建立的移动通信网络,用于为公众提供无线通信服务。其核心标识由 MCC(移动国家码) 和 MNC(移动网络码) 组成,例如中国移动的 PLMN 为 46000,中国联通为 46001。与普通 SIM 卡相比,USIM 卡容量更大(支持 4G/5G 网络)、安全性更高,且支持远程管理(如 eSIM 技术)。EPS(Evolved Packet System,演进分组系统) 是 LTE(4G)网络的核心架构,由以下两部分组成:E-UTRAN(无线接入网)和 EPC(核心网)。
指令 AT+COPS 主要用以设置命令强制尝试使用安装在当前所选卡槽中的 USIM 卡来选择和注册 EPS 网络运营商。参数 <mode> 用来设置找网动作,是由 UE 自动完成,还是通过该命令以特定的接入方式 <AcT>,强制选择运营商 <oper>(由 <format> 指定)。这个指令的参数看起来很复杂,但通常情况下,我们都会配置mode为0,后边的参数不需要。这条指令确实挺复杂,以后可能还要继续探究,临时先点到为止。mode == 0 是默认参数,我们初阶应用中,可以不执行此命令。
CEREG指令参数 / 啥是EPS与EPC?
EPS网络由运营商完全管理和控制。
EPS(Evolved Packet System) 是3GPP定义的4G LTE网络的核心架构,由 EPC(Evolved Packet Core,演进分组核心网)和E-UTRAN(Evolved UMTS Terrestrial Radio Access Network,演进的UMTS陆地无线接入网)组成。EPC负责核心网功能,包括用户认证、移动性管理、数据路由等,包含MME(移动管理实体)、SGW(服务网关)、PGW(PDN网关)等核心节点。E-UTRAN是无线接入网络,对应LTE基站(eNodeB)。 EPS通过全IP架构实现高速数据传输和低延迟,支持多接入技术(如LTE、3G、Wi-Fi)的融合。
CEREG指令参数 / 啥是URC?
URC(Unsolicited Result Code) 是未经请求的结果码,由设备主动上报的状态信息,无需用户主动查询。例如,当网络注册状态变化时,设备会自动发送+CEREG: 通知用户。这里的设备是?用户是?
上文中的设备:(不同于云端设备、不同于IoT终端设备)
指通信模组本身(如蜂窝模组、NB-IoT模组等),例如我们目前在使用的BC28-CNV。设备,负责与运营商网络进行通信(如注册、数据传输)。主动执行网络状态监测,并在事件触发时(如网络注册状态变化)生成URC。示例行为:
当模组从4G网络切换至2G网络时,自动通过串口发送+CEREG: 1,2。当网络信号丢失时,发送+CEREG: 0表示未注册。
上文中的用户:
指控制通信模组的外部主控设备或应用程序(如单片机、嵌入式Linux主机、PC软件、PC串口终端等)。用户可以通过发送AT指令(如AT+CEREG=1)配置模组行为。接收并解析模组返回的响应(包括URC),根据状态执行后续逻辑(如重连、告警)。示例行为:
主控单片机通过串口发送AT+CEREG=1,启用URC功能。当收到+CEREG: 1,5(漫游注册成功)时,主控程序记录日志或通知用户。
为什么需要URC?
1、实时性:用户无需轮询查询状态,降低通信开销。
2、事件驱动:例如在物联网设备中,当模组断网时,主控程序可通过URC立即触发故障恢复流程。
3、资源优化:避免主控端频繁发送AT指令占用串口资源。
常见的URC/设备主动上报的状态信息,
网络注册状态(AT+CEREG的Stat响应参数)、信号丢失、网络切换通知(如在2G/3G/4G/5G网络间切换)、漫游状态更新、服务拒绝(如SIM卡无效或网络限制)、短信接收、来电显示、PDP上下文激活/去激活、IP地址分配、低电量警告(部分模组支持)、硬件故障(部分模组支持)、小区切换通知、GPS定位数据、无线制式切换、NB-IoT/eMTC状态(专用模组可能通过 +NUESTATS 上报窄带物联网连接状态)、厂商的自定义事件和诊断信息等。URC的设计覆盖了设备与网络交互的全生命周期事件,从底层硬件状态到高层业务逻辑均有涉及。开发中需根据具体模组手册配置URC订阅模式,并结合实际场景处理异步事件。
网络注册状态:AT+CEREG
AT+CEREG 设置和查询 EPS 网络注册状态。Evolved Packet System 是演进分组核心网,是由移动网络供应商全权管控的,特别要注意的是,在此提到的网络注册状态其与IoTDA物联网平台还没有扯上半丁点关系。
这条指令看上去也很复杂,我在我的环境下执行了查询指令,
我的响应中,第二个值是<stat>,其取值含义为,
结合本小节及其前两个小节,对于我们初学者,一个比较合适的配置是,
//设置/启用URC功能
AT+CEREG=1
//响应
OK
//查询
AT+CEREG?
//响应 /若没有设置AT+CEREG=1,则查询返回+CEREG:0,1
+CEREG:1,1
实践结果表明,无论是否开启URC功能,CEREG网络注册状态查询结果都是 stat==1 已注册本地网络。所谓 “本地网络” 指用户归属的运营商网络(Home PLMN),即SIM卡所属的运营商网络。中国移动用户的SIM卡在中国移动基站下注册时,stat=1,若中国移动用户漫游到其他运营商网络(如中国联通),则stat=5(已注册漫游网络)。
网络附着和网络注册
我们进一步来区分下网络附着状态和网络注册状态。这里提到的网络都是指EPC核心网,而与平台网络无关。通信模组与核心网建立通信的过程,必须是先完成附着,才能发起注册流程,尽管在我们的实验中,这些是自动完成的。具体的,终端通过NAS信令(如Attach Request)向核心网发起附着;附着成功后,通过Service Request向基站申请资源,完成注册(CEREG=1)。
@另外需要注意的是,要区分网络注册状态和后文提到的消息注册状态,
前文提到AT+CEREG所谓的网络注册状态是设备注册移动通信供应商核心网的状态,与IoTDA无关。而与IoTDA有关的状态是后文将要讲解的AT+NMSTATUS消息注册状态。如果没有成功接入IoTDA,试图查询消息注册状态,将收到+NMSTATUS:REG_FAILED告警。
AT指令接入IoTDA完整流程
我们先实践一次完整的AT指令接入IoTDA,然后再对每条指令进行展开说明。
#if //只要射频打开CFUN=1/无论对云端的配置是否合理
//选择运营商
AT+COPS=0
//PS域附着状态
AT+CGATT?
//可选设置/启用URC功能
AT+CEREG=1
//查询网络注册状态 /期望结果 +CEREG:1,1
AT+CEREG?
#endif
//关闭协议栈/射频功能
AT+CFUN=0
//PSK_ID和PSK //秘钥明码 @note 若秘钥不对将返回Error4 /这里IoTDA存在Bug,具体参见后文。
AT+QSETPSK=0,xxxxxxxxxxxx
//CDP服务器设置 /IP地址使用[ping 域名] 方式获取
AT+NCDP=AT+NCDP=124.70.30.197,5684
//打开DTLS加密
AT+QSECSWT=1
//打开协议栈/射频
AT+CFUN=1
//检查消息注册状态 //期望结果+NMSTATUS:MO_DATA_ENABLED
AT+NMSTATUS?
//执行数据发送测试
AT+NMGS=5,00193C0064
设置 UE 功能:AT+CFUN
在HCIP-IOT实验手册中,AT+CFUN=1的功能被表述为打开协议栈功能,这似乎有些片面。
执行诸如 AT+NCDP 配置物联网平台服务器地址和端口前,通常先执行 AT+CFUN=0 关闭模组的射频功能,主要原因如下:
1、模组处于全功能模式(AT+CFUN=1)时,射频模块会主动尝试附着网络并发送数据。此时修改关键参数(如NCDP)可能导致网络连接中断或协议栈异常。部分模组在全功能模式下会锁定非易失性存储(NV),禁止修改已保存的配置。
2、部分模组默认开启自动注册(如 AT+NCONFIG=AUTOCONNECT,TRUE),若未关闭射频,模组可能在配置过程中尝试连接旧服务器地址,导致配置失败或数据错乱。
3、射频开启时信号强度(AT+CSQ)可能波动,影响配置稳定性。之前有接触过某手环主板的测试,在向卫星发射信号的瞬间,其电流可以高达恐怖的5A,可以想象吗。
因此,
在进行相关配置前,最好先 “用户关机”,这可能不是必须的,但建议养成良好的习惯。
设置秘钥PSK:AT+QSETPSK
这里的PSK(预共享秘钥)是你如下图创建设备时,输入的8-32个16进制字符(秘钥创建和重置卡都是这么要求的)
这里有个巨大的BUG,我不知道问题具体出在哪里,只是在现象级搞清楚了。如上在AT+QSETPSK参数说明里,指出PSK是固定16位16进制数字,在平台测设备创建卡(如上图)和秘钥重置窗(如下图)中,要求是8-32位16进制数字,是矛盾的。
经过实践可知(时间202503),如果上述PSK配置位数小于16位数字,则被判定为无效。测试使用9位、15位秘钥,在串口终端中执行AT+QSETPSK=0,xxxx 指令时,均被反馈 +CME ERROR: 4,只有当秘钥位数大于等于16位数字时,QSETPSK设置操作才能返回OK成功。咱就说,这坑不坑爹吧,至于这是平台测的鉴权失败?还是直接在通信模组测指令参数就校验失败?我尚分不清。
在这里,我曾经让CME ERROR: 4(不支持该操作)坑了好一阵子,这里的不支持并不是没有目标指令功能。在指令信号强度不足、当前指令参数错误、前置操作不合理(如CDP配置错误、秘钥错误)等情况下均可能返回。因此所谓的不支持,可能需要解释为在当前执行上下文中,目标操作无法完成用户的期望或请求。
所谓设备认证类型,可参见LwM2M/CoAP协议鉴权。LwM2M/CoAP协议鉴权支持加密与非加密两种接入方式,若设备采用非加密方式接入时,非加密端口为5683,在设备接入物联网平台时携带设备唯一标识nodeId,完成设备的接入鉴权;当设备采用加密方式接入时,加密业务数据交互端口为5684,使用DTLS/DTLS+传输层安全协议通道接入,并携带nodeId和密钥以完成设备的接入鉴权。
若我们创建设备时不设置秘钥,是不是就不用进行AT+QSETPSK操作呢?不是的,
另外,不要轻易暴露自己的设备序列号,因为不能重复注册,
设置CDP服务器:AT+NCDP
参数 <IP_addr> 字符串型,为 LwM2M 物联网平台 IP 地址,支持 IPv4、IPv6 类型的 IP 地址或域名。参数 <port> 无符号整型,取值0~65535,默认值为 5683。若配置端口为 0,则使用默认端口;若没有指定端口,则使用之前设置的端口;若没有指定端口且之前未设置,则使用默认端口。那么什么是CDP服务呢?
开始的时候Deepseek高速我她是 Customer Data Platform Service 的缩写,其实不是。正解 Connect Device Platform 可参考AT指令手册缩写附录表,
在物联网通信场景(尤其是NB-IoT模组配置)中提到的CDP服务,特指华为物联网平台中用于设备数据接入与管理的核心服务。在我们的实验场景下她代表的即是华为云 IoTDA 服务平台。CDP服务的核心功能包括,设备注册与认证,数据采集与传输,指令下发与控制,协议转换与适配。
特别要注意的是,参数配置后要重启模组才能生效,重启、要重启, 在重启前,新配置不会生效,即使你在配置CDP时,立即返回了OK。还要理解到,此参数会被自动保存到KV中,
KV存储将参数以键(Key)和值(Value)的形式保存到模组的 非易失性存储器(如Flash或EEPROM) 中,确保数据在断电、重启或深休眠(PSM)后仍能保留。更深层次的存储机制,这里不再探讨。
//如下执行返回 +CME ERROR: 4
AT+NCDP=xx,5683
//一个错误的地址(把正确域名删了一大部分),也可以返回OK /看来检查有限啊
AT+NCDP=aps.cn-north-4.myhuaweicloud,5684
接入信息
从实例总览 - 接入信息 - 设备接入,路径中找到并复制,我的域名信息如下,
实际不支持域名
接下来是重点, 也是HCIP实验最开始失败的关键原因,
BC28手册中如上描述 NCDP 指令的 <IP_addr> 参数可支持域名格式,但实际上这里存在BUG,使用(正确的)域名并不能成功接入华为云IoTDA平台,至于BUG在哪个层次上,我目前分析不出来。我只谈谈我的测试,
//使用域名配置/重启后不生效(以5分钟为观察期)
AT+NCDP=4b4d70ade3.st1.iotda-coaps.cn-north-4.myhuaweicloud.com,5684
//使用IPV4地址 /重启10s后生效
AT+NCDP=124.70.30.197,5684
那么,如何获取域名对应的IP地址呢,在本机cmd中运行ping命令,
理论上,你在不同机器上ping上述域名,得到的IP地址是一致的。如此,你在进CDP服务配置时,就先不要直接使用域名了,而是使用其实际对应的服务端IP地址。
端口号也不能错
//使用IP地址,配置半生效?
AT+NCDP=124.70.30.197,5683
一个意外的实验,阴差阳错下我在DTLS开启状态下,测试了IP+5683配置,实验结果如下,
重启模组几分钟后收到 +QDTLSSTAT:3 异步事件,此事件是 DTLS(Datagram Transport Layer Security)协议连接状态的反馈码,表示 DTLS握手失败。为了探个究竟,我也测试了不开启DTLS,且使用非加密端口5683配置的情况,此时不会收到QDTLSSTAT事件。综合测试发现,使用5683端口的情况下,无论DTLS是否开启,NMGS等操作,都会返回ERROR:4错误。
我尝试ping去掉s的域名,是不成功的,故现在我不能确定5683/CoAP的域名或IP地址。
DTLS模式:AT+QSECSWT
受限的应用协议,CoAP(Constrained Application Protocol),基于UDP的非加密协议,默认端口为5683,适用于资源受限设备,但数据传输未加密。CoAPS(CoAP Secure),在CoAP基础上通过DTLS(Datagram Transport Layer Security)实现加密,端口通常为5684,提供端到端的数据安全保护。
与NCDP设置一样,DTLS设置也会在进入深休眠或 AT+NRB 重启后保存到 KV。不同的是,它不用重启模组才能生效,而是立即生效。为了验证DTLS设置的必要性,实验过程如下,使用正确的CDP配置,但是不开启DTLS,
//正确的CDP配置
AT+NCDP=124.70.30.197,5684
//不开启DTLS /无法发送数据
AT+QSECSWT=0
在上述配置下,数据发送指令返回+CME ERROR: 4,即不开启DTLS,在CoAPs协议下是不能发送数据的。因此,发送AT+QSECSWT=1,使能DTLS模式,是Coaps协议下通信的必选步骤。
设备在线状态
设备的在线状态,可能跟我们想象的不太一样,此状态不是实时的。
为了验证下,云端设备是在什么情况下,或者说是在哪些必要操作后才变为在线状态的,我无情的删除-增加-删除-增加我的云端设备,从测试结果我们可以看到,如下操作后,云端设备即变为在线,
//关闭射频
AT+CFUN=0
//正确的PSK配置和设置
AT+QSETPSK=0,xxxx
//正确的CDP配置
AT+NCDP=124.70.30.197,5684
//开启DTLS
AT+QSECSWT=1
//重启模组 /并等待大约10s
AT+NRB
而且后续测试过程还确定了,如果不在重启模组时AT+QSECSWT=0,设备也不会从未就绪变为在线,这在此验证了CoAPs下开启DTLS操作的必要性。还要注意的是,与HCIP-IOT实验手册中描述的不一致,并不是在上报数据后,云端设备才会变为在线,而是完成与IoTDA的有效对接后即可。
已入网请使用
前边 <设备在线状态> 章节中的实验过程已经表明,对于BC28系列模组,其会自动向iot平台注册。若注册成功,就会看到两条异步消息+QLWEVTIND:0和+QLWEVTIND:3,表明我们可以使用数据传输相关AT指令和平台进行通讯啦,平台设备也会变为在线。对于BC95,部分网络资料显示,可能确如实验手册中表述的那样,要在执行 AT+NMGS 指令后,平台设备才会在线,我没有此模组,没有进行实验。
消息注册状态:AT+NMSTATUS
#指令
AT+NMSTATUS?
#响应
+NMSTATUS:MO_DATA_ENABLED
当模块连接到 CDP 服务器时,该命令用于上报当前注册状态。当 LwM2M 处于 MO_DATA_ENABLED 状态,则 UE 可以发送数据。
打开UE功能
发送AT+CFUN=1,打开UE功能,
也可以像HCIP-IOT实验手册中理解的那样,对于本实验而言,就是打开协议栈功能。在物联网开发中,AT+CFUN=1是激活设备通信能力的“总开关”,其作用类似于操作系统的内核启动。
CFUN未开启的情况下,
发送数据,将返回 +CME ERROR: 4 错误码。
AT+NMSTATUS? 消息注册状态将返回,+NMSTATUS:NO_UE_IP 异常。
@NOTE:
理论上 AT+CFUN=1 操作应该立即生效,但似乎=0设置是立即生效的,=1却需要重启才可以生效。
测试数据发送
AT+NMGS=5,00193C0064
实验结果,
后续实验
后续实验过程,继续参考 #< IoT/HCIP/基于NB-IoT模组的AT指令实验(小熊派IoT+NB28-A模组)># 文章内容,不再赘述。
参考说明
< Quectel_BC28-CNV&BC95-CNV_AT命令手册_V1.0 >
< Quectel_BC28-FBC95-GF_AT命令手册_V2.2.pdf >
其他参考,不在逐个列举了,可从CSDN资源中进行下载。部分资料可能在移远通信的门户上都下载不到,得找他们销售再找到他们的技术支持才能获取,这可能是一种变相营销手段吧,没怎么搞懂,怪麻烦的真是。点此下载。