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
4.2.3 APN配置的坑
我踩过最深的坑,是物联网专用卡的APN。普通手机卡用 cmnet 就行,但很多物联网卡有独立的APN,比如 iot.njm2mapn 这种。如果你用默认的 cmnet,模组能注册上网络,但永远激活不了PDP上下文,拿不到IP地址。
所以拿到新卡,第一件事就是问运营商:「这个卡的APN是什么?」别自己猜。
4.3 网络注册流程:从搜网到附着
配置好SIM卡和APN,接下来就是模组和基站之间的「握手」了。整个流程大致分三步:
- 搜网(PLMN选择):模组扫描所有可用频段,找到运营商网络。
- 注册(Location Update):模组向基站发送位置更新请求,基站确认IMSI合法后,分配位置区。
- 附着(Attach):注册成功后,模组发起附着请求,建立默认承载,获得IP地址。
下面这张图,把整个流程串起来了:
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
AT+CSQ 和 AT+CESQ,连续跑24小时。这样能看出信号在一天内的波动情况,判断天线设计是否合理。如果RSRP波动超过20dB,说明天线匹配可能有问题。
4.4.3 信号差怎么办?
如果查出来信号很差(RSRP低于-110 dBm),别急着怪模组。先排查这几项:
- 天线是否接好? 我见过有人把天线接在主地焊盘上,信号当然差。
- 天线位置是否被金属遮挡? 模组放在金属机箱里,信号直接衰减10dB以上。
- 频段是否匹配? 有些模组只支持B1/B3/B5/B8,如果当地基站用B40,模组搜不到。
- 供电是否稳定? 模组发射时电流峰值可达2A,电压跌落会导致发射功率不足。