Bom dia Pessoal!!

Estou tentando realizar uns teste com o modulo nrf24 utilizando 2 Arduino uno, ao executar o programa foi observado que o emissor está enviando os dados corretamente, mais o receptor só recebe 1 vez e depois não consegue mais receber nenhum dado como demonstrado na figura abaixo:

Alguém sabe o que pode estar ocorrendo?
Colocarei como anexo os códigos utilizados.
Muito Obrigado e Abraços!!

Exibições: 642

Anexos

Responder esta

Respostas a este tópico

Oi FP, boa tarde,

não tenho experiencia com este módulo, mas olhando seu code Emissor, verifiquei que voce define

"int dados[1];" dados como uma matriz de 1 elemento. Depois voce faz "dados[0] = x;".

Mas ao enviar, usa " radio.write(dados, 1); "sem referenciar à matriz : Deveria ser radio.write(dados[0], 1);

Acho que não funciona da forma que você escreveu.

Modifique e tente pra ver se funciona ok. Depois conta pra gente.

Rui

Rui, na verdade essa parte do código está correta, pois quando ele faz "radio.write(dados, 1)" ele está enviando toda a matriz como parâmetro e é essa a forma que a biblioteca do NRF recomenda.

Mas, se você observar existe um pequeno erro no IF/ ELSE do receptor.

Repare que o ELSE está somente no terceiro IF.

O que vai acontecer?

Quando recebidos[0] for 1 ele entra no primeiro IF e OK, escreve 1.

Mas ele entra também no ELSE do terceiro IF (Pois 1 é diferente de 3) escrevendo "NADA" também.

Nesse caso, para corrigir, deveria usar IFs aninhados OU retirar o ELSE e incluir mais um IF:

if (recebidos[0] != 1 && recebidos[0] != 2 && recebidos[0] != 3) ...

Agora, porque está parando na primeira recepção, não sei.

Oi JAC, boa tarde,

obrigado pela dica .

Como eu não tenho experiencia com este módulo, não tinha esta "manha". kkk

Como achei que estava errado no transmissor, nem olhei o receptor.

Agora com sua dica, vou compilar o receptor, e ver esta sequencia que você cita.

Novamente, obrigado pela dica.

Rui

Olá Felipe,

 

    Esse codigo da Arduino e CIA é um pouco complexo pra iniciante,  por isso que te indiquei o codigo do site Futebol de Robos ( http://futebol-uff.blogspot.com.br/2012/12/nrf24l01-testes-iniciais... )  pois ele é mais simples e mais didatico.

    Cheguei em casa agora, e meus arduinos estão no trabalho, logo, não dá pra analisar onde tá a falha nesse codigo ai, numa rapida olhada eu notei que ele só tá indicando o pipe de comunicação mas não esta setando o canal,  nos NRF24L01 é preciso fazer as duas coisas, ele até tem canais pre configurados, mas pode dar problema.

   Logo set.channel é algo salutar de ser usado.

   outra coisa que pode até não ser obrigatoria mas tambem é util, é usar o comando radio.stoplisterning no setup do emissor apos o radio.openWritingPipe(pipe);, isso dá a certeza que o radio esta em modo de falar e não de ouvir.

   Mas como disse isso é muito por cima, pra saber mesmo o que tá acontecendo só com os radios na mão.

    Mas volto a dizer o que falei antes,  baixe a biblioteca do MANIACBUG ( https://github.com/maniacbug/RF24 ) e comece estudando por ela.

    O primeiro teste fundamental pra saber se você ligou os pinos dos radios corretamente é gravar o exemplo GettingStart em cada um dos arduinos (precisa de 2)  dai basta abrir o serial monitor, ele automaticamente vai dar o status do seu radio,  se tudo aparecer como 00000 ou se ele começar a dar scrol sozinho, então a ligação fisica tá errada.

   Se você fizer os testes nos dois radios e tudo tiver ok,  basta apertar T no radio 1, aguardar um pouco e depois apertar R,  ele vai parar,  dai vocÊ vai no radio 2 e aperta T e enter, e automaticamente os dois radios começam a se falar.

   Esse é o teste principal desses radios.

Olá pessoal,

Venho aqui agradecer a ajuda de todos, pois consegui realizar a comunicação com os 2 módulos.

A princípio eu estava com problemas no código mesmo, pois quando testei o exemplo da biblioteca que o Weider disse, a comunicação funcionou. 

Consegui reescrever o código com base no código do exemplo, somente assim que consegui estabelecer a comunicação.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço