
在工业自动化领域中,存在着一种不言而喻的范例,其中许多工业设备制造商分别制造控制器和调制解调器。通常,每个设备都放置在自己的外壳中,具有自己的电源,尺寸大且成本高。功能分离的这种变体有其优点和缺点,但是,在我们看来,与某些客观原因相比,它导致了更大的商业化。因此,我们决定采取略有不同的方法,并制造出一种通用设备,它是一种可自由编程的基于Linux的控制器,在单个情况下带有调制解调器。这使我们在项目中几乎完全放弃了常规的自动化面板,而采用了更多的移动解决方案。
在本文的剪裁下,我们将与您分享设置调制解调器的复杂性和一些有用的脚本,以实现更稳定的3G连接。
先决条件和解决方案
在开发设备时,我们必须遵循以下事实:设备必须连接到移动互联网才能连接到云平台。有两种方法:将调制解调器焊接到板上,或使用mPCIe连接器。我们选择了第二个选项,并一次提供了两个mPCIe连接器(图1),因为在我们看来,这个选项更加有趣和灵活。毕竟,调制解调器的安装和更换仅需几秒钟的时间,此外,用户还可以看到必要的可变性,因此他可以使用特定项目所需的mPCIe模块组合。除3G调制解调器外,它还可以是LoraWan或Wi-Fi模块。另外,mPCIe解决方案已被证明是非常可靠和高质量的。
图1-mPCIe连接器
我们认为以下选项是我们设备的主要3G模块:
- MikroTik R11e-LTE6
- Quectel EC25-E
- 优佳CLM920 TE5
- 华为MU709s-2p
然而,经过测试,就可靠性和价格质量比而言,华为调制解调器对我们来说是最可取的(图2)。我们以此为基础,可以选择将其安装在设备中。因此,将来我们将考虑此模型的相对调制解调器的配置和脚本。也许此脚本对于其他调制解调器将是通用的且有用的,但是,不能保证其他型号的稳定性。对于Rasbian Buster和HUAWEI MU709s-2p,一切正常。
图2-设备板上安装的HUAWEI MU709s-2p调制解调器
使用脚本重启3G调制解调器
为了更稳定和无故障地运行,我们编写了一个脚本来ping指定的IP地址,如果未通过设置中指定的ping数目,则GSM调制解调器将重新启动,从而恢复挂起的网络连接。应当注意,调制解调器在系统中定义为lan1网卡。
可以从此链接下载包含所有必需文件的存档。另外,脚本本身的文本显示如下。
需要check_inet.sh文件来检查Internet连接。如果指定的IP地址未ping通,那么我们将摇晃19脚并重新启动调制解调器。代码如下:
#!/bin/bash
#count=0;
#echo "Start script"
#echo 19 > '/sys/class/gpio/export'
while [ true ]; do
# sleep 30
. /home/pi/igate.conf
#echo $usb_port
#echo 'AT^NDISDUP=1,1,''"'$apn'"''\r\n'
#echo 'AT^NDISDUP=1,1,"internet.mts.ru"\r\n'
flag=0
for ((i = 1; i <= $ping_count; i++)); do
#for i in {1..$ping_count}; do # 5
#ping -I eth1 -c 1 8.8.8.8 > /dev/null || flag=$(($flag+1))
ping -I $interface -c 1 $ping_ip || flag=$(($flag+1))
sleep 1
done
if [ "$flag" -ge "$ping_error" ]; then # 3
#echo " - "
#count=$((count+1))
#echo $count
#
sudo ifconfig eth1 down
echo 19 > '/sys/class/gpio/export'
echo out > '/sys/class/gpio/gpio19/direction'
echo 0 > '/sys/class/gpio/gpio19/value'
sleep 1
echo 1 > '/sys/class/gpio/gpio19/value'
sleep 15
sudo ifconfig eth1 up
sleep 1
#echo -en 'AT^NDISDUP=1,1,"internet.mts.ru"\r\n' > /dev/ttyUSB3
# APN
echo -en 'AT^NDISDUP=1,1,''"'$apn'"''\r\n' > $usb_port
#echo " - "
fi
sleep $timeout
done
设备重启后,Start_inet.sh文件将启动check_inet.sh:
#!/bin/bash
### BEGIN INIT INFO
# Provides: start_inet
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Example initscript
# Description: This service is used to manage a servo
### END INIT INFO
case "$1" in
start)
echo "Starting check_inet"
sudo /home/pi/check_inet.sh > /dev/null 2>&1 &
#/home/pi/check_inet.sh
;;
stop)
echo "Stopping check_inet"
#killall servod
sudo kill -USR1 $(ps ax | grep 'check_inet' | awk '{print $1}')
;;
*)
echo "Usage: /etc/init.d/check_inet start|stop"
exit 1
;;
esac
exit 0
归档文件中还包含igate.conf配置文件配置
顺序:
1.添加一条规则,以匹配调制解调器的COM端口与USB集线器的物理连接。为此,请在以下路径中编辑文件:
sudo nano /etc/udev/rules.d/99-com.rules
2.将以下行添加到文件中:
KERNEL==”ttyUSB*”, KERNELS==”1-1.5:2.4″, SYMLINK+=”GSM”
3.保存规则并重新启动设备。现在,调制解调器的端口将由方便的别名/ dev / GSM确定。
4.从上面的链接下载档案,或者自己创建check_inet.sh,start_inet.sh和igate.conf文件。
5.将check_inet.sh文件复制到该文件夹:
/home/pi/
6.使check_inet.sh可执行:
sudo chmod +x /home/pi/check_inet.sh
7.将start_inet.sh文件复制到该文件夹:
/etc/init.d/
8.使start_inet.sh文件可执行:
sudo chmod +x /etc/init.d/start_inet.sh
9.通过运行以下命令来更新启动配置:
sudo update-rc.d start_inet.sh defaults
10.将igate.conf文件复制到该文件夹:
/home/pi/
11.设置配置文件。以下是带有注释的配置文件:
#ip- . ip-, [ping_error] , GSM-, .
ping_ip=”8.8.8.8″
# APN. -, -.
apn=”internet.mts.ru”
# 3G ( ). . 30 .
timeout=30
# . .
ping_count=5
# . , . [ping_count]. .
ping_error=3
#LAN . , AntexGate [eth1], ifconfig
interface=eth1
#USB . USB , AntexGate [ttyUSB4]
usb_port=”/dev/GSM”
脚本控制
在后台运行check_inet.sh脚本文件:
/etc/init.d/start_inet.sh start
停止check_inet.sh:
/etc/init.d/start_inet.sh stop
重启设备后,脚本也会自动启动。
设备的应用
让我们考虑可以使用该设备的主要任务:
- 具有Internet访问权限的控制器,用于将数据传输到云;
- 用于现场任务的3G路由器;
- 具有冗余3G通道的智能家居控制器。也就是说,您可以将LAN端口用作主要的通信通道,将3G用作备份,以便您始终可以访问该设备。
- LoRaWAN基站,即通过LoRaWAN轮询设备,并通过3G或LTE网络将数据传输到云;
- 车辆监控设备(CAN连接和各种服务的对接)
实际上,此类设备可以有很多应用程序,其无疑的优势是完整性,多功能性和移动性。一台设备可以代替您熟悉的自动化机柜,并成为您项目中不可替代的解决方案。