
Roteadores da série 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 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 , que opera sob o padrão LTE Cat. M1 (). 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 , 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.

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 .
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.

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.

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

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.

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 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 .
Módulos são instalados manualmente, através do upload de arquivo de pacote pela interface web:

No momento, 73 módulos estão disponíveis. Aqui estão alguns interessantes:
- — uma ferramenta popular para integrar vários protocolos industriais em um sistema coeso
- — um servidor nodejs completo. Grande quantidade de memória RAM e processador potente permitem executar aplicativos exigentes diretamente no roteador!
- — permite trabalhar no console via navegador.
- — 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 e no site da empresa. Para facilitar a montagem de pacotes, um .
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
- Este artigo não aborda as funções de rede dos roteadores, como balanceamento, failover, VPN e outras, uma vez que todos esses tópicos já foram discutidos em outro de nossos artigos: .
- Exemplo de uso do roteador está em nosso primeiro artigo: .
- Os preços dos produtos podem ser conferidos na . O site em russo ainda não está pronto.
Convidamos você para o fórum de parceiros da Advantech

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. .
Fonte: habr.com
