4. 网络注册与附着:SIM卡基础、APN配置、网络注册流程、信号质量查询

模组上电了,串口也能发AT指令了。然后呢?

你得让它连上基站。这一步,我们叫「网络注册」和「附着」。说白了,就是让模组告诉基站:「我在这儿,我是合法的,我要上网。」

我见过不少新手,卡在这一步好几天。明明发了AT指令,模组就是不回「OK」。其实大部分时候,问题出在SIM卡和APN上。今天咱们就把这块彻底捋清楚。

4.1 SIM卡基础:模组的「身份证」

SIM卡不只是存联系人用的。在蜂窝网络里,它是模组的唯一身份凭证。

4.1.1 SIM卡里存了什么?

一张标准的SIM卡,核心数据就这几样:

数据项 说明 长度
IMSI 国际移动用户识别码。全球唯一,相当于你的「网络身份证号」 15位
ICCID 集成电路卡识别码。印在卡面上的那串数字,物理标识 19-20位
KI 鉴权密钥。用于网络认证,绝对机密,普通指令读不出来 128位
Loci 位置信息。记录上次附着的位置区码,帮助快速注册 11字节
PLMN 首选运营商列表。用户偏好网络 可变
小提示: 调试时最常用的指令是 AT+CCID 和 AT+CIMI。前者读ICCID,后者读IMSI。如果这两个指令返回错误,先检查卡有没有插好,或者卡座有没有虚焊。

4.1.2 SIM卡状态检查

模组上电后,第一步就是初始化SIM卡。我习惯用这个流程来确认卡的状态:

AT+CPIN?          // 查询PIN码状态
+CPIN: READY      // 返回READY表示卡已就绪

AT+CCID           // 读ICCID
+CCID: 89861121230012345678

AT+CIMI           // 读IMSI
+CIMI: 460011234567890
注意: 如果 AT+CPIN? 返回 SIM PIN 或 SIM PUK,说明卡被锁了。需要输入PIN码解锁:AT+CPIN="1234"。但物联网卡一般默认关闭PIN验证,遇到这种情况,多半是卡坏了或者接触不良。

我曾经遇到一个项目,模组在北方冬天死活注册不上。查了半天,发现是SIM卡座在低温下触点氧化,接触电阻变大。换了个镀金卡座,问题解决。嗯,硬件上的坑,有时候比软件还隐蔽。

4.2 APN配置:上网的「门牌号」

APN,全称Access Point Name。你可以把它理解成上网的网关地址。

为什么需要APN?因为运营商需要知道你要访问哪种网络——是公网互联网,还是企业内部专网?不同的APN对应不同的IP分配策略和计费规则。

4.2.1 常见的APN类型

APN 适用场景 IP类型
cmnet 中国移动公网 IPv4/IPv6
cmwap 中国移动WAP网关(已很少用) IPv4
3gnet 中国联通公网 IPv4/IPv6
ctnet 中国电信公网 IPv4/IPv6
自定义APN 企业专网、物联网专用卡 按运营商分配

4.2.2 如何配置APN?

大部分模组出厂默认APN是空的,或者是一个通用值。你需要手动设置。我个人习惯在初始化脚本里加上这几条:

AT+CGDCONT=1,"IP","cmnet"    // 设置APN,PDP类型为IP
// 如果运营商要求用户名密码:
AT+CGDCONT=1,"IP","cmnet","user","pass"

设置完之后,可以用 AT+CGDCONT? 查询确认:

AT+CGDCONT?
+CGDCONT: 1,"IP","cmnet","0.0.0.0",0,0,0
关键点: 这里的「1」是上下文ID(CID)。如果你需要同时使用多个PDP上下文(比如一个走公网,一个走专网),可以设置CID 2、CID 3。但大部分场景下,一个CID就够了。

4.2.3 APN配置的坑

我踩过最深的坑,是物联网专用卡的APN。普通手机卡用 cmnet 就行,但很多物联网卡有独立的APN,比如 iot.njm2mapn 这种。如果你用默认的 cmnet,模组能注册上网络,但永远激活不了PDP上下文,拿不到IP地址。

所以拿到新卡,第一件事就是问运营商:「这个卡的APN是什么?」别自己猜。

