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