在储能系统应用中,通过4g上云是非常基础和常见的应用需求,由于业务和场景的多样性,4g模块也多种多样,本文将详细介绍如何在em储能网关中玩转4g模块。
移植准备1. 硬件选择
本文以em系列中的em-500储能网关作为开发主体,如图1所示,em系列的产品带有pcie扩展槽及其他丰富的接口,pcie扩展槽里面预留usb接口,方便对pcie模块开发使用,使用时只需将4g模块插入pcie槽即可。
图1 em-500储能网关
2. 已适配的产品 目前在em-500已经适配的4g模块有:l610-cn、l610-eu、nl668、ec20、ec200u-cn、ec200a-cn、eg21-g、eg25-g、slm770a、bg95-m3、eg912u-gl。
3. 4g模块调试接口
当我们插入4g模块后会在/dev/生成若干个usb调试接口,设备名字一般为:/dev/ttyusbx(x=0,1,2….x),如果没有则输入lsusb命令查看是否识别到usb设备,如图2调试接口所示,目前插入的4g模块的pid为2c7c,vid为0125,厂家为移远,调试接口有4个。图2 调试接口如果lsusb可以查看到设备时,/dev/没有相应的调试接口时,可以将4g模块的pid vid输入到new_id这节点,输入以下命令(以图2的pid vid为例):
echo 2c7c 0125 ff > /sys/bus/usb-serial/drivers/option1/new_id
成功内核会输出类似以下log:
root@em500:~# echo 2c7c 0125 ff > /sys/bus/usb-serial/drivers/option1/new_id [ 213.905997] option 2-1 gsm modem (1-port) converter detected[ 213.906609] usb 2-1: gsm modem (1-port) converter now attached to ttyusb0[ 213.907126] option 2-1 gsm modem (1-port) converter detected[ 213.909049] usb 2-1: gsm modem (1-port) converter now attached to ttyusb1[ 213.909491] option 2-1 gsm modem (1-port) converter detected[ 213.919056] usb 2-1: gsm modem (1-port) converter now attached to ttyusb2[ 213.924366] option 2-1 gsm modem (1-port) converter detected[ 213.927619] usb 2-1: gsm modem (1-port) converter now attached to ttyusb3
然后在/dev/就可以看到调试接口了,得到调试接口就可以使用microcom或者cat\echo进行4g模块at指令调试,例如输入at指令查看模块固件版本,如下图3 调试演示所示:
图3 调试演示
拨号上网
1. 拨号方式及选择
目前4g拨号方式有ppp拨号、ecm拨号、gobinet拨号、qmi拨号等。在em系列使用的是ecm拨号,ecm拨号通过利用4g网络的高速性能、广阔覆盖范围、低延迟、高带宽支持和移动性等优点,为各种应用场景提供了可靠、快速、稳定的数据连接。这使得设备能够实现高效的数据传输和实时通信,满足不同行业和领域的需求,且不需要移植任何的工具,像ppp、gobinet、qmi这些拨号方式,不同的4g模块厂家都有不同的拨号工具,移植起来比较繁琐。
2. ecm拨号上网ecm上网很简单,只需要使用at指令即可完成,如下演示移远ec20模块在ecm模式下上网:首先切换ecm模式
cat /dev/ttyusb2 &echo -e at+qcfg=\usbnet\,1\r\n > /dev/ttyusb2
切换完成后需要对模块进行复位,输入以下命令:
echo 498 > /sys/class/gpio/exportecho out > /sys/class/gpio/gpio498/directionecho 1 > /sys/class/gpio/gpio498/valueecho 0 > /sys/class/gpio/gpio498/value
复位完成后ifconfig -a可以看到一个网卡,使用dhclient 获取ip后即可上网,如图4 网络通信所示。
图4 调试演示每种模块或者厂家切换到ecm 的at命令是不一样,目前已适配的4g模块的ecm切换命令如图5 ecm切换命令所示。
图5 ecm切换命令有些4g模块是不需要拨号的,当切换到ecm后,重启后则会自动拨号,有些4g模块则需要手动拨号,具体区分如图6 ecm拨号所示。
图6 ecm拨号
手动拨号时需要根据sim卡的运营商来进行切换,切换完后才能进行拨号,对应的at指令如下:
移动:echo -e at+cgdcont=1,\ip\,\cmnet\\r\n > /dev/ttyusb0电信:echo -e at+cgdcont=1,\ip\,\ctnet\\r\n > /dev/ttyusb0联通:echo -e at+cgdcont=1,\ip\,\3gnet\\r\n > /dev/ttyusb0
以下以ec200u-cn作为演示,如图 7 ec200u-cn拨号上网所示。
图7 ec200u-cn拨号上网
设置及问题排查
1. band 号设置
我国对应的band号如图8 band号分布所示:
图8 band号分部
同样是每家厂商对应设置band号是不一样的,以移远的模块(eg912u-gl)为例,输入以下指令可以查看现在开启的band号。
root@em-500:~# cat /dev/ttyusb0 &root@em-500:~# echo -e at+qcfg=\band\\r\n > /dev/ttyusb0+qcfg: band,0xf,0x2000001e20b0f18dfokroot@em-500:~#
其中0x2000001e20b0f18df为目前启用的band号,这里要把0x2000001e20b0f18df换算成二进制,1是打开,0是关闭,第0位是band1,第1位为band2,以此类推,现在eg912u-gl开启的band号有(列举一部分):band1,band2,band3,band4,band5,band7,band8,band12等。输入以下命令可以设置band号,如下关掉band1-band8,设置时不需要带上0x。
root@em-500:~# echo -e at+qcfg=\band\,f,2000001e20b0f1800\r\n > /dev/ttyusb0okroot@em-500:~#
2. 网卡名称问题当切换到ecm后,会生成一些enxxxxxx之类的稀奇古怪的网卡名字,主要原因是被系统的rules给重名命了,如下内核打印可知,一般来说切换到ecm后网卡的名字为usbx(x=0,1,2…x)。
cdc_ether 2-1:1.0 enx024bb3b9ebe5: renamed from usb0
解决方法如下:
修改80-net-setup-link.rules内容,将name=”$env{id_net_name}” 里的id_net_name改成id_net_slot后,重启设备就可以了。
打开80-net-setup-link.rules,如下:
vi /lib/udev/rules.d/80-net-setup-link.rules
图9 修改网卡重命名
3. 网络不通排查当dhclient获取到ip后ping不到百度,提示以下错误:
ping: www.baidu.com: temporary failure in name resolution
可能是dns不对或是模块拨号失败导致ping不出去,具体原因可以先ping 114.114.114.114或者ping 8.8.8.8,如果不能ping通则修改dns,如下:
vi /etc/resolv.conf#注释和添加以下内容:#注释掉:#nameserver 127.0.0.53#options edns0#添加:nameserver 114.114.114.114nameserver 8.8.8.8
然后再ping 百度即可,如果改完还是ping 不通则输入往usb调试接口输入at+csq看下信号,信号太低也可能导致ping不出去,这种情况接上天线多ping几次就行,如图10 ping测试所示:
图10 ping测试如果网络还是不通可以使用以下at指令来排查网络不通的原因:
at+csq:查询信号质量。如果返回值较低,表示信号弱,如果为99代表无信号。at+cereg?:查询eps注册状态。类似于at+creg?,但适用于lte网络。at+cops?:查询可用运营商列表。如果返回值为空或不正确,表示可能存在运营商选择或配置问题。at+cgact?:查询pdp上下文激活状态。如果返回值为0,表示pdp上下文未激活,可能需要重新激活。at+cgpaddr:查询pdp地址。如果返回值为空,表示未获得有效的ip地址,可能是apn或其他数据连接设置问题。at+cgdcont?:查询pdp上下文配置。确保pdp上下文配置正确,包括apn设置等。at+cops=?:查询可用运营商列表。使用此指令可以获取可用的运营商列表,并选择合适的运营商进行注册。at+cimi:查询国际移动用户识别码(imsi)。imsi是sim卡的唯一标识号码,确保sim卡插入正确并且正常工作。at+cpin?:查询pin码状态。与之前提到的一样,用于检查sim卡的pin码状态。at+creg?:查询注册状态。如果返回值为0或2,表示未注册或正在尝试注册,可能是网络连接导致的问题。at+cgatt?:查询附着状态。如果返回值为0,表示未附着到网络,可能需要重新附着。at+cgreg?:查询gprs注册状态。如果返回值为0或2,表示未注册或正在尝试注册,可能是网络连接导致的问题。部分正常情况调试截图如图11 调试截图所示。
图11 调试截图
高通:整个行业都能够用到毫米波 5G
基于STM32单片机的人流量监测系统设计
关于STMicroelectronics 低电压 STSPIN 电机驱动器性能分析和应用
工业现场0-10V输出电路分析
JBL推出首款采用杜比全景声技术环绕版条形音箱 全新无线款JBL BAR 9.1
在EM系列储能网关中玩转4G模块
全加器真值表和半加器真值表详细分析
汽车、工业和测绘应用的3D LiDAR解决方案
国产手机过于追求手机设计,忽视了消费者的“消费转变”
SoC设计的可扩展验证解决方案
网络电视盒子哪个好?本文揭秘性能最强网络电视盒子推荐
新一代高效率移动电源设计
理光FT4015复印机的代码维护
哪个无线充电器适合苹果手机,适合苹果的无线充电器
泛在网感知延伸层的关键技术及IPv6技术在其中的应用及现状分析
基于5G网关的风力发电远程监测方案优势
iPhone8什么时候上市:iPhone8外观确定渲染图曝光!iPhone8参数、硬件、网络、摄像头都知道
基于Select/Poll实现并发服务器(一)
PCB板中的继电器如何选择?需要考虑哪些因素?
什么是强制gpu渲染_强制渲染gpu有什么用