Manual
do
Maker
.
com
Eis então primeiro hat LoRa1276 com comunicação via barramento SPI para Raspberry (sem uso de comunicação serial através de uma MCU), o AFMultiRadio, esgotou rapidamente. Não é pra menos. A qualidade impecável do hardware justifica a explosão de vendas, ainda que me cause um certo espanto. Parece que a AFEletronica se empolgou e, vejam só, produziu a AFMultiRadio Black Edition, essa fabulosa placa da imagem de destaque, com algum diferencial em relação à placa verde.
Entre as diferenças da versão, temos agora o conector SMA fêmea para as antenas, sendo a pig tail na saudosa versão verde. A disposição do hardware é praticamente a mesma, mas agora temos um slot para conectar um SIM800 diretamente no hat, o que nos garante que de algum modo poderemos enviar dados para a nuvem. É simplesmente apaixonante!
Infelizmente não dá nem pra fazer comparações com as placas que existem hoje no mercado por razões éticas, mas me sinto seguro em afirmar que essa AFMultiRadio Black Edition é o melhor custo e o melhor benefício.
Simples; do mesmo modo que é configurado no modelo verde. Mas melhor do que isso seria não ter que configurar nada, apenas desenvolver, certo? Afinal, não queremos perder tempo com configuração, uma vez que o propósito é criar um produto, e se ater à configuração do sistema previamente ao desenvolvimento é custoso e pode causar vários aborrecimentos durante os debugs. Por essa razão, temos uma novidade que surgiu junto com a AFMultiRadio Black Edition - o sistema pronto para desenvolvimento, disponibilizando todos os recursos necessários para controle dos rádios e um pouco mais!
Logo no lançamento da primeira versão, iniciamos o desenvolvimento de um projeto (gigantesco, por sinal). Esse projeto contratado já dependia de diversos recursos, além de outros que foram implementados conforme vistas as necessidades durante seus 3 meses de desenvolvimento. Considerando que isso poderia ser útil para outros projetos, removemos tudo o que pertencia ao produto do cliente e deixamos um sistema genérico, com ambiente de desenvolvimento preparado, recursos extras, IDE de desenvolvimento, menu de configurações de serviço para o sistema, serviço de sistema rodando no boot e código de exemplo das funcionalidades, com os 3 rádios já configurados! Gostou? Bem, o sistema pode ser adquirido a um preço simbólico na AFEletronica, em um cartão Micro SD, meio pelo qual pretendo faturar pelo trabalho desprendido no desenvolvimento.
O sistema serve também para outros desenvolvimentos, de modo que bastará desabilitar o serviço de sistema relacionado aos rádios, fazendo o primeiro update do menu e desabilitando-o por ele, ou então por linha de comando:
sudo systemctl disable AFMultiRadio
Vamos falar agora dos recursos prontos para uso.
Nesse sistema temos 2 usuários. O usuário padrão pi, cuja senha precisará ser trocada para que seja acessível. O usuário configurar com a senha padrão raspberry , que dá acesso ao menu de configurações do sistema. A senha de ambos os usuários pode ser modificada através do menu, que se abre ao fazer login e ao sair do menu, o login é encerrado automaticamente.
O login deverá ser feito primeiramente conectando-se ao Raspberry com teclado e monitor para fazer a configuração do WiFi. A rede configurada por padrão é a minha rede de desenvolvimento, por isso não tem como acessar diretamente por WiFi, exceto uma rede igual à minha seja configurada no seu ambiente.
Após configurar o WiFi, os demais acessos podem ser feitos por SSH, que está habilitado por padrão, mas que pode ser desabilitado também através do menu do usuário configurar.
A primeira coisa que certamente quereremos configurar será o WiFi, por isso é o primeiro item do menu. Depois, outros itens podem ser úteis tanto para o desenvolvedor quanto para o cliente ou para o técnico que porventura venha a fazer uma instalação do projeto. Daí entram as demais opções.
Apenas exibe o status da conexão com a Internet, de forma a garantir que o Raspberry realmente está conectado.
Está pronto para uso, mas o serviço não está instalado, pois não serão todos a utilizar o MQTT, certo? Mas estando instalado e configurado, o controle pode ser feito através desse item do menu.
Para sabermos se o broker está em execução.
Habilita/desabilita o serviço SSH para conexão remota. Por padrão está habilitado.
Exibe o IP público. Esse recurso tem a finalidade de ajudar no acesso remoto ao Raspberry. Suponhamos que o roteador WiFi da rede do cliente esteja fazendo port forwarding, permitindo uma conexão à porta 22 do Raspberry. Para que seja possível fazer a manutenção remota, será necessário saber o IP público da rede do cliente afim de fazermos o acesso. Daí lá se vão minutos preciosos até que o cliente seja capaz de dizer o IP. Com esse item do menu, a resposta será dada ao cliente imediatamente, e em menos de 1 minuto já estariamos hábeis a fazer o acesso remoto.
Claro que para fazer a configuração do roteador para permitir port forwarding é necessário que o Raspberry esteja pegando sempre o mesmo IP ou então, se o port forwarding for feito apenas para um momento, devemos obter de alguma forma o IP local para definir a regra no roteador WiFi. Por isso temos essa opção no menu, facilitando para todos o acesso à informação.
Mas se for para configurar um IP fixo para o Raspberry, claro que teremos também que obter o MAC address do Raspberry. Bastará acessar esse item do menu e pronto!
A senha padrão do usuário configurar é raspberry. Se desejar (e certamente desejará) trocar a senha, esse é o lugar.
A senha do usuário pi deve ser trocada para se ter acesso ao terminal do sistema desse usuário, utilizado para desenvolver.
Mostra os logs de acesso ao menu e as operações executadas.
Mostra as configurações do WiFi de forma explícita, para fins de debug (O SSID está certo? A senha está certa?).
Faz um teste de DNS para saber se está resolvendo nomes adequadamente. É uma boa opção para diagnósticos, principalmente quando já sabemos que o Raspberry está conectado a uma rede WiFi, que ele tem acesso à Internet mas ainda assim não alcança um destino.
Aqui podemos configurar um DNS qualquer. Por exemplo, se tiver um servidor DNS na rede do cliente, podemos definí-lo aqui. De outro modo, podemos utilizar o DNS da operadora ou, opcionalmente, utilizar o DNS público do Google, que é uma opção sugerida de forma automática ao acessar esse item do menu.
E se por acaso houver problemas na resolução de nome, podemos diagnosticar se foi um erro de digitação do usuário ao configurar o DNS, ou se o DNS não está resolvendo nomes. Basta acessar esse item.
E se precisar de mais alguma funcionalidade? Bem, no caso de eu resolver adicionar mais algum recurso, ou se alguém solicitar um recurso genérico que possa ser utilizado por todos, eu adiciono ao programa e fazendo o Update, lá estará a opção disponível. Claro que não será um trabalho gratuito, mas é um recurso que pode ser adquirido como serviço.
Temos um servidor NTP nesse sistema, bastando configurar o IP do Raspberry (que deve ser fixo) através desse item de menu. Estando conectado à internet, seu Raspberry manterá a hora correta através do serviço de rede criado para esse propósito e, tenha certeza, nem um RTC pode ser mais preciso que esse serviço, utilizado por servidores que precisam manter a hora exata do sistema operacional para intercomunicação com outros serviços de rede.
Reinicia o sistema.
Desliga o sistema.
Maximiza o sistema de arquivos para expandir para o tamanho máximo do cartão.
Sai do login de usuário configurar.
Um descritivo de ajuda sobre os itens do menu.
No home do usuário pi está disposto um link simbólico chamado AFMultiRadio, que é o ambiente de desenvolvimento. Dentro dele, edita-se o arquivo rf95_server.cpp para ler o exemplo ou utilizá-lo em seu projeto.
No home do usuário pi também temos a biblioteca do rádio, a biblioteca do BCM2835 para acesso direto ao hardware e a biblioteca para o banco de dados SQLite, todos já implementados e com exemplo.
O diretório menu contém o menu utilizado pelo usuário configurar, além dos logs e personalização do estilo do menu.
Por fim, o arquivo AFMultiRadio.ini contém os parâmetros de configuração implementados no código de exemplo para definir as frequências dos rádios, aplicação, banco de dados, diretório de logs, modo de debug etc.
Todos esses recursos estão configurados e instalados no sistema, assim como as demais personalizações necessárias para o funcionamento adequado dos rádios. Os fontes utilizados estão disponíveis no diretório para uma eventual personalização de algum recurso, mas basicamente o que precisamos fazer está descrito um pouco mais abaixo, continue a leitura.
Fazendo o login por SSH através de qualquer computador com Linux, é possível utilizar a IDE Codelite para programar diretamente no Raspberry, bastando fazer a compilação a posteriori. Se ainda não ficou claro, o Codelite está instalado no Raspberry Pi e a partir de um Linux qualquer em outro computador você poderá acessá-lo através da conexão SSH, como se o programa estivesse instalado localmente em seu computador x86! Para tal, faça a conexão com o Raspberry utilizando a flag '-X':
ssh pi@ip_do_raspberry -X
codelite
E abra o arquivo rf95_server.cpp, como na imagem a seguir.
Está usando Windows? Não tem um Linux instalado? Sem problemas, instale o MobaXterm no seu Windows e através de uma conexão SSH execute o codeLite da mesma maneira:
Depois, saindo da IDE ou abrindo uma nova conexão, entre no diretório /home/pi/AFMultiRadio e faça sua compilação:
Adicionei algumas opções úteis ao Makefile, tornando um pouco mais prazeroso executar as tarefas repetitivas do desenvolvimento.
Compila o programa, que será mantido no próprio diretório.
Limpa a compilação, removendo objetos e símbolos.
Executa o programa em modo verboso, para depuração.
Monta o sistema de arquivos para escrita e move o programa compilado para o path do sistema, então reinicia o Raspberry, que já voltará executando o programa como um serviço do sistema.
O programa acessa recursos privilegiados do sistema, pois é necessário comunicar-se diretamente o processador do Raspberry para que seja possível a comunicação via SPI com o rádio Lora1276. Por isso, se tentar executar o programa como usuário comum, será avisado de que somente root pode fazê-lo:
Isso significa também que não utilizamos o SPI habilitado através do configurador do sistema, nem devemos fazê-lo, quando estivermos utilizando esse hat.
Como se trata de um serviço de sistema, certamente o programa já estará rodando após o boot do sistema. É muito comum esquecermos disso e então rodar uma segunda instância, o que pode ocasionar diversos tipos de problema. Está implementado o recurso que trata uma execução prévia, utilizando recursos do próprio sistema, através de PID (Proccess IDentifier) e não permitindo uma segunda instância:
O serviço de sistema pode ser parado utilizando o comando:
sudo service AFMultiRadio stop
Também podemos iniciá-lo trocando stop por start. E por fim, podemos ver o status do serviço:
No código de exemplo estão dispostos os recursos de parametrização por linha de comando (cujos parâmetros podem ser consultados com -h):
Também se encontra o código para utilizar o arquivo AFMultiRadio.ini. Enfim, tudo o que você precisa para começar direto do desenvolvimento com alguns recursos adicionais já está no sistema, é ligar e começar a programar!
Essa placa pode ser adquirida com 1, 2 ou três rádios e nesse caso, claro, o preço varia. Ainda assim, com 3 rádios pode chegar a custar a metade de alguns hats LoRa para Raspberry, com a diferença de que esse é o único com rádio LoRa nativo comunicando por SPI diretamente com o Raspberry!
Dê uma conferida no site da AFEletronica, clicando nesse link.
Se ainda precisa comprar Raspberry, então aproveite para passar na CurtoCircuito e pegar a sua.
Se ainda não é inscrito, inscreva-se em nosso canal DobitAoByteBrasil no Youtube, clique no sininho para receber notificações e deixe seu like! O nome do vídeo é AFMultiRadio Black Edition, caso já tenha passado tempo demais desde a publicação desse artigo. Mas aproveite para comprar o quanto antes, porque levei uma semana para escrever sobre a placa e, no momento desse artigo, só restavam 8 mais!
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.