4.3 网络注册流程:从搜网到附着

配置好SIM卡和APN,接下来就是模组和基站之间的「握手」了。整个流程大致分三步:

  1. 搜网(PLMN选择):模组扫描所有可用频段,找到运营商网络。
  2. 注册(Location Update):模组向基站发送位置更新请求,基站确认IMSI合法后,分配位置区。
  3. 附着(Attach):注册成功后,模组发起附着请求,建立默认承载,获得IP地址。

下面这张图,把整个流程串起来了:

LTE模组网络注册与附着流程 LTE模组 eNodeB(基站) EPC(核心网) ① 频段扫描 ② Attach Request 转发请求 ③ 鉴权与加密 ④ Attach Accept ⑤ PDP Context Activate 建立承载 ⑥ Activate Accept ⑦ 分配IP地址 注册成功标志 AT+CGREG? → +CGREG: 0,1 (已注册到网络) AT+CGPADDR=1 → 获取到IP地址(如 10.168.1.100)

4.3.1 用AT指令观察注册过程

你不需要抓空口信令,几条AT指令就能看到模组的状态:

// 查询网络注册状态
AT+CGREG?
+CGREG: 0,1      // 0,1 表示已注册到网络

// 查询附着状态
AT+CGATT?
+CGATT: 1        // 1 表示已附着

// 查询分配的IP地址
AT+CGPADDR=1
+CGPADDR: 1,10.168.1.100

+CGREG 返回的第二个参数是关键:

值 含义
0 未注册,模组正在搜网
1 已注册,本地网络
2 未注册,但模组正在尝试搜网
3 注册被拒绝
5 已注册,漫游状态
避坑: 如果一直返回 +CGREG: 0,2,说明模组在反复尝试注册但失败了。常见原因:SIM卡欠费、APN错误、信号太弱、或者基站侧把该IMSI拉黑了。我曾经遇到过运营商把测试卡误封的情况,打客服解封就好了。

4.4 信号质量查询:模组的「眼睛」

注册上了,不代表网络就好用。信号强度直接决定了你的数据传输速率和稳定性。

4.4.1 关键信号指标

LTE模组能报出来的信号参数很多,但日常调试,盯住这三个就够了:

参数 全称 正常范围 说明
RSSI 接收信号强度指示 -90 ~ -50 dBm 信号强度,越大越好(绝对值越小)
RSRP 参考信号接收功率 -120 ~ -80 dBm LTE专用,比RSSI更准确
SNR 信噪比 10 ~ 30 dB 信号质量,越高越好

4.4.2 用AT指令查信号

最常用的指令是 AT+CSQ:

AT+CSQ
+CSQ: 19,99

返回的两个数字:第一个是RSSI等级(0-31),第二个是误码率(99表示未知)。等级换算成dBm的公式:

RSSI(dBm) = -113 + (等级 * 2)
// 等级19 → -113 + 38 = -75 dBm

如果想看更详细的LTE参数,用 AT+CESQ:

AT+CESQ
+CESQ: 19,99,15,0,25,30
// 依次为:RSSI等级, BER, RSRP等级, RSRQ等级, SNR, CQI
我的习惯: 在产品测试阶段,我会写一个脚本每5秒记录一次 AT+CSQ 和 AT+CESQ,连续跑24小时。这样能看出信号在一天内的波动情况,判断天线设计是否合理。如果RSRP波动超过20dB,说明天线匹配可能有问题。

4.4.3 信号差怎么办?

如果查出来信号很差(RSRP低于-110 dBm),别急着怪模组。先排查这几项:

  • 天线是否接好? 我见过有人把天线接在主地焊盘上,信号当然差。
  • 天线位置是否被金属遮挡? 模组放在金属机箱里,信号直接衰减10dB以上。
  • 频段是否匹配? 有些模组只支持B1/B3/B5/B8,如果当地基站用B40,模组搜不到。
  • 供电是否稳定? 模组发射时电流峰值可达2A,电压跌落会导致发射功率不足。
一句话总结: 网络注册和附着,本质上是SIM卡、APN、信号质量三件事。SIM卡是身份,APN是路径,信号是基础。这三样对了,模组90%的问题都解决了。