[RESOLVIDO] Dúvida com Vários NRF24l01+ (Troquei de LIB)

[Resolução]

Troquei de lib, eu estava usando a Rf24 ou a Mirf, nenhuma com bons resultados..

Troquei para a: RF24Network

Já fiz o fork do projeto para meu github: https://github.com/rogerin/RF24Network

Antes, com o erro no software que eu tinha.. ligava 4 ao mesmo tempo e ficava lento ou nem funcionava direito.

Agora com a nova lib, fiz o teste inicial com 10, e os 10 recebem e envia dados..

Obrigado pela a excelente dica do nosso amigo: Weider Duarte

[Logo a baixo minha duvida]

Galera, quando eu ligo a placa individualmente.. todas recebem os dados normalmente, faz o que deve fazer..

Mas quando eu liguei varios aqui.. eles não estão recebendo os dados.. as vezes, apenas o primeiro comando chega em apenas um deles, o que eu enviar primeiro, logo em seguida eles param de receber dados...

Eu acho que esta entrando em um loop de envio de dados sem parar de um para outro..

mas na programação eu fico enviando dados toda hora. Alguem tem alguma dica?

Codigo de cada placa: http://pastebin.com/jeD9C0e3

Codigo placa "servidor": http://pastebin.com/WWsz6UjN

Imagem da instalação logo abaixo.

Exibições: 2639

Responder esta

Respostas a este tópico

Olá Rogério, como está usando? uma placa como central e as outra recebem e enviam de volta pra central? Eu estava fazendo isso na minha automação, mas não consegui um bom alcance entre a central e os receptores então meu projeto está parado aí. Tem um amigo que está fazendo e a idéia seria usar uns como intermediários digamos assim para aumentar a distância, mas achei isso muito trabalho além de que fica mais sujeito a problemas. 

Olá Rogério,

   

    Amigo,  apesar de eu ter aberto um grupo do nrf24l01 eu dei uma parada pra não atrapalhar meus estudos de xbee do curso da rogercom que estou fazendo,  mas vou tentar, dentro das minhas limitações ver o que posso ajudar. 

   Quando falamos de nrf24l01,  quase tudo esta na questão de configuração do software,  ou seja, programação e bibliotecas.

    Bem, vi no seu código que você tá usando a RF24.h do maniacbug,  e vi tambem que você abre um único PIPE pra comunicação,  acho que o problema tá ai. , visto que do pouco que entendo do nrf24l01 a programação que foi feito, é justamente pra ponto a ponto.

    A minha sugestão de solução:   Parta para a biblioteca  RF24NETWORK  veja aqui:                  https://maniacbug.wordpress.com/2012/03/30/rf24network/

  

     A Rf24network é mais apropriada pra comunicação multiponto, e se não me engano,  ela já faz a busca do melhor canal,  seta automaticamente os pipes e tudo mais,  dai se o negocio é ponto a ponto, como um controle remoto a rf24 tá otimo,  mas pra rede e multiponto o negocio é a RF24NETWORK.  Assim como tem biblioteca pra uma porrada de coisas com os nrf24l01 como transmitir audio e por ai vai.

     Só te peço uma coisa,  se conseguir desenvolver o projeto,  volta e compartilha no grupo NRF24L01 o que fez e como conseguiu ok.

      Tenta primeiro,  o que não for conseguindo, volta aqui pra gente te ajudar.

Agradeço a ajuda, vou implementar essa biblioteca, já ouvir muitos falarem mal da que eu estava usando para multiplos clientes..

O que eu notei, que quando eu envio o sinal, todos recebem, ou o mais proximo e o resto é descartado..

Como todos recebiam, acho q o sinal se perdia entre eles.. pois eu fazia a validação para quem estava recebendo o dado enviado nos bytes enviados, eu lia os bytes enviados, verificava se nesse byte, tinha a numeração de cada um, só então executava alguma coisa, mas agora com essa lib que vc recomendou, me parece uma boa opção..

Tenho muitos modelos aqui, vou testar em todos.. e posto os resultados no grupo certeza.

qualquer coisa, add no skype: r0gerin

ate mais..

Olá, gostei da biblioteca.. estou vendo aqui a "arvore" que ele faz para comunicação muito boa.. 

00 00 Master Node (00)
01 04 1st level children of master (00)
011 021 014 2nd level children of master. Children of 1st level.
111 121 221 114 3rd level children of master. Children of 2nd level.
1221 1114 2114 3114 4th level children of master. Children of 3rd level.

mas a lib que estou tentando usar da esse erro na hora de compilar:

/Users/rogerio/Documents/Arduino/libraries/RF24Network/RF24Network.cpp: In member function 'void RF24Network::update()':
/Users/rogerio/Documents/Arduino/libraries/RF24Network/RF24Network.cpp:67:12: error: void value not ignored as it ought to be
done = radio.read( frame_buffer, sizeof(frame_buffer) );
^
Erro compilando.

Bug na biblioteca?? 

Já resolvi, era problema na biblioteca base, RF24, troquei por uma mais atualizada, agora passou blz..

vou começar os testes agora!

vlw

Olá Rogerio,

   Cara, que bom que você tá conseguindo,   vou te dar só mais 2 dicas e reforçar o pedido anterior ok.

