NB-IoT

来自Jack's Lab
(版本间的差异)
跳转到: 导航, 搜索
(GPIO)
 
第66行: 第66行:
 
* M5311_GPIO0 (Pin 34) --- GPIO19
 
* M5311_GPIO0 (Pin 34) --- GPIO19
 
* M5311_GPIO1 (Pin 35)--- GPIO20
 
* M5311_GPIO1 (Pin 35)--- GPIO20
 +
 +
<br>
  
 
== Tesing ==
 
== Tesing ==

2019年10月15日 (二) 14:52的最后版本

目录

[编辑] 1 Overview

NB-IoT-Freq.png

  • BC95-B20:800MHz,band 20,面向欧洲
  • BC95-B5:850MHz,band 5,面向韩国
  • BC95-B8:900MHz,band8,面向国内

目前国内的运营商,移动联通支持 900,电信支持 850

[编辑] 2 eSIM

现在 esim 主要有两种:

  • 一种是已经写好号的贴片卡
  • 一种是支持空写的 esim

网店不提供贴片卡服务

2*2 的 esim,可以买回来自己焊接


[编辑] 3 OpenCPU

  • M5310-A, 180KB flash, 30KB RAM
  • M5311, 128KB flash, 256KB RAM
    • M5311-LV: Band 3, 5, 8 / 2.1V ~ 3.6V
    • M5311-CM: Band 8 / 3V ~ 3.6V

https://blog.csdn.net/u011943791/article/details/80895563

MT2625 SDK Overview


[编辑] 3.1 切换方法

启动的时候调用 get_factory_mode() 函数:当该函数返回 0 时,任何情况下模组以 OpenCPU 方式运行。 当该函数返回 1 时,需要用户手动切换:

第一次把 OpenCPU 下载到新模组上时,模组会默认以 AT 模式运行,不会启动 OpenCPU 模式,此时用户需要在 UART1 手动执行 AT+ATCLOSE,然后按复位键,模组即启动 OpenCPU 模式,并且以后都会保持 OpenCPU 模式。

要从 OpenCPU 模式切换回 AT 模式,需要 在 OpenCPU 程序里执行 opencpu_at_open() 函数,此时模组会自动重启,并以 AT 模式运行。


[编辑] 3.2 Serial

  • UART0 --- DBG_UART, 115200 8N1, Upload firmware port
  • UART1 --- AT UART, 115200 8N1


[编辑] 3.3 Notes

  • 想要进行软件开关机就用 powerkey 引脚,引脚连到按键上,把配置项修改为两个 false 就可以了,然后写个回调函数处理
  • 文件操作的任务,要把任务栈的大小设置到 5k 以上,有文件系统掉电保存个数据还是挺方便的
  • 消息队列满了之后就会 crash,比如 sleep 时间太长就会导致消息队列满
  • subtask 的数量最多只能10个?!


[编辑] 3.4 GPIO

  • M5311_GPIO0 (Pin 34) --- GPIO19
  • M5311_GPIO1 (Pin 35)--- GPIO20


[编辑] 4 Tesing

eDRX

[编辑] 4.1 入网流程

AT           # 查看模块 AT 是否正常工作
AT+CLPLMN    # 清除驻网记录
+CLPLMN: 0   # 返回 0, 说明已成功清除记

AT+SM=LOCK    # 关闭 deep sleep 模式

AT+CIMI      # 检查 SIM卡是否读卡成功
460040427005170

AT+CESQ      # 查看信号强度
+CESQ: 23,0,255,255,26,47
AT+CEREG?    # EPS network registration status, 确认基站注册状态 0,1 或者 0,5   1-代表本地已注册上, 5-代表漫游已注册
AT+CGATT?    # GPRS/Packet Domain attach or detach。确认 PDP 激活状态,1-代表已激活 0-代表未激活,M5311 自 动入网后自动激活

AT+CGACT?     # Context activation, state = 0:  deactivated; =1: activated
+CGACT:<cid>,<state>

示例:

*ATREADY: 1
+CFUN: 1
+CPIN: READY
+IP: 100.119.194.66

AT

AT+CLPLMN
+CLPLMN: 0

AT+CESQ
+CESQ: 46,0,255,255,28,71

AT+CEREG?
+CEREG: 0,1

AT+CGATT?
+CGATT: 1

AT+CGDCONT?
+CGDCONT: 1,"IP","cmnbiot","100.119.194.66",0,0,0,,,,,,0,,0

AT+CCLK?
+CCLK: 19/05/03,08:25:58+32

