Saudações prezados.
Depois de muito pesquisar, consegui fazer uma transmissão consistente com o Módulo Transceptor nRF24L01....olha....não foi fácil...rsrsrrs
Ainda existe pouco material disponível para o assunto...então faço questão de compartilhar com vocês o meu feito...que é apenas o acendimento de um LED através do apertar de um botão.
Digo faço questão porque sempre que precisei do pessoal do Fórum eu fui ajudado...infelizmente não por todos..tem gente que responde uma dúvida só pra constar que "ajudou"...porque fala cada "asneira" sem tamanho..o que pode confundir ao invés de ajudar.O pior é que quando questionamos a "ajuda", o "camarada" nem dá mais as caras..acho que deve ser a vergonha bobagem num Fórum tão difundido e conceituado...mas isso não vem ao caso.
Pessoal..segue o código comentado (para 2 Arduinos UNO)...e o esquemático de ligação.
Abração a todos e espero que seja útil futuramente.
Código Emissor
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
int dados[1]; //Armazena os dados enviados pelo rádio
RF24 radio(9,10); //Inicializa a placa nos pinos 9 (CE) e 10 (CS) do Arduino
const uint64_t pipe = 0xE14BC8F482LL; //Define o endereço para comunicacao entre os módulos
int pino_botao1 = 7; //Inclui a Porta Digital 7 na estrutura da programação do módulo
void setup()
{
pinMode(7, INPUT); //Define a Porta Digital 7 para entrada de sinal para disparo do Dispositivo Secundário
digitalWrite(7,HIGH); //Define a Porta Digital 7 inicialmente em nível alto
radio.begin(); //Inicializa a comunicação entre os módulos
radio.openWritingPipe(pipe); //Entra em modo de transmissao
}
void loop()
{
if (digitalRead(pino_botao1) == LOW) //Envia o comando para disparo caso a Porta Digital 7 entre em nível baixo
{
dados[0] = 1; // salva o valor 1 no índice dos valores enviados pelo rádio
radio.write(dados, 1); // escreve o valor 1 na variável dados
}
}
Código Receptor
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
int recebidos[1]; //Armazena os dados recebidos
RF24 radio(9, 10); //Inicializa a placa nos pinos 9 (CE) e 10 (CS) do Arduino
const uint64_t pipe = 0xE14BC8F482LL; //Define o endereco para comunicaçao entre os módulos
int LED1 = 5; //Inclui a Porta Digital 5 na estrutura da programação do módulo
void setup()
{
pinMode(LED1, OUTPUT); //Define a Porta Digital 5 como saída de sinal para disparo do Dispositivo Secundário
radio.begin(); //Inicializa a comunicaçao entre os módulos
radio.openReadingPipe(1, pipe); //Entra em modo de recepcao
radio.startListening(); ////Entra em modo de recepcao
}
void loop()
{
if (radio.available()) //Verifica se há sinal de radio
{
bool done = false; //determina a variável booleana como falsa
while (!done) //executa uma rotina determinada enquanto a variável booleana é negada
{
done = radio.read(recebidos, 1); // Lê a variável transmitida
if (recebidos[0] == 1) //Se recebeu o numero 1, executa determinada ação
{
delay(10); //Tempo até executar a rotina de ativamento
digitalWrite(LED1, HIGH); //Ativa a Porta Digital 5 em nível alto para disparo do Dispositivo Secundário
}
else
{
digitalWrite(LED1, LOW); //Desativa Porta Digital 5 caso o valor recebido não seja igual ao valor 1
}
delay(100); //Tempo para reiniciar a verificação do sinal transmitido
}
}
}
Tags:
AJUDA?
ERRO na linha 30
done = radio.read(recebidos, 1); // Lê a variável transmitida
ERRO :
void value not ignored as it ought to be
codigo receptor dando erro. socorrrrrrrrrrrrrrro
nessa linha
done = radio.read(recebidos, 1); // Lê a variável transmitida
me ajudem por favor
Tentei compilar aqui, mas apresentou erro na linha abaixo.
done = radio.read(recebidos, 1);
Descrição do erro: void value not ignored as it ought to be
Wg, desculpa a demora em responder.
Cara, é o xiguinte, a biblioteca RF24 passou por varias mãos, o criador principal dela é o MANIACBUG, só que atualmente quem mantem ela é o TMRH20.
O lance é que enquanto o Maniacbug prezava pela simplicidade, o TMRH20 resolveu colocar esteroides na library.
Atualmente ela conta com suporte pra outros universos alem do arduino, como por exemplo pra o raspbery pi.
O problema é que pra mexer tanto na biblioteca ela acabou tornando ela mais pesada e incompativel com muita coisa da biblioteca original.
Resultado, exemplos que foram compilados pra uma versão da biblioteca não irão funcionar em outra versão.
Qual a solução: A solução é você abrir os exemplos que vem com a propria lib que você esta com ela instalada, e ver como é feita a comunicação dela,
Porem, pessoalmente eu uso uma versão que não é nem a original do ManiacBug nem a mais recente do TMRH20, eu uso a versão de um figuraça chamado GREG COPELAND (auto intitulado maniacbit), ela é uma versão da original mas com uma serie de correções. Dá uma olhada no google que é facil de achar.
Obrigado Weider Duart!!!
Vou dar uma olhada aqui google pra vê se encontro. Mas consegui fazer aqui um programinha que deu certo comunicar os dois módulos. Mas surgiu outro probleminha que não sei se é de Hardware ou Software. Observei que os módulos só funcionam corretamente se eu ficar tocando com o dedo o Cristal do módulo, ou seja, quando eu tiro o dedo do Cristal o programa tipo trava, quando eu volto a ficar com o dedo no Cristal o programa destrava, não consigo entender, já soldei um capacitor de 100nF entre a alimentação do módulo, mas continua do mesmo jeito.
Mais uma vez obrigado e vou dar uma olhada aqui no google nessa versão indicada.
Valeu!!!
Wg existe um modulo base a venda na china pra você ligar os NRF24L01 aos circuitos, é esse ***AQUI****,
Vamos a historia , kkk, eu adquiri recentemente um equipamentozinho que mede componentes, o nome é teste de transistores( ESSE) pois ele foi criado inicialmente pra testar esses componente, mas hoje ele testa tudo que é componente que tenha ate 3 perninhas.
Beeeem, como eu tenho alguns adaptadorezinhos desses, eu resolvi matar e perder um pra descobri como ele é feito, logo, retirei as peças, soldei perninhas nos componentes pois eles sao SMD, e...
O que descobri é que a parte ativa e que faz ele funcionar se baseia em 4 capacitores, e um regulador de voltagem, que pega os 5v e converte para os 3.3v que o NRF24L01 precisa.
Bem, esses 4 capacitores são dois conjuntos sendo.
UM CAPACITOR DE 10uF + UM CAPACITOR DE 100nF (EM PARALELO, ou seja soldado tudo junto)
Ou seja, ainda na etapa 5v antes do regulador tem um conjunto desse, e depois da saida de 3.3v do regulador tem outro conjunto.
Não fiz ainda testes na pratica, mas acredito que a brincadeira é essa aqui, solde no NRF24L01 nos pinos VCC e GND dois capacitores, primeiro coloque um eletrolitoco de 10UF, lembrando que o eletrolitico é polarizado, logo, GND na faixa branca do capacitor e o outro pino no VCC, já o capacitor de 100nF não é polarizado, pode soldar uma perna no gnd e outra no vcc que já estara com o outro capacitor, sem medo, ficando um por cima do outro.
Só lembrando, tem que colocar a mesma montagem em todos os NRFs que estiverem em sua rede.
Bem, testa ai e dá o resultado.
Weider Duarte... Fiz aqui e... por algumas vezes funcionou em apenas um único módulo, e no outro tive que ficar com o dedo no cristal kkkkkkkkkkkkkk. Alguém por aqui falou que podia ser solda fria no cristal, refiz a solda e continua do mesmo jeito. Deixando bem claro que pra funcionar sem travar o funcionamento, eu toco no cristal do módulo bem de leve, sem fazer nenhum tipo de força, e fica funcionando normal. Acho que vou adquirir o adaptador que vc me mostrou, e fazer o teste.
Wg,
Uma dica cara, os NRF24L01 fazem um sucesso tremendo, e como tudo que vem da china e faz sucesso tem lotes de fabricação de melhor e pior qualidade.
Logo, a dica é Teste outros radios, de preferencia se você compra-los de outro vendedor.
Já aconteceu isso comigo, eu comprei um lote de 20 peças, e eles falhavam pra caramba, dai achei uns radios velhos guardados e eles não davam uma travadinha sequer.
Logo aqui o lance não é comprar de vendedor A ou B, é sorte mesmo.
só uma duvida, você ta usando a versão pequena O NRF24L01+ ou a versão grande de 1km o NRF24L01+PA+LNA ?
Weider
Só me resta agora fazer isso mesmo, testar outros módulos e vê se tenho sorte com algum rsrsrsrsrs. Então, estou usando a versão para pequena distância sem antena.
Muito obrigado pelas dicas, e qualquer coisa comunico, se conseguir algum resultado positivo.
Até logo!!!
Weider
Meus módulos aqui funcionaram rsrsrsrsrs. Depois de muitas tentativas sem sucessos, resolvi fazer mais alguns testes rsrsrsrsrs. Mudei a forma de alimentação do Arduino. Passei a alimentá-los com fontes de carregadores de celular e eles funcionaram perfeitamente rsrsrsrsrs. Então continuei testando outros tipos de fontes, para verificar o comportamento deles. Então no meu caso particular, eles não irão funcionar com qualquer tipo de fonte. Testei com vários carregadores de celular, mas só funcionou com alguns, não sei se por alguma deficiência do nível de tensão entre eles, infelizmente não tenho uma explicação mais precisa.
Valeu Weider até a próxima!!!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por