NB-IOT模块实战测试

模块选型

NB模块现在在市场上可选择的种类并不多,不像GPRS模块那样百花齐放,资料也少的可怜,常见的有SIMcom的SIM700系列,中兴的ME系列,移远的BC系列等。这里演示的是一款移远的模块BC26,基于MTK平台的解决方案,支持TCP,UDP,MQTT,LWM2M等协议。

物联网卡的选择:

现在的物联网卡主要使用的是电信和移动,联通的用的比较少。电信的计费是按照连接次数计费,移动是按照流量计费。移动的物联网卡可以使用在GPRS模块上,装在手机里面也可以使用。但电信的就不行了,电信的物联网卡只能在NB模块中使用,它的计费方式也很特别,按照连接次数来计费,需要计次的NB-IoT消息定义为含有业务语义的,用于完成业务诉求的应用层消息。包括:注册消息、订阅消息、数据上报消息、命令下发消息、命令响应消息、应用层心跳消息等。 不计次消息包括:DTLS握手消息、重传消息、ACK确认消息等。对于大于500字节的消息根据消息大小,以0.5KB为单位切分为多条消息计次。

测试

下面就介绍下NB-IOT模块的调试过程。

先为买来的NB模块按照硬件参考手册设计电路图和PCB图,由于需要运营商支持,SIM卡是少不了的。如果用一个最简的调试电路,只需要SIM卡和模块及其电源电路即可。另外天线部分要进行阻抗匹配。

电路板做好后就可以上电测试了。BC26的特点是可以使用低电压供电,正常工作在3.2v就很稳定,最低的工作电压是2.1V,非常适合磷酸铁锂电池供电,一般其他的模块都是3.7v供电,必须使用标称电压为3.7v的锂离子或锂聚合物电池供电。BC26还有一个特点是串口的电平是1.8v,必须使用1.8v的USB转串口线,普通的3.3v和5V的都不能使用。如果使用普通的usb串口线,需要在模块和串口线之间加电平匹配电路。

开机打印:

F1: 0000 0000

V0: 0000 0000 [0001]

00: 0006 000C

01: 0000 0000

U0: 0000 0001 [0000]

T0: 0000 00B4

Leaving the BROM

输入AT命令

AT

OK

显示NB-IOT信号强度

at+csq

+CSQ: 23,0

OK

信号大于10就可以了,现在的信号强度还是不错的。

+IP: 10.166.206.202

NB模块以及注册到电信的网络上了并且获取了IP地址。显然这是一个内网地址。

BC26支持工程模式的AT命令,显示格式如下:

+QENG: 0,,,,

_cellid>,[],[],[],[],<

sc_band>,,[],[]

AT+QENG=0

+QENG: 0,2506,2,320,"E437C52",-82,-5,-78,14,5,"E450",0,

可以看到信道号为2506,这个信道是850M频段的,显然电信使用的是B5频段部署的NB-IOT.

如果没有看到启动时候打印的IP地址,可以使用下面命令显示,如果没有获取IP地址就只显示OK。

AT+CGPADDR

+CGPADDR: 1,10.166.206.202

OK

建立TCP连接格式,使用buffer模式(buffer模式是信息存储在模块的缓冲区里面,需要用户手动去取,直接模式是消息来了直接打印到串口,常用的是buffer模式,直接模式输出的数据容易打乱程序逻辑)

AT+QIOPEN=<contextid>,<connectid>,<service>,/<domain>,<remote>[,<local>[,<access>][,<protocol>]]/<protocol>/<access>/<local>/<remote>/<domain>/<service>/<connectid>/<contextid>

返回格式,err为0表示连接成功

+QIOPEN: <connectid>,/<connectid>

AT+QIOPEN=1,0,"TCP","220.180.239.212",8062,1234,0

OK

+QIOPEN: 0,0

连接成功

查看连接状态

AT+QISTATE=1,0 //Query the connection status of Context ID 0.

+QISTATE: 0,"TCP","220.180.239.212",8062,1234,2,1,0

OK

发送文本消息

AT+QISEND=0,22,this is a test message

OK

SEND OK

发送16进制数据

AT+QISENDEX=0,5,3031323334

OK

SEND OK