19. 使用4G模块

您所在的位置:网站首页 灯的使用说明与什么有关 19. 使用4G模块

19. 使用4G模块

2024-07-12 13:59| 来源: 网络整理| 查看: 265

19. 使用4G模块¶

平台:野火stm32mp157开发板

系统:Debian

需要使用野火4G模块

19.1. 野火4G模块¶

野火EC20 4G模块是由EC20 Pcie接口模组加一个USB转接板构成,可方便插接到带有USB接口的Linux主板上。 EC20型号众多,我们选用的型号是CEHCLG,全网通,7模,纯数据、单天线版本。

EC20_4G_module001.png¶

EC20是移远的一款4G模组,有Mini PCle和LCC两种封装,与处理器通信的协议为USB。 即你们在市面上看到的那些通过板载的PCle接口与EC20连接的开发板, 他们通信时也是通过USB通信,并不是一些初学用户说的通过PCle通信, PCle只是一种封装而已,最终通信都是通过USB。

EC20_4G_module002.png¶

EC20_4G_module003.png¶

19.2. 野火开发板使用4G模块¶

野火开发板出厂固件已经支持4G模块的,所以在收到开发板后可以直接使用, stm32mp157开发板使用4G模块有两种连接方式,首先将4G的电话卡插到4G模块的卡槽上, 这张电话卡必须是可以上网的, 然后接上IPX天线(4G模块在发货的时候就已经接好天线的了),通过USB接口连接到开发板上。

另外一种则是将EC20模块单独拆下来,将4G卡插到板子的卡槽上,如下图所示

EC20_4G_module004.jpg¶

EC20_4G_module005.jpg¶

在刚插入模式时需要等待几秒,可以看到4G模块旁边的LED灯在闪烁, 在终端可通过 ls /dev/ttyUSB* 设备的变化确定4G模块是否已被板子识别。

#未插入4G模块之前 root@npi:~# ls /dev/ttyUSB* ls: cannot access '/dev/ttyUSB*': No such file or directory #识别4G模块后 root@npi:~# ls /dev/ttyUSB* /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3 /dev/ttyUSB4

可以在终端输入dmesg命令, 能看到以下内容,就代表模块启动成功:

dmesg ··· [ 7045.607736] usbcore: registered new interface driver usbserial_generic [ 7045.614387] usbserial: USB Serial support registered for generic [ 7045.687710] usbcore: registered new interface driver option [ 7045.697962] usbserial: USB Serial support registered for GSM modem (1-port) [ 7045.706058] option 1-1.1:1.0: GSM modem (1-port) converter detected [ 7045.719742] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB0 [ 7045.732624] option 1-1.1:1.1: GSM modem (1-port) converter detected [ 7045.745153] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB1 [ 7045.758280] option 1-1.1:1.2: GSM modem (1-port) converter detected [ 7045.771023] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB2 [ 7045.779959] option 1-1.1:1.3: GSM modem (1-port) converter detected [ 7045.795461] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB3 19.3. 更新¶

为了确保我们的软件包版本是最新版本,让我们使用apt命令更新本地apt包索引和升级系统:

sudo apt update 19.4. 安装必要的依赖¶

首先安装ppp拨号相关的依赖,安装过程中出现任何输入的内容,直接按 回车 即可:

sudo apt install ipppd

安装野火提供的4g模块拨号脚本,在安装完成后在 /home/debian 目录下出现 peripheral 文件夹:

sudo apt install peripheral 19.5. 拨号上网¶

模块想要上网则需要拨号,进入 ~/peripheral/ec20-4g 目录下,可以看到该目录存在以下文件(部分):

ec20_options

ec20_ppp_dialer

ppp-on.sh

ppp-on.sh就是拨号脚本,直接运行它可以进行拨号,ec20_options是拨号的配置文件, 而ec20_ppp_dialer则是拨号的一些指令。

三个文件的内容如下:

ec20_options文件内容如下

ec20_options¶ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 /dev/ttyUSB2 115200 crtscts modem persist lock noauth noipdefault debug nodetach user Anyname password Anypassword ipcp-accept-local ipcp-accept-remote #replacedefaultroute defaultroute usepeerdns noccp nobsdcomp novj #Dump

ec20_ppp_dialer文件内容如下

ec20_ppp_dialer¶ 1 2 3 4 5 6 7 8 9 10 11 12 ABORT "NO CARRIER" ABORT "ERROR" TIMEOUT 120 "" ATE SAY "ATE" ECHO ON OK ATH OK ATP OK AT+CGDCONT=1,\"IP\",\"CMNET\" #OK AT+ZSNT=0,0,0 OK ATD*98*1# CONNECT

ppp-on.sh文件内容如下

ppp-on.sh¶ 1 2 3 4 5 6 #!/bin/sh #clear #ppp-on.sh OPTION_FILE="ec20_options" DIALER_SCRIPT="ec20_ppp_dialer" pppd file $OPTION_FILE connect '/usr/sbin/chat -v -f ec20_ppp_dialer' &