AS DICAS:

   1-  A biblioteca RF24 do maniacbug é uma das mais utilizadas pra quem mexe com os nrf24l01,  porem, ela tem pré-setada nela alguns parametros , como entrar em modo sleep automaticamente de tempos em tempos, e outras coisas,  que fazem com que isso seja quase um bug.    Dai alguns entusiastas mexeram nela e a aperfeiçoaram,   a versão aperfeiçoada mais reconhecida é a RF24 do greg copeland, você vai achar ela **AQUI**

   Como as bibliotecas para o nrf24l01 trabalham em cascata, ou seja, você tem que ter a nrf24l01.h,  depois a rf24.h pra ai sim vir a ter a rf24network,    é bom ter as melhores versões de cada uma.

2-  Uma dica sobre hardware -    Conheço 4 versões dos radios Nrf24l01,  sendo as versões DIP e SMD para 100m  e as versões DIP e SMD para 1000m.

    Se você estiver utilizando alguma das versões de 100m, normalmente não precisará de hardwares auxiliares,  porem, se partir para as versões de 1000m (NRF24L01+PA+LNA)  você ira precisar colocar um capacitor de 100uF entre o Vcc(3.3v)  e o GND,   se não fizer isso os radios começam a dar defeito.    Eu levei um tempo enorme e muita pesquisa pra descobri isso.

3-  REFORÇANDO O PEDIDO:     Por favor,  sei que é dificil compartilharmos ideias prontas, pois temos medo de alguem se aproveitar delas,    mas aqui somos todos uma comunidade,   logo,   por favor meu caro Rogério,   assim que conseguir fazer tudo funcionar direitinho,   faça um PDF tutorial ensinando como fez,  como conseguiu,    passe adiante,    se possível poste no grupo NRF24L01 e aqui em aberto tambem,  só que lá fica fixo.

    POR FAVOR NOS AJUDE,   COMPARTILHE,   AJUDE-NOS A AJUDAR CADA VEZ MAIS GENTE.

OBRIGADO AMIGO.

1: já estou lendo para modificar.

2: todos que tenho aqui sao nrf24l01+ de 100m, eu uso em todos um regulador de tensão de 3.3V. No inicio tive problemas com a energia sim, mesmo usando o 3.3v do arduino ele não era tão instável, coloquei um capacitor de 10uF e resolveu.. só então resolvi comprar os reguladores, que achei melhor, inclusive, no layout que vc fez, para o shield para ficar facil testar ele, eu ja queria modificar para por o regulador nele.

3: sem duvida após está tudo ok, postarei aqui sim.. quem sabe gravo um video ate.

Obs.: tenho uns 50, pretendo testar em todos os 50, quem sabe subir para 100, 200.. 

Tem 50 o que ?????    você comprou 50 Nrf24l01+  ????????      caramba bicho,  pra que tudo isso?    o que tu quer fazer ?

Rogério cara,  o que você precisar, pode contar com a gente beleza !

comprei para um projeto de automaçao residencial... tenho um pouco mais de 50 deles, e 50 arduino mini..

Ja fiz uma placa para eles. etc.. ja faz acionamento.. etc..

Depois mostro todo o projeto.. 

Na imagem que eu postei, tem o painel que fiz para demonstraçao para clientes..

tem 10 placas, que fazem cada uma 2 acionamentos..

Outra coisa, preciso organizar direito, porque se esse projeto for instalado em um predio, pode acontecer e vai acontecer, do segundo andar, pegar dados do primeiro e do terceiro.. e assim vai.. mas se eu criar uma rede para cada apartamento.. 

Isso que estou atras de fazer e implementar.

Olha Rogério,   esse negocio de ter centenas de nrf24l01 e um interferir com outro é simples de resolver.

   O truque é criar codigos personalizados de acionamento por apartamento e andar, atraves de variáveis de acionamento com nomeclaturas personalizadas, dai mesmo que o comando de um radio acionador seja captado pelo receptor de outro apartamento, ele primeiro verifica se o codigo é o que faz ele acionar, se náo for, não faz nada.

   Como disse, tô meio enferrujado com os nrf  mas isso eu lembro, vou tentar explicar melhor.

Digamos que você tenha uma lampada no apartamento 103 do 5 andar, ai você criaria uma variavel de acionamento pra ela assim

lamp_1_103_5   ou seja lampada 1 do apartamento 103 5º andar.

dai pra acionar essa lampada os emissores emitiriam um comando tipo lamp_1_103_5_1 , e pra desligar  lamp_1_103_5_0

 No arduino que estiver acoplado ao nrf dessa lampada, naturalmente você informara que ele analise e compare toda infomação que chegar,  se o codigo que chegar pela rede bater com o codigo dela, ai é só fazer a ação.

    Outra coisa rogerio,  porque comprar tanto arduino e não desenvolver suas proprias placas ?

O arduino pró mini tava custando 3 dólares.. Apenas o atmega328 smd tava quase esse mesmo preço, achei que para o protótipo e fazer a primeira venda para me capitalizar e mandar produzir as placas fora, achei uma ótima alternativa.

Add skype: r0gerin
Ou gtalk: geriofilho@gmail.com
te mostro o layout da pcb do projeto ..
Fiz 3 layouts, para acionamento, dimmer e infra vermelho.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço