
産業用自動化の分野では、産業用機器の多くのメーカーがコントローラーを個別に製造し、モデムを個別に製造するという暗黙のパラダイムがあります。原則として、各デバイスは独自のケースに配置され、独自の電源、大きな寸法、および高コストを備えています。このバージョンの機能分離には長所と短所がありますが、私たちの意見では、いくつかの客観的な理由よりもむしろ、より大きな商業化につながります。そのため、少し異なる道をたどり、ユニバーサルデバイスを作成しました。これは、1つのケースにモデムを備えた自由にプログラム可能なLinuxベースのコントローラーです。これにより、私たちのプロジェクトでは、通常の自動化パネルを実質的に完全に放棄し、より多くのモバイルソリューションを利用できるようになりました。
この記事のカットの下で、モデムのセットアップの複雑さと、より安定した3G接続のためのいくつかの便利なスクリプトを紹介します。
前提条件とソリューション
デバイスを開発するとき、クラウドプラットフォームに接続するには、モバイルインターネットに接続する必要があるという事実に導かれました。モデムをボードにはんだ付けする方法と、mPCIeコネクタを使用する方法の2つがありました。 2番目のオプションを選択し、一度に2つのmPCIeコネクタを提供しました(図1)。このオプションは、より興味深く、柔軟性があるように思われたためです。結局のところ、モデムのインストールと交換には数秒かかります。さらに、ユーザーには必要な可変性が表示され、特定のプロジェクトに必要なmPCIeモジュールの組み合わせを使用できます。 3Gモデムに加えて、LoraWanまたはWi-Fiモジュールにすることができます。さらに、mPCIeソリューションは、非常に信頼性が高く、高品質であることが証明されています。

図1-mPCIeコネクタ
デバイスのメイン3Gモジュールとして次のオプションを検討しました。
- MikroTik R11e-LTE6
- Quectel EC25-E
- YUGA CLM920 TE5
- HUAWEI MU709s-2p
しかし、テストの結果、信頼性と価格と品質の比率の点で、HUAWEIモデムが最も好ましいことがわかりました(図2)。私たちはそれを基礎として、オプションでデバイスにインストールしました。したがって、将来的には、このモデルの相対モデムの構成とスクリプトを検討します。おそらく、このスクリプトは普遍的で他のモデムに役立つでしょうが、他のモデルとの安定性は保証されていません。RasbianBusterとHUAWEIMU709s-2pの場合、すべてが正常に機能します。

図2-デバイスボードに取り付けられたHUAWEIMU709s-2pモデム
スクリプトを使用して3Gモデムを再起動する
より安定したトラブルのない操作のために、指定されたIPアドレスにpingを実行するスクリプトを作成しました。設定で指定されたpingの数に達しない場合、GSMモデムが再起動し、ハングしたネットワーク接続が復元されます。モデムはシステムでlan1ネットワークカードとして定義されていることに注意してください。
必要なすべてのファイルを含むアーカイブは、このリンクからダウンロードできます。また、スクリプト自体のテキストを以下に示します。
インターネット接続を確認するには、check_inet.shファイルが必要です。指定された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
スクリプトは、デバイスの再起動後にも自動的に起動されます。
デバイスのアプリケーション
デバイスを使用できる主なタスクについて考えてみましょう。
- クラウドへのデータ転送のためのインターネットアクセスを備えたコントローラー。
- フィールドタスク用の3Gルーター。
- 冗長3Gチャネルを備えたスマートホームコントローラー。つまり、LANポートをメインの通信チャネルとして使用し、3Gをバックアップとして使用できるため、常にデバイスにアクセスできます。
- LoRaWANベースステーション。つまり、LoRaWANを介してデバイスをポーリングし、3GまたはLTEを介してデータをクラウドに転送します。
- 車両監視装置(CAN接続およびさまざまなサービスとのドッキング)
実際、そのようなデバイスには多くのアプリケーションが存在する可能性があり、その完全性、汎用性、および機動性は間違いなく利点です。1つのデバイスで、使い慣れた自動化キャビネットを置き換え、プロジェクトでかけがえのないソリューションになることができます。