Roteador 4G como um servidor universal para IoT

Roteador 4G como um servidor universal para IoT
Roteadores da série ICR-3200 são projetados para substituir a clássica combinação: computador embarcado + modem + roteador. Agora é possível executar toda a lógica necessária diretamente no roteador. Graças ao poderoso processador ARM, 512 MB de memória RAM e cerca de 2 GB de armazenamento flash embutido, é possível até mesmo rodar um servidor nodejs no roteador!

As interfaces seriais RS-232/485 também estão integradas ao roteador e são acessíveis diretamente no sistema operacional com acesso root completo. Um ambiente aberto para compilar seus próprios programas e bibliotecas C/C++ para trabalhar com a API de hardware de baixo nível também está disponível.
A função de modo de sono profundo permite economizar energia quando operando com bateria: o roteador pode ser ativado apenas quando a conexão é realmente necessária.

Neste artigo, analisaremos as funções interessantes do dispositivo e tentaremos trabalhar na prática com a interface de entrada e saída a partir de scripts shell.

Especificações técnicas

Roteadores da série ICR-3200 são construídos sobre uma plataforma de hardware unificada e apresentados em cinco modelos, que diferem nas faixas de frequência LTE, presença de Wi-Fi e geolocalização (GNSS). Os dispositivos são posicionados como uma substituição da combinação de computador embarcado e roteador. O poderoso processador e a grande quantidade de memória RAM permitem a execução de aplicativos intensivos de recursos diretamente no roteador.

  • Processador Cortex-A8 — frequência de clock de 1 GHz, arquitetura de 32 bits
  • 512 MB de RAM
  • Memória flash de 1,5 a 4 GB — para armazenamento de dados do usuário
  • Portas de entrada e saída — interfaces RS-232/485 e portas digitais de entrada e saída disponíveis para uso por programas de usuários

Vale mencionar o modelo ICR-3211B, que opera sob o padrão LTE Cat. M1 (NB-IoT). O protocolo LTE Cat. M1 foi especialmente desenvolvido para soluções M2M, possui uma baixa taxa de transmissão de dados (375 kb/s), além de uma maior distância de operação e estabilidade aumentada em condições de sinal desafiadoras em ambientes internos. O roteador vem com um supercapacitor, permitindo que o dispositivo funcione por curto período após a desconexão total da alimentação.

Modo de sono profundo

O modo de sono profundo permite colocar o roteador em um estado onde todos os processos são congelados e a parte de hardware está desligada, economizando energia, enquanto todas as funções do dispositivo são desativadas e, por fora, ele parecerá totalmente desligado. O consumo de energia nesse modo é não superior a 10 mW.

Roteador 4G como um servidor universal para IoT
No modo de suspensão, o roteador consome quase nenhuma energia e acorda em 3 segundos

Quando for necessário acordar o roteador para transmitir dados, ele acordará em ~3 segundos. Obviamente, levará um tempo adicional para o modem registrar-se na rede celular, mas isso é significativamente mais rápido do que iniciar o roteador do zero. Essa opção é útil para sistemas com energia autônoma que, na maior parte do tempo, permanecem em inatividade e são ativados ocasionalmente para realizar ações ativas, como alarmes ou blocos de reserva.

Despertar e hibernar

O controle da hibernação e do despertar é realizado através do módulo Modo de Suspensão.

Existem 2 maneiras de controlar o modo de suspensão:

  • Através de uma entrada digital — neste modo, o roteador é controlado por um dispositivo externo, como um microcontrolador. Com um sinal LOW na entrada digital, o roteador entra em modo de suspensão, e ao receber HIGH — acorda, ou vice-versa. Também é possível configurar um tempo limite para proteger contra mudanças acidentais.
  • Através de um temporizador interno — o roteador conta o tempo e acorda/hiberna no momento correto. Isso é conveniente para executar operações únicas ou carregar dados em um período específico.

Roteador 4G como um servidor universal para IoT
Interface de configuração do modo de suspensão profunda

Função ‘último suspiro’

Uma falha de energia em um local remoto pode ser especialmente desagradável, pois não é claro o que causou a perda de contato com o local. A função ‘Último Suspiro’ permite que o roteador funcione por algum tempo após a desconexão total da energia e envie uma mensagem informando que ocorreu uma falha e a energia de reserva não foi ativada. Graças ao supercapacitor integrado, cuja vida útil é significativamente maior que a de baterias comuns, ele não requer manutenção ou substituição. Isso é útil para sistemas de reserva de energia, onde falhas podem ocorrer e é importante rastrear o momento em que a perda de tensão é completa.

Roteador 4G como um servidor universal para IoT
O roteador enviará um sinal de falha de energia mesmo após a desconexão total da energia

Para reagir corretamente ao evento de perda de energia, é necessário saber disso de alguma forma.
A tensão de alimentação atual pode ser obtida através de um comando shell status sys:

$ status sys
Versão do Firmware : 6.1.10 (2019-07-02)
Número de Série    : ACZ1100000623519
Perfil          : Padrão
Bateria RTC      : Ok
Tensão de Entrada   : 12,3 V # ← tensão de alimentação
Temperatura      : 37 C   # ← temperatura interna
Hora             : 2019-08-16 16:21:18
Tempo de Atividade           : 0 dias, 11 horas, 43 minutos