确认以上指令都通过后,方可进行(TCP UDP COAP LWM2M MQTT 等)数据业务。 若因外部信号差开机后长时间无法驻网成功(建议 120s),可执行模组关机节省功耗:

  • 软件关机 AT+CPOF
  • AT+CFUN=0 (opencpu 时只能选择此方式)让模组强制进入深度休眠。AT+CFUN? # Phone functionality, 0 最小功能,1 全功能 (Default),4 射频电路关闭,7 disable sim only
  • 硬件关机:PWR_ON/OFF 引脚在高电平状态拉低 8s(t1) 以上并释放,模组关机。关机过程中,模块需要注销网络连接, 注销时间与当前网络状态有关,建议 15s(t2)之后再对模组进行断电重启等操作,以确保关机之前保存重要数据


使用 GRE 长连接或者 MQTT 时必须手动关闭 eDRX 及 PSM:

AT+CEDRXS=0,5               # 关闭 eDRX 功能,一般模组只使用 PSM 功能
AT+CEDRXS?
+CEDRXS: 5,"0000"

AT+CPSMS=0              # disable the use of PSM
AT+CPSMS?
+CPSMS: 0

AT+SM=LOCK_FOREVER   # 关闭深度休眠,此设置断电保持

AT+CPSMS=0  AT+EDRX=0,5,"0011"  是关闭网络的睡眠和EDRX

注意 :打开/关闭 eDRX 和 PSM 及设置相应定时器的值均要在模组成功驻网后才能生效,若模组始终无法驻网则 eDRX 和 PSM 功能无法使用


AT+IPSTART=0,"TCP","182.92.5.106",1213
CONNECT OK

AT+IPSEND=0,0,"THIS IS A NBIOT TCP TEST"
+IPSEND: 0,24

AT*ENGINFO=0
*ENGINFOSC: 3738,2,108,"1248A1C",-73,-8,-65,5,8,"5F12",0,-10


AT+CMRB      # Software reboots the terminal
AT+COLDRB  # Cold reboot the terminal
AT&V      # Display current configuration
ATZ         # Set all current parameters to user defined profile
AT&W     # Store current parameters to user defined profile
AT&F       # Set all current parameters to manufacturer defaults

AT+CIMI                  # 查 SIM 卡的 IMSI
460040427005170
AT+CGSN       # Request product serial number identification (Identical with +GSN) 
19ML111N0035645
AT+CGSN=1             # 查模组 IMEI
+CGSN: 869975030545555
AT+ICCID                # 查 SIM 卡的 ICCID
+ICCID: 898602B4031600005170

AT+GMI         # Request manufacturer identification
CMCC
AT+GSN         # Request TA serial number identification (IMEI)
869975030545555

AT+CSCON?    # Query and generate URC for signaling connection station (CONNECTED or IDLE) 
+CSCON: 0,0
AT+COPS?     # Operator selection
+COPS: 0,2,"46000",9
AT+CEDRXS?    # eDRX setting
+CEDRXS: 5,"0000"
AT+CGDCONT?    # Define PDP context: <cid>,<PDP_type>,<APN>,<PDP_addr>,<d_comp>,<h_comp>...... 
+CGDCONT: 1,"IP","cmnbiot","100.75.165.213",0,0,0,,,,,,0,,0


ATI 查看模块版本:
ATI

CMCC
M5311
M5311-MLVH1S02
M5311-MLVH1S02

AT+CMVER

M5311-MLVH0S01
2.0.2.1903151039_beta
LV190315
AT+QSPCHSC?   # 查看置乱算法返回值
+QSPCHSC: 1   # 返回 1 可以入网,返回 0 的话是入不了网的,需要 AT+QSPCHSC=1 指令设置成 1
AT*CMBAND=?    # list of valid <op_band>s 
*CMBAND: (3,5,8)
AT*CMBAND?     # current bands
*CMBAND: 3,5,8
AT*CMBAND=0    # reset to default. others: 1, 3, 5, 8, 28

TBD:

  AT+CFGRATPRIO=2    # 切换到GSM模式 


[编辑] 4.2 Socket

BC26 only.

AT+QSOC=1,1,1    # Create a socket (IPv4, TCP, IP)
AT+QSOC=1,2,1    # Create a socket (IPv4, UDP, IP)
AT+QSOCON=0,8080,"120.25.26.27"  # Connect to 120.25.26.27:8080
AT+QSOSEND=0,3,123456    # send data 0x12 0x34 0x56  <socket_id>,<data_len>,<data>
AT+QSORF=0,3             # 查看服务器返回的数据,如果没返回数据就多查几次
AT+QSODIS=0              # Disconnect Socket
AT+QSOCL=0               # Close the socket


[编辑] 4.3 HTTP

AT+HTTPCREATE=“http://42.121.157.158:8888/”	#设置HTTP
AT+HTTPHEADER=0,“User-Agent: Unkown\r\nConnection: close\r\n”	#设置协议头
AT+HTTPSEND=0,1,"/dev/data"	#发送post请求
AT+HTTPCLOSE=0	            #关闭HTTP


