Detecção de sinal disponível para transmissão com o NRF24L10

Boa tarde. Gostaria de pedir algumas dicas aos colegas sobre a transmissão e recepção com o NRF24L01 e a biblioteca RF24.

O meu objetivo é transmitir um comando através do transmissor com o NRF24L01, (exemplo quando eu pressionar um botão, ele envia um valor true quando solto ele envia false), ai o receptor processa esta informação e a executa, de acordo com uma função que eu determinar, isto eu já consegui.

Ai a grande questão, se por acaso durante a transmissão o sinal, for perdido ou sair do alcance ou o controle ficar sem alimentação, o receptor deve parar todos os comandos e não executar nada sem que o sinal retorne.

Exibições: 230

Responder esta

Respostas a este tópico

Olá miguel,

    Cara, que legal que você se estimulou a usar o NRF24L01, ele é um grande rádio,  mal compreendido, visto que ao contrario dos caros xbee, quem dá suporte a ele é a comunidade e não o fabricante,  mas depois de desvendado suas nuances, se vê que ele é um grande radio.

     Bem, vamos lá, o que você deseja não é bem uma função encontrada em qualquer biblioteca,  o que você deseja é uma questão de lógica de programação.

     Primeiramente, eu te sugeriria ao inves do envio de strings(palavras como true ou false) que ocupam mais bytes,  envie simples 0 ou 1, e do outro lado interprete, isso deixa a transmissão mais leve.

     Segundamente, como você já deve ter notado a RF24 trabalha com o envio de matrizes de bytes, logo, dá pra você em cada envio, colocar varias informações em um só pacote, tipo, na primeira caixa da matriz, informar o nome do radio de envio, na segunda colocar um byte tipo, 0 ou 1 pra informar sobre algo como seu botão,  e em outras caixinha da matriz colocar outras coisas como bem desejar.

      Terceiro,  pra saber se os radios estão em comunicação, você terá que fazer o emissor enviar com uma certa frequencia, de forma constante, alguma coisa, mas lembrando que tem que haver um delay entre os envios, senão você ira causar uma sobrecarga na rede,  dai é só você chegar no receptor, e colocar alguma coisa tipo  if (radio.available()) { faça tal coisa, tal coisa, tal coisa }  ,ou seja, o emissor esta enviando, e o receptor recebendo, quando ele não receber, então entrara no que você deseja que ele faça.

       Entretanto eu recomendaria que você tivesse um certo cuidado, pois não existe radio no planeta que entregue 100% dos dados quando se faz muita transmisssão, dai sugiro que você coloque no receptor uma condição baseada em uma variavel com contagem, tipo:  cada vez que dentro de um ciclo de x milisegundos, for verificado se o radio esta disponivel  radio.available())  e não houver,  some mais um a uma variavel,  e toda vez que sim,  zere a variavel,  dai somente se essa variavel chegar a um X valor é que você determinara que realmente houve falha.

    Espero não estar sendo muito complexo na explicação, é que o que você deseja é uma duvida baseada em lógica e não em uma função pronta,  e talvez eu não seja muito bom em explicar, visto que vai depender do seu nivel de conhecimento das ferramentas pra poder entender o que estou dizendo.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço