Computador integrado AntexGate + modem 3G. Configurações úteis para uma conexão de internet mais estável

imagem


No campo da automação industrial, existe um paradigma implícito no qual muitos fabricantes de equipamentos industriais fazem controladores separadamente e modems separadamente. Via de regra, cada dispositivo é colocado em sua caixa, possui alimentação própria, grandes dimensões e alto custo. Essa versão de separação funcional tem suas vantagens e desvantagens, mas, em nossa opinião, leva, antes, a uma comercialização maior do que por alguns motivos objetivos. Portanto, decidimos seguir um caminho um pouco diferente e fizemos um dispositivo universal , que é um controlador baseado em Linux livremente programável com um modem em um único gabinete. Isso nos permitiu em nossos projetos abandonar praticamente completamente os painéis de automação usuais e chegar a soluções mais móveis.



No recorte deste artigo, compartilharemos com você os meandros da configuração do modem e vários scripts úteis para uma conexão 3G mais estável.



Pré-requisitos e soluções



Ao desenvolver nosso dispositivo, fomos guiados pelo fato de que ele deve se conectar à Internet móvel para se conectar a plataformas em nuvem. Havia duas maneiras: soldar o modem na placa ou usar conectores mPCIe. Optamos pela segunda opção e fornecemos dois conectores mPCIe de uma vez (Figura 1), pois essa opção nos pareceu mais interessante e flexível. Afinal, a instalação e troca do modem demoram alguns segundos, mais a variabilidade necessária aparece para o usuário e ele pode usar as combinações de módulos mPCIe que precisa para um projeto específico. Além de um modem 3G, podem ser módulos LoraWan ou Wi-Fi. Além disso, as soluções mPCIe provaram ser bastante confiáveis ​​e de alta qualidade.



imagem

Figura 1 - conectores mPCIe



Consideramos as seguintes opções como o módulo 3G principal para nosso dispositivo:



  • MikroTik R11e-LTE6
  • Quectel EC25-E
  • YUGA CLM920 TE5
  • HUAWEI MU709s-2p


Porém, após os testes, o modem HUAWEI acabou sendo o mais preferível para nós em termos de confiabilidade e relação qualidade-preço (Figura 2). Nós o tomamos como base e o instalamos opcionalmente em nossos dispositivos. Portanto, no futuro consideraremos a configuração e os scripts do modem relativo deste modelo. Talvez este script seja universal e útil para outros modems, no entanto, a estabilidade com outros modelos não é garantida. Para Rasbian Buster e HUAWEI MU709s-2p tudo funciona bem.



imagem

Figura 2 - Modem HUAWEI MU709s-2p instalado na placa do dispositivo



Usando um script para reiniciar um modem 3G



Para uma operação mais estável e sem problemas, escrevemos um script que fará o ping do endereço IP especificado e, se o número de pings especificado nas configurações não tiver passado, o modem GSM será reinicializado, restaurando assim a conexão de rede travada. Deve-se observar que o modem é definido no sistema como placa de rede lan1.



O arquivo com todos os arquivos necessários pode ser baixado deste link . Além disso, o texto dos próprios scripts é apresentado a seguir.



O arquivo check_inet.sh é necessário para verificar a conexão com a Internet. Se o endereço IP especificado não executar ping, puxamos a perna 19 e reiniciamos o modem ao ligar. O código é o seguinte:



#!/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 


O arquivo Start_inet.sh inicia check_inet.sh após a reinicialização do dispositivo:



#!/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


O arquivo também contém o arquivo de configuração igate.conf



Sequência de configuração :



1. Adicione uma regra para combinar a conexão física da porta COM do modem ao hub USB. Para fazer isso, edite o arquivo no seguinte caminho:



sudo nano /etc/udev/rules.d/99-com.rules


2. Adicione a seguinte linha ao arquivo:



KERNEL==”ttyUSB*”, KERNELS==”1-1.5:2.4″, SYMLINK+=”GSM”


3. Salve as regras e reinicie o dispositivo. Agora, a porta do seu modem será determinada pelo conveniente alias / dev / GSM;



4. Baixe o arquivo do link acima ou crie você mesmo os arquivos check_inet.sh, start_inet.sh e igate.conf;



5. Copie o arquivo check_inet.sh para a pasta:



/home/pi/


6. Torne check_inet.sh executável:



sudo chmod +x /home/pi/check_inet.sh


7. Copie o arquivo start_inet.sh para a pasta:



/etc/init.d/


8. Torne o arquivo start_inet.sh executável:



sudo chmod +x /etc/init.d/start_inet.sh


9. Atualize a configuração de inicialização executando o comando:



sudo update-rc.d start_inet.sh defaults


10. Copie o arquivo igate.conf para a pasta:



/home/pi/


11. Defina o arquivo de configuração. Abaixo está o arquivo de configuração com comentários:



#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”


Controle de script



Execute o arquivo de script check_inet.sh em segundo plano:



/etc/init.d/start_inet.sh start


Pare check_inet.sh:



/etc/init.d/start_inet.sh stop


O script também é iniciado automaticamente após a reinicialização do dispositivo.



Aplicações do dispositivo



Vamos considerar as principais tarefas para as quais o dispositivo pode ser usado:



  1. Controlador com acesso à Internet para transferência de dados para a nuvem;
  2. Um roteador 3G para tarefas de campo;
  3. Controlador de casa inteligente com canal 3G redundante. Ou seja, você pode usar a porta LAN como principal canal de comunicação, e 3G como backup, para que sempre tenha acesso ao dispositivo;
  4. Estação base LoRaWAN, ou seja, dispositivos de votação via LoRaWAN e transferência de dados para a nuvem via 3G ou LTE;
  5. Dispositivo de monitoramento de veículos (conexão CAN e acoplamento com vários serviços)


Na verdade, pode haver muitas aplicações para tal dispositivo, e sua vantagem indiscutível é sua completude, versatilidade e mobilidade. Um dispositivo pode substituir o gabinete de automação familiar e se tornar uma solução insubstituível em seus projetos.



All Articles