Ou por meio de controle Unix I/O de hardware (ioctl) e um programa em C/C++ ou outra linguagem.
A tabela mostra os endereços dos registradores de hardware necessários. A tensão de alimentação atual é retornada como um número inteiro, em milivolts. O uso da API de baixo nível é preferível a shell scripts neste caso para uma resposta mais rápida. Informações detalhadas sobre o trabalho com hardware estão disponíveis em o guia do desenvolvedor.

Roteador 4G como um servidor universal para IoT
Requisição ioctl que retorna a tensão de alimentação atual.

Interfaces seriais

O roteador possui duas interfaces seriais integradas: RS-232 e RS-485. Elas permitem conectar dispositivos periféricos diretamente ao roteador, sem usar cabeamento adicional. Neste caso, um servidor Node-RED ou Nodejs completo pode ser executado no roteador, permitindo que um único dispositivo seja usado para implementar um sistema de automação simples, sem computadores e controladores adicionais.

Roteador 4G como um servidor universal para IoT

Por padrão, ambas as interfaces estão disponíveis para uso como dispositivos seriais padrão no Linux:

ls -la /dev/ttyS*
crw-------    1 root     root      251,   0 Jan  1  1970 /dev/ttyS0 # ← porta rs-232
crw-------    1 root     root      251,   1 Jan  1  1970 /dev/ttyS1 # ← porta rs-485 
crw-------    1 root     root      251,   5 Jan  1  1970 /dev/ttyS5 # ← não conectado

Todas as bibliotecas padrão suportarão esses dispositivos sem configurações adicionais, incluindo o módulo Modbus-RTU2TCP e outros.

Módulos personalizados

A funcionalidade do dispositivo pode ser expandida com módulos personalizados: uma versão simplificada dos pacotes, apenas sem o gerenciador de pacotes. A lista completa de módulos disponíveis pode ser encontrada no site https://advantech-bb.cz/products/software/user-modules.

Módulos são instalados manualmente, através do upload de arquivo de pacote pela interface web:

Roteador 4G como um servidor universal para IoT

No momento, 73 módulos estão disponíveis. Aqui estão alguns interessantes:

  • Node-RED — uma ferramenta popular para integrar vários protocolos industriais em um sistema coeso
  • Nodejs — um servidor nodejs completo. Grande quantidade de memória RAM e processador potente permitem executar aplicativos exigentes diretamente no roteador!
  • Python2/3
  • Web-shell — permite trabalhar no console via navegador.
  • Azure IoT SDK Python — um conjunto de ferramentas para o desenvolvimento de programas para o Microsoft Azure IoT Hub.

Uma vez que o firmware dos roteadores é aberto, os desenvolvedores podem escrever seus próprios módulos, incluindo aqueles com interface web. Materiais de referência estão disponíveis em o guia de escrita de módulos e e na seção para desenvolvedores no site da empresa. Para facilitar a montagem de pacotes, um ambiente pronto para cross-compilation está disponível..

Recursos de hardware via shell scripts

Para tarefas simples de automação, é conveniente usar shell scripts, a partir dos quais se pode controlar a indicação luminosa e obter/definir o estado dos pinos digitais.

A indicação luminosa é útil para mostrar o estado atual da execução dos comandos. Por exemplo, a indicação de transferência de dados — piscadas frequentes, tentativa de conexão — piscadas raras, estado inativo — luz contínua. Consideremos o comando led. Ele aceita apenas um argumento — o tipo de piscar do LED.

# led
led on|off|fast|slow

Veja como isso se parece na prática:


Demonstração dos modos de operação do indicador do usuário através de comandos shell

Para trabalhar com pinos digitais, usa-se o comando io.

$ io
Usage: io [get ] | [set  ]

io set out0 1 # Definir a saída digital OUT0 para o estado 1 (LOW)
io get bin0   #  Obter o valor da entrada digital BIN0

É importante lembrar que a lógica neste caso é invertida. Assim, 1=LOW, 0=HIGH. Usando o comando io podemos facilmente trabalhar com pinos digitais a partir de scripts bash e construir uma lógica simples para automação e controle.

Como uma demonstração da facilidade de trabalhar com entradas digitais e indicação, vamos escrever um script simples que mostra o status da entrada digital com um LED.

#!/bin/bash
while true
do
	[ $(io get bin0) -eq 0 ] && led fast || led on
done

O princípio de funcionamento do script é simples: se BIN0 estiver em 0, o LED pisca rapidamente, caso contrário, ele fica aceso continuamente. Veja como isso se parece ao vivo:


Demonstração do script bash que exibe o estado de uma entrada digital usando um indicador.

Apesar de ser um script primitivo, ele ilustra claramente como, em uma única linha, sem software adicional, bibliotecas e configurações, é possível obter dados de entrada dos pinos digitais e reagir a eles.

Links

Convidamos você para o fórum de parceiros da Advantech

Roteador 4G como um servidor universal para IoT
O fórum Advantech será uma plataforma única para discutir tendências locais e globais na área da Internet das Coisas. Aqui você poderá trocar experiências sobre o uso de novas soluções e produtos tecnológicos, encontrar novos clientes e parceiros. Você terá a chance de ver os produtos que descrevemos nos artigos e muito mais. Teremos a participação de líderes da indústria e representantes de parceiros-chave – NVidia, Intel e outras empresas que estão ativamente envolvidas no desenvolvimento da Internet das Coisas industrial nos próximos anos. Ficaremos felizes em ver todos os profissionais da automação industrial e da Internet das Coisas no evento. A participação no evento é gratuita! As vagas são limitadas. Não perca a oportunidade de se registrar.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster