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

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 alcance 500m no mínimo, de e tô meio que no desespero.

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

tá aqui os dois tipos:



Criei uma shield pra usar esses radios no arduino UNO, ela foi feita pra uso com a biblioteca RF24.h tá aqui ela:




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 código 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 potente,  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 potencia (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 alguém 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 rádios.

  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,
}





  

Exibições: 10264

Responder esta

Respostas a este tópico

SHOW! Ajudou e muito !!!

O problema era, 

1 = o pipe estava errado, correto é (const uint64_t pipe = 0xE8E8F0F0E1LL;)

2 = onde é 1 estava 0  (radio.openReadingPipe(1, pipe);)

Valeu !!!!!

Agora vou testar a distancia utilizando os capacitares. Abs!!!!

Bruno

Para quem tiver dúvidas ... Segue alteração funcionando...

Forte abraço !!!

Pinos arduino UNO: 

1 GND

2 Vcc

3 pino 7

4 pino 8

5 pino 13

6 pino 11

7 pino 12

8 pino 2

Obs. incluir um capacitor em cada nRF24l01 =  470uf (+ no vcc) (- no gnd)

//TRANSMISSOR

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

RF24 radio(7, 8);
const uint64_t pipe = 0xE8E8F0F0E1LL;

void setup()
{
radio.begin();
radio.setRetries(15, 15);
radio.openWritingPipe(pipe);
radio.stopListening();
}

void loop()
{
const char text[32] = "TESTE";
radio.write(&text, sizeof(text));
delay(1000);
}

// RECEPTOR

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

RF24 radio(7, 8);
const uint64_t pipe = 0xE8E8F0F0E1LL;

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

void loop()
{
if (radio.available())
{
char text[32] = {0};
radio.read(&text, sizeof(text));
Serial.println(text);
delay(1000);
}
}

Weider, Tudo bem? 

Será que vc consegue me ajudar? 

Estou tentando passar dados de 3 variáveis via nrf24l01, porém estou levando um surra ! 

Tipo 

char Var1[32] = "Honda"

char Var2[32]="CRV"

char Var3[32]="2017"

char Vargeral[32]= var1+var2+var3;

radio.write(&Vargeral,sizeof(Vargeral));

Será que consegue dar uma luz como posso concatenar estas variáveis? Inclusive já tentei com o concat, mas tbm não funfa... 

ACHEI !!!!!

char text[128];
text[0] = '\0';
strcat(text, Var1);
strcat(text, Var2);
strcat(text, Var3);
radio.write(&text,sizeof(text));

Parabens Antonio Bruno,

    E parabens por ter não apenas exposto sua duvida, mas por ter compartilhado a solução quando conseguiu, Esse é o espírito do mundo Arduno.

    Tenho me resguardado a dar respostas exporadicas como essa, porem, minha intenção no futuro é escrever um tutorial completo e compartilhar,  sinto que  estou devendo,  mas fica pra o futuro.

olá Weider boa tarde, preciso de uma ajuda com algumas informações a respeito do RF24, para saber se é possível usar ele no meu projeto ou não.

estou há 2 meses pesquisando informações tentando por 2 destes pequeninos para funcionar, a web tem muita informação espalhada, que da sempre nos mesmos resultados, e aí é que surge o grande problema.

não encontro nada consistente como apostilas a respeito, (talvez seja a hora de lançarem), e o que encontro deixa o entendimento turvo.

criei um doc no word separando os comandos tentando simplificar a bagunça que sempre encontro.

escrevi assim:

____________

//inclui bibliotecas para funcionamento do RF junto ao arduino

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

//inicia funcionamento do radio

radio.begin();

//radio inicia escuta (RX) 

radio.startListening();

e etc...

___________________________________

para que desta forma eu extraia das pesquisas só o que preciso para por o projeto para funcionar.

essa é uma das dificuldades.

além disso tem o problema que muitos citam de versões da biblioteca, instabilidade de hardware e o uso de capacitor e regulador 3v3 pra viabilizar o uso e etc...

encontro também o problema da topologia de rede:

ponto a ponto,  estrela, arvore, mesh e etc...

quanto mais pesquiso mais problemas vejo, incertezas, tudo muito turvo.

preciso muito de ajuda. gostaria de fazer um projeto: automação residencial, colocar módulos nos cômodos comunicando sem fio com uma central, e esta com o PC, ou celular. para enviar comandos ler sensores, o de sempre de todo projeto residencial... é um exercício, é estudo, é hobbie é de tudo um pouco mais. e espero que consiga pois gosto muito desses estudos.

para resumir:

tenho dúvidas quanto a: endereçamento dos pontos, como comunicar em arvore, se ele ouve e escreve ao mesmo tempo ou o processo precisa ser alternado, envio de dados das portas digitais e analógicas, essas coisas.

agradeço muito se puder ajudar, posso até criar um tópico para iniciar todo processo.

agradeço desde já pela atenção e pela ajuda. e a todos da comunidade.

Estou com a mesma dificuldade do amigo Rafael Cunha. Estou começando a imaginar que meus equipamentos é que estão com defeito.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço