[PEDIDO AJUDA] Nào consigo fazer funcionar modulos de radio de 1000m (NRF24L01+P

Galera,

Tô precisando de ajuda pra valer, e dessa vez é pra mim, pois tenho que entregar um prototipo a um cliente de um controle remoto que alcançe 500m no minimo, de e tô meio que no desespero.

Tentei aqueles controles de carro de 1000m, mas eles se mostraram afetáveis por iterferencias em algumas áreas(resumindo, testei e não serviu).
Pensei em utilizar os Xbee, mas o preço dos modulos de alta potência são proibitivos pra o projeto, visto que são vários.
A solução foi partir pra os modulos de radio nRF24l01, que tem de dois tipos, os de baixa potëncia( nrf24l01+ ) que pelo datasheet dá uns 100m e a versão nRF24l01+PA+LNA que pelo datasheet dá 1000m.

Veja nas imagens anexas a imagem dos dois tipos.

Criei uma shield pra usar esses radios no arduino UNO, ela foi feita pra uso com a biblioteca RF24.h, anexei uma imagem dela tambem, da uma olhada no fim do topico.

O DESAFIO:

Preciso que quando um dos lados for energizado(o transmissor), ele automaticamente mande um codigo pra o segundo modulo(receptor) que estará aguardando, se o codigo bater ele acende um led por um tempo, só isso, parece fácil né ? Mas não é!

O PROBLEMA:

O problema é que apesar do fabricando dizer que os dois modelos (de 100m e 1000m) serem iguais tendo como única diferença um amplificador no mais potentente, o que ocorre é que quando executo os sketchs abaixo, no radio mais simples( nrf24l01+ ), tudo acontece bem,ele não falha nunca, já quando executo no modelo de maior potëncia (nRF24l01+PA+LNA) ALGUMAS VEZES ELE FUNCIONA, OUTRAS NÃO ! e depois de um tempo, para de funcionar completamente.

PEDIDO DE AJUDA:

Peço que se alguem já mexeu com esses rádios e souber alguma coisa que possa ser feita para eles funcionarem , que me dêem uma luz, pois já tentei várias coisas, inclusive colocar um capacitor de 4.7uF entre o VCC(3.3V) e o GND e nada. Já tentei aumentar a tensão usando LM317 para o pico de 3.6V, funcionou um tempo e parou, dai quando aumentei mais ainda, queimei dois dos radios.

Tô precisando de ajuda mesmo.

os sketchs usados são esses:

// *********************************************************** TRANSMISSOR **
#include <SPI.h>
#include “nRF24L01.h”
#include “RF24.h”

int comunica[1];

RF24 radio(9,10);

const uint64_t pipe = 0x88E8F0F0E1LL;

void setup(void)
{ Serial.begin(9600);
radio.begin();
radio.openWritingPipe(pipe);
pinMode(3, OUTPUT);
comunica[0]=0;
delay(100);}

void loop(void){

comunica[0]=123;
radio.write( comunica, sizeof(comunica) );
digitalWrite(3, HIGH);

}

// **************************************** RECEPTOR**
#include <avr/wdt.h>

#include <SPI.h>
#include “nRF24L01.h”
#include “RF24.h”

int comunica[1];

RF24 radio(9,10);
const uint64_t pipe = 0x88E8F0F0E1LL;

void setup(void){
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
pinMode(3, OUTPUT);

wdt_enable(WDTO_4S); // habilita o watchdog

}

void loop(void){
if ( radio.available() ){
bool done = false;
while (!done){
done = radio.read( comunica, sizeof(comunica) );
if(comunica[0]==123){
digitalWrite(3, HIGH);
delay(1000);
digitalWrite(3, LOW);
}
else{
digitalWrite(3, LOW); }
}
}

delay(100);
wdt_reset(); // reseta o watchdog,
}

Modulos nrf.JPG

Isto ja foi aqui discutido antes e pode ser o que te esta a afectar, mas a biblioteca do maniacbug (a RF24.h) tem varios bugs...

Um deles tem a ver com a potencia... outros tem a ver com a maneira como o radio envia dados (colocando logo o radio em sleep de seguida). Eu tambem estava a nora com esses radios ate que abri a biblioteca e descobri o tal bug de colocar o radio a dormir. comentei uma linha (infelizmente nao te sei dizer ao certo qual, mas esta aqui no forum) e passou a funcionar melhor.

Depois pesquisei na net e eis que descobri uma biblioteca dum tal de Greg Copeland que fez um estudo a serio e emendou muita coisa.

http://maniacalbits.blogspot.com/2013/04/new-rf24-driver-release-fork.html

Quanto ao condensador... 4.7uF nao faz cocegas sequer. Mete algo maior tipo 100 (tambem te posso dizer o valor que fez o meu Mega comecar a funcionar, mas so para a semana que vem).

O shield podera estar correcto. Eu desenhei um ha tempos e esta a funcionar. Se quiseres daqui a cerca de uma semana posso colocar aqui o desenho.

Bubulindo,

Cara, muuuuuuuuuuuito obrigado por me dar alguma resposta. Tava maluco pois parecia que eu era o único aqui no Brasil e estar buscando entender esses radios, visto que se você falar em xbee tem uma porrada de gente mexendo, já quando se toca no assunto dos nrf24l01, a coisa vira um tremendo silencio.

Dei uma olhada no link que vocÊ postou ( http://maniacalbits.blogspot.com.br/2013/04/new-rf24-driver-release-fork.html ) pelo que entendi o Greg copeland não criou uma nova biblioteca, ele fez como vocÊ, ou seja, ele pegou a rf24 do maniacbug e saiu corrigindo defeitos, outra coisa que notei, é que mesmo fazendo alterações, os comandos continuam absolutamente os mesmos.

Bem, vou dar uma testada pra ver, e vou querer sim saber qual capacitor você usou.

Muuuito obrigado, amigo.

haha!

Se prestar um pouco mais de atenção no que bubulindo escreve vai perceber que ele é português.

Por exemplo, ele escreveu "afectar" se fosse brasileiro seria "afetar". :)

Olá Fernando garcia,

Cara, seja o bubulindo Brasileiro ou irmão portugues, eu só tenho a agradecer a ele por apontar um caminho a serguir.

VocÊ já mexeu com os nrf24l01 ???

Funciona melhor?

Infelizmente não.

No momento estou apanhando do RFM12B. :(

Eu perguntei acerca do nRF com a biblioteca do greg copeland.

Sem saber qual e o problema ou onde falha e impossivel de dar uma ajuda melhor. :confused:

Bubulindo, eu estava respondendo a pergunta que ele me fez. :D

Olá Bubulindo e fernandogarcia,

O projeto começou a funcionar, agora preciso colocar ele em teste mais exaustivos pois da ultima vez ele funcionou por um tempo, algo como uma semana e ai os rádios pararam.

Bem, para funcionar tive que seguir 2 dos conselhor do bubulindo e criar mais um artificio:

O que fiz para funcionar:

1º - Seguindo o conselho do bubulindo eu troquei a RF24 do maniabug pela do Greg Copeland, mas só isso não resolveu, percebi que usando os nrf24l01+ (a versão menor do radio) ele realmente ficava mais estável, mas quando parti para o nrf24l01+pa+lna ele continuou funcionando de forma intermitente.

2º - Tambem seguindo o conselho do bubulindo, procurei aumentar o capacitor, pois estava usando um de 4.7uF , dai exagerei e coloquei logo um de 100uF, dai o radio nrf24l01+pa+lna começou a funcionar, mas dava algumas intermitencias.

3º - Agora foi por minha conta, criei uma rotina em que o radio faz uma varredura começando pela potencia menor, e fica aguardando uma resposta, se não vier, tenta naquela potencia por 10 vezes, não vindo resposta ele vai aumentando a potencia e tenta mais 10 varreduras, nisso ele vai fazendo até chegar ao nível MAX de potencia.

Juntando as 3 soluções os radios passaram a funcionar e dar resultados melhores e mais estáveis, os quais agradeço a vocês dois. Porem, terei que fazer mais testes pra ver se realmente foi encontrada a solução definitiva.

Mesmo assim desejo aqui especialmente ao Bubulindo meu muito obrigado.

Deve-se tomar cuidado que a china está mandando um monte de nrf24l01+ fakes...

Ja perguntei isto anteriormente, mas ninguem respondeu... como e que se sabe se e um fake ou nao?

Não é tão fácil de saver quál é o fake, neste site: http://hackaday.com/2015/02/23/nordic-nrf24l01-real-vs-fake/

Falam que as diferenças são que os fake usam tecnologia de 350nm para criar seus chips, e a original 250nm (um pouco mais pequenos), por causa disso, o fake tem um consumo um pouco maior e é menos sensivel.

Lendo o blog do cara que fiz o fork da biblioteca, achei a linea que fala sobre desligar o modulo:

Na linha 498 do atual estado da biblioteca de maniacbug

powerDown();

ele desliga o modulo e nunca coloca um PowerUp() para voltar, pelo tanto na teoría só o primeiro envío ia ser o correcto.

Eu estou fazendo minhas proprias modificacões da bibliteca pra tentar optimizar com meus requisitos. Muito obrigado por esse link bubulindo.

Weideraju, você acha que conseguiu uma melhora e estabilidade com os módulos?

Se pesquisares por essa função vais encontrar um post meu a referir o mesmo. Ainda assim, é bom ver que existe quem veja o que está dentro das bibliotecas. ;)

Olá pessoal! Bom ver textos em português por aqui. Não me sinto tão estranho :slight_smile:
Sou novato no assunto de nRF24L01, então já sabem né? Tenta, tenta, tenta e nada … nada … nada.
Preciso apenas receber um sinal de que um sensor saiu de 0 para 1 a 200m de distancia. Simples assim, mas para acertar a comunicação entre os rádios tá sofrido.
Tentei comunicar dois módulos com antena impressa da Nordic na sala de casa mesmo, mas não vai. Tenho dois com antena a caminho e pretendo utilizá-los para alcance de 200m.
Tentei várias bibliotecas, vários exemplos, várias combinações e mexidas e nada. Tudo limitado a software.
Só encontrei bibliotecas e fóruns de 2, 3, 5 anos atrás. Não sei mais o que é mais atual e válido em termos de melhorias.
Me parece que vocês desse fórum já conquistaram experiência.
Por favor, alguém poderia me dar um ordem de passos de melhoria a seguir? Refiro-me a qual capacitor utilizar (caramica ou poliéster e quantos mF), qual biblioteca mais recomendada, qual exemplo mais simples para exercício, etc. Ou seja, quais os pontos que vocês concluíram que os ajudaram. Agradeço muito pela ajuda. Abraços

Existem exemplos nas bibliotecas... podes começar por aí.

O condensador que eu usei no meu Mega foi de 470uF. Isto também está numa thread do fórum.

O importante é usar uma biblioteca e perceber o que se passa em vez de usar várias e confundir as coisas.

Fica-te pela do Greg Copeland, por exemplo.

Depois é ver como tens as coisas ligadas e confirmar que está tudo correcto. Já fizeste isso?

Weider, tudo bom?

Você poderia detalhar o que fez para que os módulos funcionassem à longa distancia? Se possível mostrar onde e como modificou o código.

Já obtive sucesso com o módulo de baixo alcance, porem o NRF24L01+PA+LNA não consigo fazer funcionar, mesmo usando a NRF24 do Greg Copeland.

Como que você fez a rotina para o radio fazer uma varredura começando pela potencia menor até a maior... ?

Obrigado pela ajuda!

Bom dia Galera, vou ter que ressuscitar este tropico. Então... já conseguir fazer funcionar estes módulos com alcances bem legais, mais nem sei por onde anda o código. Porém minha problemática atual e colocar para funcionar um rede mesh.. com pelo menos 10 dispositivos, sendo um mestre. Pelas pesquisas aqui verifiquei que o colega Bubulino, detectou alguns problemas nesta lib. RF24Netwoks... Fiquei quase 2 dias tentando por para funcionar o conceito abordado de NODE00 ( :sleeping: :sleeping: ).

Minha pergunta, é se é possível realizar uma rede mesh ou estrela usando a libi do Greg Copeland

Como se ressuscita um tropico???

O problema esta na biblioteca RF24... nao, tanto quanto sei, na RFnetwork. No entanto, os bugs que eu detectei nessa biblioteca seriam suficientes para que a RF24network nao funcionasse muito bem.