[编辑] 4.4 MQTT

AT+IPR=9600	      #设置波特率
AT+CMSYSCTRL=0,2	#打开指示灯
AT+CSQ	#信号质量
AT+MQTTCFG=“域名”,1883,“zyNBiot”,120,“75829”,“IIOu0oFUg1guk20ornTK1uzAcnM=”,1	#MQTT配置
AT+MQTTOPEN=1,1,1,1,1,“mywill”,“001bye”	#连接MQTT
AT+MQTTPUB=“device/nb/citc”,1,1,0,0,“hello”	#发布消息


[编辑] 5 PM

[编辑] 5.1 深度休眠

深度休眠时,除 RTC 时钟,硬件外设全断电,最低功耗,约 3uA

AT+SM=LOCK                # 关闭深度休眠
AT+SM=LOCK_FOREVER        # 关闭深度休眠,此设置断电保持
AT+SM=UNLOCK              # 打开 deep sleep
AT+SM=UNLOCK_FOREVER      # 打开 deep sleep,此设置断电保持

AT*SLEEP=1           # 深度休眠时串口打印提示,断电后无效
AT*MATWAKEUP=1       # 退出深度休眠时串口打印提示,断电后无效

只有进入 PSM 状态后,满足如下条件才可进入深度休眠:

  • AT+SM=UNLOCK_FOREVER 使能深度睡眠
  • 断开模组 TCP 连接

模组要想成功进入深度睡眠,则睡眠前 10 秒 MCU 不能向模组发任何 AT 指令


深度睡眠唤醒:

  • 硬件拉低 Power_onoff 唤醒。需拉低 83ms,触发后芯片启动时间为 173ms
  • 硬件拉低 wakeup_in 唤醒。需拉低 53ms,触发后芯片启动时间为 143ms
  • T3412 定时到,自动从 PSM 醒来,此时模组处于在网(ACTIVE)状态,可接收下行数据。此种唤醒方式模组在经过:ACTIVE 时间+T3324 延时后才能再次进入 PSM/深度休眠状态。


硬件唤醒模组方式,模组仍处于 PSM 状态,模组此时不在网,无法接收下行 数据,需MCU主动发送带网络交互的AT指令 (如AT+PING 、AT+MIPLUPDATE), 模组才退出 PSM 状态。


[编辑] 5.2 PSM 状态

  • PSM: 网络协议栈、射频全关,硬件外设未断电,可发 AT
  • PSM≠深度睡眠;只有深度休眠时模组功耗最低,约 3uA


1) 模组进入了 PSM 状态不一定能进深度睡眠,进入 PSM 后再进入深度睡眠必须满足两个条件:① AT+SM=UNLOCK_FOREVER 使能深度睡眠 ② 断开模组 TCP 连接

2) 使用模组 wakeup_in 引脚唤醒深度睡眠后,模组仍处于 PSM 状态,若要退出 PSM 需要 MCU 发送有网络交互(如 AT+PING AT+MIPLUPDATE 等)的指令

AT+CPSMS=0              # disable the use of PSM
AT+CPSMS=1              # enable the use of PSM
AT+CPSMS?
+CPSMS: 1,,,"00100011","00100010"

T3412 = 1h x 3, T3324 = 1min x 2

  • T3412: Requested extended periodic TAU value (GPRS Timer 3 information element)
  • T3324: Requested Active Time value (GPRS Timer 2 information element)
AT+CPSMS=1,,,"T3412","T3324"   
# 使能模组 PSM 功能,并根据需要设置模组 T3324 的值,T3324 和 T3412 值的编码格式参考 GPRS timer 3(AT 文档附录),当前模组端只能设置 T3324 值,其值开卡时已固定,模组端无法修改

AT+CEREG=5    # 确认 PSM 参数是否设置成功
AT+CEREG?
+CEREG: 5,1,"5F12","01248A1C",9,"00",0,0,"00100010","00100011"
# 参考 AT 手册,最后两个参数分别代表 T3324 和 extended periodic TAU value(T3412)

高 3 位为单位,低 5 位为值:

Table 10.5.163a/3GPP TS 24.008: GPRS Timer 3 information element (T3412)

8 7 6
0 0 0 value is incremented in multiples of 10 minutes  
0 0 1 value is incremented in multiples of 1 hour  
0 1 0 value is incremented in multiples of 10 hours 
0 1 1 value is incremented in multiples of 2 seconds 
1 0 0 value is incremented in multiples of 30 seconds 
1 0 1 value is incremented in multiples of 1 minute 
1 1 0 value is incremented in multiples of 320 hours (NOTE) 
1 1 1 value indicates that the timer is deactivated.