那么我们直接运行ppp-on.sh即可,注意:需要sudo权限运行。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 sudo ./ppp-on.sh Removed stale lock on ttyUSB2 (pid 4125) ➜ ec20-4g ATE +CMTI: "ME",2 +CMTI: "ME",3 +CMTI: "ME",4 ATE OK ATH OK ATP OK AT+CGDCONT=1,"IP","CMNET" OK ATD*98*1# CONNECT Script /usr/sbin/chat -v -f ec20_ppp_dialer finished (pid 5776), status = 0x0 Serial connection established. using channel 9 Using interface ppp0 Connect: ppp0 /dev/ttyUSB2 sent [LCP ConfReq id=0x1 ] rcvd [LCP ConfReq id=0x0 ] sent [LCP ConfAck id=0x0 ] rcvd [LCP ConfAck id=0x1 ] sent [LCP EchoReq id=0x0 magic=0x64c762f8] rcvd [LCP DiscReq id=0x1 magic=0xa326b19] rcvd [CHAP Challenge id=0x1 , name = "UMTS_CHAP_SRVR"] sent [CHAP Response id=0x1 , name = "Anyname"] rcvd [LCP EchoRep id=0x0 magic=0xa326b19 64 c7 62 f8] rcvd [CHAP Success id=0x1 ""] CHAP authentication succeeded CHAP authentication succeeded sent [IPCP ConfReq id=0x1 ] rcvd [IPCP ConfReq id=0x0] sent [IPCP ConfNak id=0x0 ] rcvd [IPCP ConfNak id=0x1 ] sent [IPCP ConfReq id=0x2 ] rcvd [IPCP ConfReq id=0x1] sent [IPCP ConfAck id=0x1] rcvd [IPCP ConfAck id=0x2 ] Could not determine remote IP address: defaulting to 10.64.64.64 not replacing default route to eth1 [192.168.0.1] local IP address 10.17.241.161 remote IP address 10.64.64.64 primary DNS address 202.96.134.33 secondary DNS address 202.96.128.166 Script /etc/ppp/ip-up started (pid 5783) Script /etc/ppp/ip-up finished (pid 5783), status = 0x0

当你看到拨号返回的内容后有IP地址时,就证明拨号成功。

1 2 rcvd [IPCP ConfNak id=0x1 ] sent [IPCP ConfReq id=0x2 ] 19.6. 验证4G网卡¶

一旦拨号成功,可以使用 ifconfig 命令验证4G网卡是否存在,如果成功此时会多出来一个ppp0的网卡, 并且已经获取到IP地址了。可以很明显看到,我们目前有了一个4g模块的网卡ppp0,存在IP地址, 那么说明我们可以使用ppp0进行网络通信:

