NB-IoT 移远 BC28 TE-B 模块网络接入测试

混江龙づ霸主 提交于 2020-01-27 00:57:41

产品概述

BC28 是一款超紧凑、高性能、低功耗的多频段 NB-IoT 无线通信模块,支持 B1/B3/B8/B5/B20/B28 频段。其尺寸仅为17.7mm×15.8mm ×2.0mm,能最大限度地满足终端设备对小尺寸模块产品的需求,同时有效地帮助客户减小产品尺寸并优化产品成本。BC28 在设计上兼容移远通信 GSM/GPRS 系列的 M26 模块,方便客户快速、灵活的进行产品设计和升级。

BC28 采用更易于焊接的 LCC 封装,可通过标准 SMT 设备实现模块的快速生产,为客户提供可靠的连接方式,特别适合自动化、大规模、低成本的现代化生产方式。SMT 贴片技术也使 BC28 具有高可靠性,以满足复杂环境下的应用需求。

凭借紧凑的尺寸、超低功耗和超宽工作温度范围,BC28 成为 IoT 应用领域的理想选择,常被用于无线抄表、共享单车、智能停车、智慧城市、安防、资产追踪、智能家电、农业和环境监测以及其它诸多行业,以提供完善的短信和数据传输服务。

在这里插入图片描述

上手测试

Step1. 插入物联网卡,上电启动

在这里插入图片描述

Step2. 查看并打开串口

使用 USB 线连接 PC 和 BC28 TE-B 开发板,注意此时开发板上的串口开关在 MAIN UART TO USB 一侧。打开 PC 的 设备管理器,查看对应串口号,比如主串口(Ch A)对应 COM6,调试串口(Ch B)对应 COM7。

在这里插入图片描述

打开 QCOM 串口调试助手,选择主串口对应的串口号(COM6),波特率选择 9600,数据位 8 位,停止位 1 位,无校验位,无流控。点击“Open Port”打开串口,提示“Open COM Port Success”表示串口打开成功。

QCOM 串口调试助手是经典的 AT 指令调试和 NB-IoT 开发工具,支持多条 AT 指令的保存,多个命令待发送区域,每个都可以单独设置延时,使 2G、NB-IoT 模块开发更容易。

Step3. AT 命令测试

因为 AT 命令以 <CR><LF> 回车换行符作为结束标志,因此需要勾选操作栏的“Send With Enter”复选框,这样在发送 AT 命令时会在末尾添加 \r\n 回车换行符。

  • 输入命令 AT,点击“Send Command”发送命令,此时会收到 NB 模组回复的“OK”。

  • 为了方便调试,通过发送 ATE1 命令打开回显,相反地,发送 ATE0 命令可以关闭回显。

  • 发送命令 ATI 查看固件版本信息,如下:

    Quectel
    BC28
    Revision: BC28JDR01A02_ONT
    
    OK
    
  • 发送命令 AT+CMEE=1 开启 UE 错误报告,开启后,后面发送的命令如果出错,就会返回 +CME ERROR:<err> 格式的错误代码(具体的错误码请参照对应的 AT 命令手册)。

Step4. 注网(UE 附着)

ATI                              # 查询产品标识信息
AT+NCONFIG=AUTOCONNECT,FALSE     # 关闭自动找网
AT+NRB                           # 重启
AT+CGSN=1                        # 查询IMEI号
AT+NBAND=8                       # 使用移动的频段
AT+QLEDMODE=1                    # 打开模块的调试灯
AT+CFUN=1                        # 开启射频功能
AT+NSONMI=2                      # 接收到TCP数据时,自动上报
AT+CEDRXS=0,5                    # 关闭eDRX
AT+CPSMS=0                       # 关闭PSM
AT+CIMI                          # 查询卡的国际识别码,用于确认SIM卡插入正常
AT+CGATT=1                       # 附着网络
AT+CGATT?                        # 查询是否附着成功
AT+CSQ                           # 查看信号强度

AT 命令执行情况:

在这里插入图片描述

Step5. TCP 连接与数据收发

AT+NSOCR=STREAM,6,5566,1         # 创建socket(TCP协议,端口5566,且接收传输消息)
AT+NSOCO=2,120.78.197.79,9955    # 使用上面创建的socket(2)连接服务器(IP+端口)
AT+NSOSD=2,4,01020304            # 往服务器发送4个字节数据(用十六进制表示)
AT+NSORF=2,4                     # 读取4个字节数据(由于前面开启了自动接收数据,故不执行该命令也会接收并上报)
AT+NSOCL=2                       # 关闭socket

BC28 TE-B 模块 AT 命令执行情况:

在这里插入图片描述

服务器上运行的 TCP Server 程序如下:

"""
 TCP server
"""

import socket
import time

def main():
    # 1. 创建 tcp 套接字
    tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 2. 绑定本地信息
    tcp_server.bind(('', 9955))

    # 3. 让默认的套接字由主动变为被动 listen
    tcp_server.listen(128)
    print("wait...")

    # 4. 等待客户端的连接
    client_socket, client_addr = tcp_server.accept()
    print("accept one")

    # 5. 接收发送的数据
    recv_data = client_socket.recv(1024)
    #print(recv_data.decode('gbk'))
    #print(recv_data.decode('utf-8'))
    print(recv_data)

    time.sleep(10)

    # 6. 回送一部分数据给客户端
    #client_socket.send('收到了'.encode('gbk'))
    client_socket.send(recv_data)

    time.sleep(10)

    # 7. 关闭套接字
    client_socket.close()
    tcp_server.close()
    print("close")


if __name__ == '__main__':
    main()

服务端执行情况:

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!