[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.
Tags:
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 ?
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por