移远两周实习总结分享和收获

两周入门 EG915U 模组:从 AT 命令到五类业务全打通

一、背景

学习主线是:认识硬件 → 搭环境 → 学 AT 命令 → 看信令 → 跑业务

二、开发环境

调试工具:QCOM / Qnavigator(AT 命令交互 + ini 脚本批量下发,强烈推荐)
日志工具:Coolwatcher(AP Log)、ArmTracer(CP Log)、Notepad++(打开 .trc 直接搜 receive at|urc|atresp)
小工具:Unicode.exe(UCS2 编码转换,发中文短信必备)

三、五大业务实战

  1. 网络注册(入网是地基)

模组开机第一件事:注册到运营商网络。信令上就是走 Attach 流程:读小区广播(MIB/SIB)→ Attach Request → 鉴权 → 安全模式 → PDN 连接 → Attach Accept。成功后网络分配 IP + 激活 QCI=9 默认承载。

验证入网,我习惯按这个顺序查:

AT+CPIN? → +CPIN: READY // SIM 就绪
AT+CEREG? → +CEREG: 0,1 // 4G 已注册
AT+CSQ → +CSQ: 21,99 // 信号良好
AT+COPS? → +COPS: 0,0,“CHINA UNICOM”,7
AT+QNWINFO → 制式/频段/信道
AT+QENG=“SERVINGCELL” → 服务小区详情

  1. 短信(物联网最稳的轻量通信)

短信和微信最大的区别:存储转发。消息始终经过短信中心(SMSC)中转,接收方离线就先存着,上线再投递。不依赖数据网络,有基站信令就能收发,这对电池供电的 IoT 设备太友好了。

LTE 下短信有 3 种承载:CS(2G/3G)→ SGs(4G 过渡)→ IMS(最终方案,SIP MESSAGE)。终端会优先 IMS,注册不上回落 SGs。

编码是最大的坑:一条短信固定 140 字节——
英文 GSM 7bit:最多 160 字符
中文 UCS2:最多 70 字符(超出要分片,靠 UDH 头拼接)

发一条中文短信的完整姿势:

AT+CMGF=1 // TEXT 模式
AT+CSCS=“UCS2” // 字符集 UCS2
AT+CSMP=17,167,0,8 // DCS=8 → UCS2 编码
AT+CMGS=“10086” // 发送

4F60597D… // 内容转 Unicode 十六进制,Ctrl+Z 结束
+CMGS: 29 OK // 成功

接收:URC +CMTI: “SM”,3 通知 → AT+CMGR=3 读取。

血泪经验:AT+CSCS=“GSM” 下发中文必乱码!必须 UCS2 + 内容转码,三个条件缺一不可。

  1. 语音(VoLTE / CSFB)

LTE 下语音两条主流路线:
VoLTE:基于 IMS,AMR-WB 高清语音,呼叫建立 <1s,通话时数据可并发(体验完胜)
CSFB:没有 IMS 覆盖时回落到 2G/3G CS 域通话,挂断自动回 LTE

VoLTE 主叫信令链:INVITE → 183 → UPDATE → 180 → 200 OK → ACK → BYE,承载上 QCI=1 语音 + QCI=5 信令。

AT 命令很简单:

ATD17756082303; // 主叫(注意分号结尾)
ATA // 被叫接听
ATH // 挂断
AT+CLCC // 查通话状态
AT^DSCI=1 // 通话 URC(2创建/3连接/7响铃/8挂断)
AT+CLIP=1 // 来电显示

  1. TCP/UDP 数据业务

数据通道建立四步法:

AT+QICSGP=1,1,“UNINET”,“”,“”,1 // ① 配置 PDP(APN)
AT+QIACT=1 // ② 激活上下文
AT+QIACT? → +QIACT: 1,1,1,“10.7.157.1” // 拿到 IP
AT+QIOPEN=1,1,“TCP”,“服务器IP”,端口,0, // ③ 开 Socket
AT+QISEND / AT+QIRD // ④ 收发数据

重点说下三种数据访问模式的选型:

模式:Buffer 缓存
特点:指令与数据共存,方便异常检测
适用:有查询/检测需求(推荐)

模式:Push 直吐
特点:数据直接串口输出,响应快
适用:实时性要求高

模式:Transparent 透传
特点:效率最高,但期间发不了 AT 命令
适用:纯数据转发

透传的坑:进透传后想查注网状态?发不了命令!必须先 +++ 退出。所以我建议:有状态查询/异常检测需求的场景,优先选非透传。

模组还能当 TCP Server:AT+QIOPEN=1,1,“tcp listener”,“127.0.0.1”,0,2020,收到数据有 +QIURC: “recv” 通知,实测和 ConnectLab 平台联调全通。

  1. SSL 安全
  2. IoT 设备上云,加密是底线。SSL/TLS 三种认证级别:
    无认证:仅加密,不验身份
    单向认证:客户端校验服务器(需 CA 证书)——最常见的云平台场景
    双向认证:互验证书,还需客户端证书+私钥,安全等级最高

双向认证五步法:

AT+QSSLCFG=“sslversion”,1,4 // ① SSL 版本
AT+QSSLCFG=“ciphersuite”,1,0xFFFF // 加密套件
AT+QSSLCFG=“seclevel”,1,2 // 安全级别=双向
AT+QFUPL=“cacert.pem”,1326 // ② 上传 CA/客户端证书/私钥
AT+QSSLCFG=“cacert”,1,“cacert.pem” // ③ 绑定证书
AT+QSSLOPEN=1,1,4,“服务器IP”,端口 // ④ 建立 SSL 连接
AT+QSSLSEND=4 // ⑤ 加密发送(SEND OK)
AT+QSSLRECV=4 // 加密接收

实测:证书上传 +QFUPL: 1692,170 OK,双向认证握手通过,加密收发闭环,整套能力可直接复用到 MQTT over TLS 上云场景。

四、踩坑经验汇总

  1. 中文短信乱码 → CSCS 必须 “UCS2” + CSMP DCS=8 + 内容转十六进制,三件套缺一不可;
  2. 透传模式"失联" → 透传中无法发 AT 命令,要查询状态先退出;
  3. 抓错日志口 → AP/CP 口别搞混,信令分析必须看 CP Log;
  4. 排查方法论 → 我总结为"由简到繁、由外到内":先查注网/信号/SIM 基础条件 → 再查业务配置 → 最后才看信令日志(AT 返回码 + URC + AP/CP Log 三层定位);
  5. 长短信变多条 → UDH 拼接失败,检查参考号/总段数/段号是否一致。

五、两周心得

从"照着发命令"到"理解业务机制":知道短信为什么有时走 IMS、有时走 SGs,VoLTE 信令链怎么串,Attach 到底做了什么——这是两周最大的转变;
脚本化测试:把可复用的命令流固化成 ini 脚本,测试可重复、可追溯,强烈推荐;
文档体系:AT 命令手册 + 应用指导 + 实测验证的闭环学习方式,遇到问题先查手册再动手。

帮顶. :100: :100: :100: