4、LTE网络接入:4G/5G模块选型与拨号实战
好,咱们进入第四章。这一章要解决一个很实际的问题——设备怎么通过蜂窝网络连上互联网。
你想想看,WiFi虽然方便,但出了门就没了。而LTE(4G/5G)覆盖广、移动性强,是物联网设备在户外场景下的主力通信手段。我这些年做过的项目,从共享单车到远程监控,几乎都离不开这个环节。
这一章,咱们就聊聊4G/5G模块怎么选、怎么配、怎么拨号上网。
4.1 模块选型:EC20 vs SIM7600
市面上主流的4G模块,我个人用得最多的就是移远的EC20和芯讯通的SIM7600系列。这两款都是经典款,但侧重点不太一样。
| 对比项 | EC20(移远) | SIM7600(芯讯通) |
|---|---|---|
| 网络制式 | LTE Cat 4,向下兼容3G/2G | LTE Cat 4/Cat 1,部分型号支持5G |
| 接口 | Mini PCIe / LCC封装 | Mini PCIe / LGA封装 |
| 拨号方式 | PPP / ECM / RNDIS | PPP / ECM / RNDIS |
| AT指令兼容性 | 标准3GPP + 移远扩展 | 标准3GPP + 芯讯通扩展 |
| 功耗 | 较低(适合电池供电) | 中等(适合车载/固定设备) |
| 价格 | 中等 | 略低 |
| 生态成熟度 | 极高,文档丰富 | 高,社区活跃 |
4.2 AT指令集:与模块对话的基础
模块选好了,怎么跟它沟通?靠AT指令。说白了,AT指令就是一套文本命令,你通过串口发过去,模块给你回响应。
我刚开始接触时也觉得指令多,但其实常用的就那么几条。咱们先看最核心的:
AT // 测试连接,返回OK
AT+CPIN? // 查询SIM卡状态
AT+CSQ // 查询信号强度
AT+CREG? // 查询网络注册状态
AT+CGATT? // 查询GPRS附着状态
AT+CGPADDR=1 // 查询PDP地址(IP)
AT+CGDCONT=1,"IP","CMNET" // 设置APN(中国移动)
这里有个小技巧:很多模块支持用AT+QCFG或AT+CGDCONT来配置PDP上下文。不同运营商的APN不一样,移动是CMNET,联通是3GNET,电信是CTNET。记得提前确认好。
4.3 PPP拨号:传统但可靠的方式
PPP(点对点协议)是早期物联网设备最常用的拨号方式。它的原理很简单:模块通过串口和主机通信,PPP协议在串口上建立网络连接。
在Linux系统上,PPP拨号通常用pppd守护进程。我习惯写一个脚本,把AT指令和pppd参数封装好:
#!/bin/bash
# ppp拨号脚本示例(EC20模块)
# 第一步:初始化模块
echo "AT+CFUN=1" > /dev/ttyUSB2
sleep 1
# 第二步:设置APN
echo "AT+CGDCONT=1,\"IP\",\"CMNET\"" > /dev/ttyUSB2
sleep 1
# 第三步:启动pppd
pppd call ec20-ppp &
# pppd配置文件 /etc/ppp/peers/ec20-ppp
# /dev/ttyUSB2 115200
# connect "chat -v -f /etc/ppp/chatscripts/ec20.chat"
# noauth
# defaultroute
# usepeerdns
PPP拨号的优点是兼容性好,几乎任何Linux系统都支持。但缺点也很明显——速度慢(受限于串口波特率),而且CPU开销大。所以现在越来越多的方案转向了RNDIS/ECM。
4.4 RNDIS/ECM模式:现代高速方案
RNDIS(Remote Network Driver Interface Specification)和ECM(Ethernet Control Model)都是把4G模块模拟成网卡。模块通过USB连接到主机,主机识别为一个虚拟网卡,直接获得IP地址。
说白了,就是模块变成了一个USB上网卡。你不需要PPP协议栈,不需要串口拨号,直接ifconfig就能看到网络接口。
| 模式 | 适用平台 | 特点 |
|---|---|---|
| RNDIS | Windows / Linux(需驱动) | 微软定义,Windows原生支持 |
| ECM | Linux / macOS | USB-IF标准,Linux内核原生支持 |
| NCM | Linux / Android | ECM的改进版,更高吞吐 |
我个人的经验是:在Linux嵌入式设备上,优先用ECM模式。因为Linux内核自带cdc_ether驱动,插上就能识别。RNDIS在Linux上需要额外安装驱动(比如usbnet),稍微麻烦一点。
切换模式的AT指令也很简单:
// EC20切换到ECM模式
AT+QCFG="usbnet",1
// SIM7600切换到RNDIS模式
AT+CUSBPIDSWITCH=1,1,1,1
// 重启模块生效
AT+CFUN=1,1
dmesg | tail查看新设备是否被识别。如果出现"cdc_ether"或"rndis_host"字样,说明成功了。
4.5 知识体系总览
为了让你更直观地理解整个LTE接入流程,我画了一张图:
4.6 实战要点总结
最后,我把这一章的核心要点列出来,方便你以后回顾:
- 模块选型: EC20适合低功耗场景,SIM7600适合成本敏感或5G需求场景。
- AT指令: 先查SIM卡状态(AT+CPIN?),再查信号(AT+CSQ),最后配置APN(AT+CGDCONT)。
- PPP拨号: 兼容性好但速度慢,适合串口通信的老设备。
- RNDIS/ECM: 现代方案,速度快,Linux推荐ECM模式。
- 调试技巧: 用dmesg看USB枚举,用ifconfig看网络接口,用ping测试连通性。
嗯,这一章的内容就到这里。LTE接入是物联网设备联网的基石,选对模块、配好AT指令、选对拨号方式,后面的事情就顺了。