1 2 3 4 5 6 7 8 9 ifconfig ppp0: flags=4305 mtu 1500 inet 10.17.241.161 netmask 255.255.255.255 destination 10.64.64.64 ppp txqueuelen 3 (Point-to-Point Protocol) RX packets 4 bytes 52 (52.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4 bytes 58 (58.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

然后我们可以验证一下ping功能,是否可以访问互联网(此处以ping baidu.com为示例):

ping baidu.com PING baidu.com (39.156.69.79): 56 data bytes 64 bytes from 39.156.69.79: seq=0 ttl=48 time=60.056 ms 64 bytes from 39.156.69.79: seq=1 ttl=48 time=62.634 ms 64 bytes from 39.156.69.79: seq=2 ttl=48 time=50.397 ms

可能你是接了网线的(假设使用了eth1接口),而默认路由表却不是4G模块,如果想使用网卡上网, 则需要更新路由表,解决办法如下:

route del -net 0.0.0.0 eth1 route add -net 0.0.0.0 ppp0 19.7. 可能出现的问题¶

经过实测,目前的脚本是可以连接到移动、联通、电信的,如果出现一些其他的问题,可以参考以下内容:

APN设置:

1 2 3 移动:at+cgdcont=1,"ip","cmnet" 联通:at+cgdcont=1,"ip","3gnet" 电信:at+cgdcont=1,"ip","ctnet"

拨号:

1 2 移动:*99***1#或*98*1# 联通:*99#电信:#777 19.8. 使用GPS功能(需要4G模块支持GPS功能)¶

野火在售的4G模块有两个版本,一个是带GPS功能的,一个是不带GPS功能的,具体型号与说明如下:

EC20CEHCLG:不带GPS功能的。

EC20CEFILG:带GPS功能的。

EC20_4G_module008.png¶

注意,以下的操作必须是带GPS功能版本的4G模块才能使用,请悉知。更重要的是模块需要使用GPS天线,并且天线需要放置在户外,才能正常接收到卫星信号

本文主要讲解EC20模块的GPS功能的基本使用方法,更多详细的指令操作细节、参数、示例 可参考官网提供的手册:Quectel_EC20_GNSS_AT_Commands_Manual, 可以从野火官方git仓库下载: https://github.com/Embedfire/ebf_gsm_ec20 。

EC20挂载系统成功后,在Windows环境下会有四个/dev/ttyUSBx设备文件, 也就是我们一开始看到的识别成功4G模块的设备信息,其中ttyUSB2用于AT指令收发, ttyUSB1用于GPS NMEA的接收。

主要的指令有以下:

指令

功能

AT+QGPSCFG

用于进行GPS功能的配置

AT+QGPS

启动GPS会话

AT+QGPSEND

结束GPS会话

以上只列举了简单启用EC20模块GPS功能并获取到NMEA数据所需的AT指令说明, 其他功能诸如节能模式、其他定位系统模式、频次控制等操作可通过官网GNSS AT指令手册了解。

实现验证:

从 /dev/ttyUSB1 读取GPS数据,并将其存储到自定义的文件中 ec20_gps_data.txt , 下面这一行命令就是在后台读取 /dev/ttyUSB1 设备的数据并存储到 ec20_gps_data.txt 文件中,

& 表示后台运行。

1 cat /dev/ttyUSB1 > ~/ec20_gps_data.txt &

启动GPS会话

1 echo -e "AT+QGPS=1\r\n" > /dev/ttyUSB2

在启动的时候,可能不会立即收到所有卫星的信号,可以等待一段时间, 注意,必须使用GPS天线并且放置在户外,户内可能搜不到信号。

查看GPS信息,直接cat这个 ec20_gps_data.txt 文件即可。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 cat ~/ec20_gps_data.txt $GPGSV,5,1,18,03,18,246,29,04,41,313,34,08,29,195,34,09,07,320,23*75 $GPGSV,5,2,18,11,02,194,21,14,28,149,30,21,04,071,30,23,,,23*48 $GPGSV,5,3,18,27,57,170,49,31,34,077,23,32,05,149,29,16,60,336,*7A $GPGSV,5,4,18,18,,,,22,14,222,,26,41,025,,38,,,34*75 $GPGSV,5,5,18,41,,,34,50,,,48*7B $GPGGA,011113.00,2253.723057,N,11350.704943,E,1,07,0.6,46.6,M,-2.0,M,,*4C $GPVTG,296.2,T,298.5,M,0.0,N,0.0,K,A*2A $GPRMC,011113.00,A,2253.723057,N,11350.704943,E,0.0,296.2,040520,2.4,W,A*27 $GPGSA,A,2,03,04,08,14,22,27,32,,,,,,0.9,0.6,0.7*35

当数据正常以后,可以关闭GPS会话

1 echo -e "AT+QGPSEND\r\n" > /dev/ttyUSB2

结束从ttyUSB1读取数据的后台进程

1 ps -aux | grep ttyUSB1 | awk '{print $2}' | sudo xargs kill -9

使用野火多功能调试助手查看GPS数据信息,首先将数据复制到Windows平台下, 放入一个txt文件,比如我就放在桌面的log.txt文件中,然后打开野火多功能调试助手, 选择GPS定位功能->解码GPS日志文件->选择你的GPS数据文件,注意,这个GPS数据不要太多, 因为定位信息的数据本来就是差不多的,只需要几组即可,否则软件可能卡死。

EC20_4G_module009.png¶

得到的位置信息如下(地图可以放大缩小):

EC20_4G_module010.png¶

19.9. 获取GPS数据的同时使用4G上网¶

由于所有的数据指令都是通过 ttyUSB2 去控制的,如果你先进行4G拨号上网后, 这个 ttyUSB2 就已经被占用了,无法通过命令去设置企业GPS功能, 那么必须按以下步骤才能获取GPS数据的同时使用4G上网。

启动GPS会话。

进行ppp拨号上网。

关闭ppp拨号上网。

关闭GPS会话。

测试:

启动GPS会话。

echo -e "AT+QGPS=1\r\n" > /dev/ttyUSB2

查看GPS信息是否正常。

cat /dev/ttyUSB1

进入 ~/peripheral/ec20-4g 目录下,进行ppp拨号上网。

sudo ./ppp-on.sh

查看IP信息是否正常,并且 ping 一下 baidu.com , 如果都能成功表示此时可以通过4G模块上网了。

ifconfig ping baidu.com -I ppp0

关闭ppp拨号上网,可以在关闭后再看看IP信息,下面这句命令返回什么信息都不用管。

ps -aux | grep ppp | awk '{print $2}' | sudo xargs kill -9

关闭GPS会话。

echo -e "AT+QGPSEND\r\n" > /dev/ttyUSB2

按着以上的步骤操作即可在获取GPS数据的同时使用4G上网。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3