第一章 NB-IOT宝宝的成长故事
1.1 初次相见NB宝宝
- 大家都知道WiFi(能上网),蓝牙(能传图连接鼠标耳机),ZigBee(工厂内听说过),但是对时下比较火的低功耗广域网络(LPWAN)总是模模糊糊,今天我们来讲讲LPWAN家族里的大娃:NB-IoT宝宝的成长故事。
- NB-IoT即窄带物联网(Narrow Band-Internet of Things),具有低成本、低功耗、广覆盖、海量连接等特点,定位于运营商级、基于授权频谱的低速率物联网市场,在位置跟踪、环境监测、智能泊车、远程抄表、农业和畜牧业等领域拥有广阔的应用前景。
- NB-IoT的诞生并非偶然,其寄托着电信行业对物联网市场的憧憬。近10年来,由于传统的2G/3G/4G网络并不能满足物联网设备低功耗、低成本的要求,大部分物联网设备在连接时主要使用WiFi、蓝牙等免费技术,电信运营商很难从中获利。说白了也就是经济推动了技术的发展。
1.2 NB-IoT关键技术
- NB-IoT系统的传输带宽和LTE系统的一个物理资源块的载波带宽相同,都是 180kHz,这使得NB-IoT系统能够与传统LTE系统很好地兼容。
- NB-IoT系统的系统带宽和GSM系统的载波带宽相同,都是200kHz,这使得NB-IoT系统可以在GSM系统的频谱中实现无缝部署,对运营商重耕2G网络频谱提供了先天的便利性。
- NB-IoT将系统带宽收窄至200kHz,将有效降低NB-IoT用户终端射频芯片的复杂度,进一步降低芯片成本及开发复杂度。
1.3 NB-IoT网络架构
华为提供NB-IoT端到端解决方案的支持,提供多种开放能力供合作伙伴快速集成应用。提供海思的NB-IoT芯片,基站网络和Ocean Connect连接管理平台。开发者可以根据芯片/模组开发手册进行终端的开发,基于IoT平台进行APP Server开发。 ● Device:NB-IoT终端(如智能水表、智能气表等)通过空口连接到eNodeB。 ● eNodeB:主要承担空口接入处理和小区管理等相关功能,通过S1-lite接口与IoT核心网进行连接,将非接入层数据转发给高层网元处理。 ● IoT Core:承担与终端非接入层交互的功能,将IoT业务相关数据转发到IoT平台进行处理。 ● IoT Platform:IoT联接管理平台汇聚从各种接入网得到的IoT数据,根据不同类型转发给相应的业务应用进行处理。 ● APP Server:是IoT数据的最终汇聚点,根据客户的需求进行数据处理等操作。
第二章 NB模组实战演练
2.1 NB模组开机流程
步骤 | 执行 |
---|---|
step1 | 模组上电,初始化USIM卡 |
step2 | 搜索小区信号 |
step3 | 附着到NB网络,进入connect状态 |
step4 | 激活PDN,获得IP地址,建立PDN承载 |
step5 | 建立用户数据链接,收发用户数据 |
step6 | 一段时间无数据交互后,依次进入Drx(Idle)、PSM状态 |
step7 | 等待上发用户数据,或TAU(跟踪区域更新)再进入connect状态 |
在模组进入PSM状态后IP地址会保留,若PSM状态时模组请求发送数据,模组会转化为connect状态,但模组不会重新获取IP,还是以之前的IP发送数据。即:模组上电成功获取IP后,任何时刻查询其IP地址都是同样的IP值。
2.2 NB模组UDP数据发送测试
- 以下为NB模组(利尔达和移远都可以)测试步骤,方框内为发送相应指令后,NB模组返回的数据;
第一步:开机/重启,模块已经正常启动!
REBOOTING REBOOT_CAUSE_APPLICATION_AT Neul OK
第二步:AT+NBAND? 查看当前频段信息,确定是否和模块型号对应,默认移动/联通 8,电信模块需要将NBAND设置为5,之后重启模块
第三步:AT+NBAND=5 电信模块,设置频段为850MHZ
第四步:AT+NRB 重启模块
REBOOTING REBOOT_CAUSE_APPLICATION_AT Neul OK
第五步:AT+NBAND? 再次查询模块频段信息,确认设置成功
+NBAND:5 OK
第六步:AT+NCONFIG? 查询配置信息,主要包括自动连接使能配置信息,默认使能
+NCONFIG:AUTOCONNECT,TRUE // 自动连接网络 +NCONFIG:CR_0354_0338_SCRAMBLING,TRUE 开启了扰码功能 +NCONFIG:CR_0859_SI_AVOID,TRUE +NCONFIG:COMBINE_ATTACH,FALSE +NCONFIG:CELL_RESELECTION,FALSE +NCONFIG:ENABLE_BIP,FALSE OK
第七步:AT+CFUN? 模块是否处于全工作模式,打开射频电路,搜索信号,如果返回0,请确定AUTOCONNECT值是否为TRUE,以及是否安装NBIOT专用SIM卡
+CFUN:1 OK
第八步:AT+CIMI 查询IMSI信息,如果返回具体数值,说明已经正常识别SIM卡
460111176314533 OK
第九步:AT+CSQ 查询信号强度,返回的第一个数值代表信号强度,0-31代表有信号,数值越大信号越强,99代表没有NBIOT网络信号,第二个参数还没有实施,一直为99
+CSQ:21,99 OK
第十步:AT+NUESTATS 查询模块状态
Signal power:-842 Total power:-718 TX power:-32768 TX time:0 RX time:2472 Cell ID:79044177 ECL:255 SNR:-16 EARFCN:2506 PCI:3 RSRQ:-148 OK
第十一步:AT+CGATT? 查询是否模块附着成功,返回1代表成功;网络分为测试网络和商用网,SIM也分为测试卡和商用卡,确保一一对应才能附着成功,具体网络信息和SIM卡信息可跟运营商确认
+CGATT:1 OK
第十二步:AT+CEREG? 查询网络注册状态,第二个数值返回1代表:网络注册成功,返回2代表:正在注册网络,注册时间和信号强度有关
+CEREG:0,1 OK
第十三步:AT+CSCON? 查看模块工作的连接状态,第二个返回数值代表模块的工作状态,1代表CONNECT连接状态,0代表IDLE睡眠状态,如果没有数据交互,在CONNECT状态持续20秒,之后进入IDLE状态;如果仍然没有数据交互,10秒之后从IDLE状态进入PSM深度睡眠状态,此时模块不在接收任何下行数据,如果需要下行传输数据必须在CONNECT 和 IDLE状态下进行
+CSCON:0,0 OK
第十四步:AT+NSOCR=DGRAM,17,5683,1 创建UDP SOCKET 传输信道,DGRAM和17固定,5683代表本地端口号,1代表使能接收下行数据;最多可创建7个SOCKET传输信道,返回数值代表信号ID号,在发送和接收数据时需要指定
0 OK
第十五步:AT+NSOST=0,...,####,3,303132 发送UDP数据,0代表UDP SOCKET信道ID,...代表远程服务器的IP地址(公网IP地址),####代表远程服务器端口号,3代表发送的字符个数(发送了3个字符),303132代表“012”3个hex表示的字符;返回值代表成功从0信道发送了3个字节的数据(我这里测试发送了74个字节)
AT+NSOST=0,54.223.248.94,9502,74,FFAAD0D00000490F3836353335323033303030313031390000041F0000000000000000026B44F8FCF700F1000000020018020A6C002600004D380000000000000000000200000644628E 0,74 OK
1.如果远程服务端接收模块发送的数据,必须在30s = ( CONNECT状态20s + IDLE状态10s ) 之内发送下行数据,否则在没有数据交互的情况下模块会进入PSM深度睡眠状态,将 无法再接收到任何下行数据,但是此时模块仍然可以再次发送数据; 2.模块可以在CONNECT + IDLE + PSM任何状态下发送数据,只能CONNECT + IDLE 状态下 接接收数据; 3.只需要执行一次AT+NSOCR命令创建UDP SOCKET信道,之后任何模式下直接执行 AT+NSOST发送数据
第十六步:+NSONMI:0,67 信息代表模块接收到新的数据,需要读取,如果不及时读取,接收到下一条数据,将不会主动上报该信息;但可以连续读取;0代表 UDP SOKECT信道,67代表有67个字节数据需要读取。
+NSONMI:0,67
第十七步:AT+NSORF=0,3 读取数据;0代表UDP SOCKET 信道,3代表需要读取数据字节长度;需要从返回值中提取出有效数据303132,代表字符“012”
0,54.223.248.94,9502,67,FFAAD1D10000430F3836353335323033303030313031390000015E8569078F03C000000002000801C1000000030012000000140000003C000003C20000000400080198,0 OK
1.+NSONMI主动上报信息说明,如果模块接收到多包数据,但是没有使用AT+NSORF 命令读取数据,那么只会在第一次接收到数据时上报 +NSONMI 信息,此后不在主动上报,直到执行 AT+NSORF 读取数据之后才会上报。
第十八步:AT+NSOCL=0 关闭UDP SOCKET 传输信道
OK
2.3 NB-IoT COAP通信
2.3.1 名词解释
- 南向设备:开发者自行开发的终端硬件设备(包含多个传感器和MCU)。
- 北向应用:开发者自行开发的服务端应用(基于华为OceanConnect物联网平台提供的RESTful接口)。
- NB-IoT:窄带物联网,华为等公司主推的物联网通讯用蜂巢网络。
- NB芯片/模组:类似于3G/4G通信模组,将设备端数据打包发送到指定平台的硬件模块。
- SoftRadio:用于模拟NB模组、基站、核心网的PC端软件,可用于在缺乏NB模组和NB实网环境时的设备对接调试。
- OceanConnect:华为物联网全联接平台,南向设备和北向应用通过该平台交换数据和信令。
- 设备Profile文件:描述设备“是什么”、“能干什么”的json格式文件,上传到OceanConnect平台(上传时是zip包格式),设备绑定平台和提供服务的关键配置文件。
- 编解码插件:用来对NB设备上报的数据进行解码,同时对下发给NB设备的信令进行编码的插件,对接前需上传到OceanConnect平台。
2.3.2 数据上报
概念:信令下发是另一个物联网的基本业务。应用服务器通过物联网平台,发送信令到南向设备,而设备也将做出一些对应的响应。
流程: 1. 应用创建信令(命令的相关项需要和设备Profile中的描述一致),发送到平台; 2. 如果平台判断设备在线,则立即下发信令;如果平台判断设备离线,则 信令将缓存于平台的数据库中; 3. 南向设备在某时刻上报数据,平台收到数据后,将检索对应设备在数据库中是否存在有效未下发的信令,如有,则下发该信令; 4. 信令通过编解码插件进行编码(json到16进制码流),并被发送到设备端; 5. 设备收到信令,执行完毕,返回信令执行结果; 6. 平台收到上述执行结果,通过编解码插件的解析,获取信令执行的结果,修改对应的信令状态。
2.3.3 信令下发
概念:信令下发是另一个物联网的基本业务。应用服务器通过物联网平台,发送信令到南向设备,而设备也将做出一些对应的响应。
流程: 1. 应用创建信令(命令的相关项需要和设备Profile中的描述一致),发送到平台; 2. 如果平台判断设备在线,则立即下发信令;如果平台判断设备离线,则信令将缓存于平台的数据库中; 3. 南向设备在某时刻上报数据,平台收到数据后,将检索对应设备在数据库中是否存在有效未下发的信令,如有,则下发该信令; 4. 信令通过编解码插件进行编码(json到16进制码流),并被发送到设备端; 5. 设备收到信令,执行完毕,返回信令执行结果; 6. 平台收到上述执行结果,通过编解码插件的解析,获取信令执行的结果,修改对应的信令状态。