产品概述
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()
服务端执行情况:
来源:CSDN
作者:阿基米东
链接:https://blog.csdn.net/luckydarcy/article/details/103997938