Arduino

Talk2 Whisper Node – LoRA RFM69 sob medida

Talk2 Whisper Node com LoRA RFM69

Tenho a impressão que o momento é de RF subgiga. Diversas opções estão surgindo e o preço está cada vez menor. Nesse outro artigo fiz a introdução do AFSmartRadio, que veremos muitas aplicações no decorrer dos próximos dias. Mas agora quero falar de uma bela placa que já escrevi alguns artigos anteriormente. A Talk2 Whisper Node, com LoRA RFM69!

Atenção

Essa dica é para qualquer módulo; sempre, sempre, SEMPRE tenha a antena conectada antes de ligar o dispositivo para evitar danos ao rádio. Sempre.

LoRA RFM69

Essa belezinha utiliza um módulo RFM69 e já escrevi alguns artigos sobre ela:

  • primeiros passos – instalação da board. Só troque a url da board por https://bitbucket.org/talk2/arduino-ide-boards/raw/master/package_talk2.wisen.com_index.json caso tenha algum problema de resolução com a URL do artigo.
  • introdução – muito importante, cito diversos detalhes sobre os recursos da placa
  • Acionando relé – simples

A biblioteca estará disponível também pela IDE do Arduino, é só seguir o link primeiros passos.

Nesse artigo, vou experimentar algo que ainda não havia experimentado; o alcance da board com obstáculos. Uma ficará dentro do meu apartamento (16º andar) e a outra levarei pra “passear” na rua.

Será fácil mantê-la alimentada por baterias, pois seu consumo é infinitesimal, podendo durar anos com uma única pilha AA. E é um Atmega328PU!

Ela pode ser alimentada simultaneamente por uma fonte e por baterias, de modo que se obtém um backup seguro em caso de queda de energia, pois ela continuará a funcionar.

Sugiro fortemente que leia os artigos supracitados, isso vai amolecer-lhe as pernas.

Cenário

Vou deixar uma board ligada a um carregador de celular, bem próximo à janela (ou na própria janela). Na outra board colocarei um display OLED que exibirá informação de tempo de resposta na troca de pacotes e/ou mostrará o RSSI (estou escrevendo enquanto planejo). Daí vou para a rua com essa board com OLED para medir o alcance; dentro do elevador, na portaria do prédio, caminhando pela rua até onde for possível. Pode não passar de uma quadra ou pode ser que eu tenha que voltar de Uber, enquanto escrevo é uma incógnita.

Materiais necessários

Se quiser fazer algo parecido, está muito fácil. Você vai precisar de pouca coisa:

Pinout

Para saber os pinos que são utilizados e os pinos que se pode utilizar, é fundamental saber o pinout da board em questão:

Talk2 Whisper Node com LoRA RFM69 - pinout

Desses, o A4 e A5 serão utilizados para o I2C.

Biblioteca SSD1306

Essa é a biblioteca utilizada, que você pode seguir esse tutorial para instalar. Se já a instalou para usar com ESP32  e fez a modificação sugerida no artigo supracitado, edite novamente o arquivo ~/Arduino/libraries/Adafruit_SSD1306/Adafruit_SSD1306.cpp e na linha 206, volte a inicialização do Wire para Wire.begin().

Tem também uma biblioteca do próprio Talk2, com alguns exemplos específicos da board. Para esse tutorial, utilizei um sketch de exemplo da biblioteca RadioHead. Baixando a biblioteca do Talk2, você a encontrará no diretório ~/Arduino/libraries/Talk2/extras. Basta copiá-la para ~/Arduino/libraries e extrair o pacote. Após feito, reinicie (ou inicie) a IDE do Arduino.

Sketch de exemplo

Eu recomendo muito que se faça isso, porque o sketch de exemplo tende a ser sempre a melhor implementação e te ajuda a entender o comportamento do hardware em questão. Mas preciso manifestar minha satisfação; a biblioteca do Talk2 é fantástica! Tem uma implementação criptográfica, tem implementação de altíssimo nível com timer, acesso fácil a todos os recursos da placa sem que precisemos esmiuçar bits! Como estou escrevendo algo mais simples, não utilizei os sketches da Talk2, mas pretendo fazê-lo.

Se você viu os artigos relacionados ao NRF24L01, por mais que seja simples, não chega aos pés da simplicidade de uso da biblioteca do Talk2 Whisper Node, ou diretamente a RadioHead, sério.  Ela tem inclusive a opção de pegar o RSSI (a intensidade de sinal). Devido a esse recurso, resolvi escrever algumas linhas para explicar o que significa ter esse recurso.

RSSI e dBm

Ambas são unidades de medição de intensidade de sinal. A diferença é que o RSSI é um índice relativo, enquanto dBm é um número absoluto representando o nível de força em mW.

O RSSI é utilizado para medir a qualidade relativa de um sinal recebido de um dispositivo remoto, não tendo um valor absoluto. Pelas especificações do IEEE 802.11, a escala pode ser de 1 Byte, mas a norma permite que cada um implemente “a gosto”, então tem implementações que vão de 0 à 100 ou 0 à 60 etc. Então para utilizá-lo como referência, é necessário saber qual o padrão que está sendo utilizado no hardware em questão.

Na biblioteca RadioHead o valor do RSSI é representando por um número negativo. Quanto mais próximo de 0, maior a intensidade de sinal. Com o rádio lado a lado, o menor valor que obtive foi -30, e conforme se distancia o rádio, maior o valor negativo.

 

Vamos ao código, nele deixo alguns comentários pertinentes. Removi tudo do sketch que não achei necessário para essa implementação e adicionei ao código as funcionalidades que julguei necessárias para fazer esse teste de alcance.

Listener

O lado encarregado de exibir as informações no display eu chamei de “listener”. O código para ele, com display, mostrando RSSI, tempo de troca de mensagem e status, ficou desse jeito:

Screamer

O lado que ficará conectado em meu apartamento, pendurado na janela, chamei de “screamer”. Se não gostou dos nomes, sem problemas, apenas escolha o que preferir em seu sketch! O código ficou assim (se não me engano, original):

Upload

Para subir o sketch, você precisará de um FTDI, e não pode ser conversor USB-serial porque é necessário ter o pino DTR. Se não tem um, pegue o seu na Eletrogate. Precisa ser esse modelo porque é possível selecionar o nível de tensão entre 3V3 e 5V e para a Talk2 Whisper Node será necessário que esteja em 3V3.

Video do teste

Agora vou dar uma sacaneada. Terminei o artigo muito tarde e não resisti em publicá-lo. Mas o video será colocado no primeiro nascer do sol após a publicação, então, se tiver interesse em ver o teste, assine nosso canal no YouTube!

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/

Próximo post a caminho!