NOTE: This timer value unit is only applicable to the T3312 extended value IE and T3412 extended value IE (see 3GPP TS 24.301 [120]). If it is received in an integrity protected message, value shall be interpreted as multiples of 320 hours. Otherwise value shall be interpreted as multiples of 1 hour.

  • e.g. "01000111" equals 70 hours


Table 10.5.172/3GPP TS 24.008: GPRS Timer 1/2 information element (T3324)

Bits 6 to 8 defines the timer value unit for the GPRS timer as follows: 
8 7 6 
0 0 0  value is incremented in multiples of 2 seconds 
0 0 1  value is incremented in multiples of 1 minute  
0 1 0  value is incremented in multiples of decihours 
1 1 1  value indicates that the timer is deactivated.  

Other values shall be interpreted as multiples of 1 minute in this version of the protocol.
  • e.g. "00100100" equals 4 minutes


M5311-T3324-T3412.jpg


当前模组端只能设置 T3324 值,T3412 值开卡时已固定 , 模组端无法修改


10086.NB-IoT.Modes.png



如下命令注销,设备即从 OneNet 下线:

 AT+MIPLCLOSE = 0



[编辑] 5.3 CMDs

AT+CEDRXS=1,5           # 使能 eDRX 功能
AT+CEDRXS?
+CEDRXS: 5,"0101"

AT+CPSMS=1              # enable the use of PSM
AT+SM=UNLOCK_FOREVER    # 使能深度休眠,此设置断电保持


AT*NBIOTRAI          # 配置模组数据业务后,快速进入 IDLE 态达到节省功耗目的
AT+CSCON=1           # 设置模组断开 RRC 连接进入 idle 态自动提示,断电后无效

AT+CMSYSCTRL         # 使能/配置 LED 状态灯:STATE/WAKEUP_OUT,为节省功耗(AT+CMSYSCTRL=1,1,AT+CMSYSCTRL=0,2) 

AT*SLEEP=1           # 模组进入深度休眠时串口打印提示,断电后无效
AT*MATWAKEUP=1       # 模组退出深度休眠时串口打印提示,断电后无效


[编辑] 6 接入onenet

Init M5310:

AT+COPS=1,2,"46000"; #设置手动注册移动运营商MNC
AT+CSCON=1; #打开信号提示自动上报
AT+CEREG=1;   #打开注册信息自动上报

发送完上面三条指令,完成模组的注册入网功能


首先参考官方文档在 onenet 平台建立硬件对应的产品类型

生成注册码,注册码的生成需要使用中移物联提供的 OneNET_config_v1.2.exe。所需参数,如下图所示,其中 host 与 ep_name 较重要,分别指定了要接入 server 的 IP 地址和端口、模组的 IMEI 与 IMSI 号。具体参数的含义可以参考 M5310 AT Command 说明文档

NB-IoT-OneNet-Register.png

$ OneNET_config_v1.2.exe -b 1 -e 0 -d 3 -i "coap://183.230.40.39:5683" -n "865820030015998;460040663105571" -p 0 -t 3000 -u 5 -g 5 -x 1
AT+MIPLCONF=71,10030000B80B00001900636F61703A2F2F3138332E3233302E34302E33393A353638331F003836353832303033303031353939383B343630303430363633313035353731050501,1,1

发送此 AT 命令完成注册码登记


添加 Object 组:

 AT+MIPLADDOBJ=0,3303,0

上述 AT 指令即添加一个 Object 对象,3303 代表温度传感器,由 LWM2M 规范所定

LWM2M-object-temp.png

一个设备会用很多传感器,设备叫通信实例,温度传感器即 Object。设备可以有很多 Object 如湿度、光照、气压等


发起注册请求:

 AT+MIPLOPEN=0,15

上述命令发送成功之后,onenet 平台上会显示设备处于在线状态,硬件与平台连接成功。通过 AT+MIPLNOTIFY 就可以向平台发送数据,具体可参考官方手册。



[编辑] 7 Chips

[编辑] 7.1 展锐

RDA8908, RDA8909, RDA8910


[编辑] 7.2 nRF91


[编辑] 7.3 RoseFinch7100


[编辑] 7.4 Hi2115

Boudica 150

  • SoC, 无需外接 MCU
  • 支持 698-960/1800/2100MHz


[编辑] 7.5 Hi2110

Boudica 120

  • SOC:BB+RF+PMU+AP+Memory
  • 3 ARM Core:AP+CP+SP


[编辑] 7.6 MDM9206


[编辑] 7.7 MTK2625


[编辑] 8 Refernece







个人工具
名字空间

变换
操作
导航
工具箱