- Descrição: O Módulo Sensor (Detector) de Inclinação KY-020 é uma placa…
Como usar com Arduino – Módulo Transceptor Wireless 2.4GHz NRF24L01
– Descrição:
O Módulo Transceptor Wireless 2.4GHz – NRF24L01 é um transceptor produzido pela Nordic Semiconductors. Possui baixo consumo de energia e baixo custo para aquisição. É ideal para muitas aplicações que requerem comunicações sem fio.
– Especificações e características:
– Tensão de operação: 1,9V – 3.6VDC
– Corrente de operação (envio): 11,3mA
– Corrente de operação (recebimento): 12,3mA
– Corrente de operação (power-down): 900nA
– Sensibilidade do receptor em 250kbps: -85dBm
– Taxa de transmissão em 250kb (área aberta): 100m
– Quantidade de canais: 125
– Antena integrada a placa
– Temperatura de operação: -40 a 85º celsius
– Aplicações:
Projetos com Arduino ou outras plataformas microcontroladas em que seja necessário utilizar comunicação sem fio de baixo custo.
– Proposta da prática:
Em um Arduino conectar o Módulo Transceptor Wireless 2.4GHz NRF24L01 e conectar também um botão. Enquanto o botão estiver pressionado, o comando (dado) será enviado para o segundo Transceptor que vai estar conectado em um outro Arduino que também vai estar conectado a um LED. Enquanto o comando (dado) estiver sendo recebido, o LED vai permanecer aceso.
– Lista dos itens necessários:
02 – Arduino com Cabo USB
02 – Módulo Transceptor Wireless 2.4GHz NRF24L01
01 – LED Difuso 5mm Vermelho
01 – Chave Táctil / Push Button
01 – Resistor de 150Ω
02 – Protoboard
18 – Cabos Jumper macho-macho
01 – Fonte DC 9V 1A Bivolt Chaveada (para um dos Arduinos)
OBS: você também pode alimentar os dois Arduinos pelo PC através de dois cabos USB.
– Esquema de ligação da prática (Transmissor):
– Biblioteca:
– Importando bibliotecas para o ambiente de programação do Arduino:
Arduino – Importando bibliotecas para a IDE
– Tutorial de instalação e configuração do ambiente de programação do Arduino:
Arduino – Instalação e Configuração da IDE no Windows
– Código (Transmissor):
OBS: conecte o cabo USB ao Arduino e ao computador e faça o carregamento do código na placa.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#include <SPI.h> //INCLUSÃO DE BIBLIOTECA #include <nRF24L01.h> //INCLUSÃO DE BIBLIOTECA #include <RF24.h> //INCLUSÃO DE BIBLIOTECA RF24 radio(9, 10); //CRIA UMA INSTÂNCIA UTILIZANDO OS PINOS (CE, CSN) const byte endereco[6] = "00001"; //CRIA UM ENDEREÇO PARA ENVIO DOS //DADOS (O TRANSMISSOR E O RECEPTOR DEVEM SER CONFIGURADOS COM O MESMO ENDEREÇO) int pinoBotao = 2; //PINO DIGITAL UTILIZADO PELO BOTÃO int estadoBotao = 0; //VARIÁVEL PARA ARMAZENAR O ESTADO DO BOTÃO void setup() { pinMode(pinoBotao, INPUT_PULLUP); //DEFINE O PINO COMO ENTRADA / "_PULLUP" É PARA ATIVAR O RESISTOR INTERNO //DO ARDUINO PARA GARANTIR QUE NÃO EXISTA FLUTUAÇÃO ENTRE 0 (LOW) E 1 (HIGH) radio.begin(); //INICIALIZA A COMUNICAÇÃO SEM FIO radio.openWritingPipe(endereco); //DEFINE O ENDEREÇO PARA ENVIO DE DADOS AO RECEPTOR radio.setPALevel(RF24_PA_HIGH); //DEFINE O NÍVEL DO AMPLIFICADOR DE POTÊNCIA radio.stopListening(); //DEFINE O MÓDULO COMO TRANSMISSOR (NÃO RECEBE DADOS) } void loop(){ if(digitalRead(pinoBotao) == HIGH){ //SE A LEITURA DO PINO FOR IGUAL A HIGH, FAZ estadoBotao = 1; //VARIÁVEL RECEBE VALOR 1 radio.write(&estadoBotao, sizeof(estadoBotao)); //ENVIA AO RECEPTOR OS DADOS }else{ //SENÃO, FAZ if(digitalRead(pinoBotao) == LOW){ //SE A LEITURA DO PINO FOR IGUAL A LOW, FAZ estadoBotao = 0; //VARIÁVEL RECEBE VALOR 0 radio.write(&estadoBotao, sizeof(estadoBotao)); //ENVIA AO RECEPTOR OS DADOS } } } |
– Esquema de ligação da prática (Receptor):
– Código (Receptor):
OBS: conecte o cabo USB ao Arduino e ao computador e faça o carregamento do código na placa.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
#include <SPI.h> //INCLUSÃO DE BIBLIOTECA #include <nRF24L01.h> //INCLUSÃO DE BIBLIOTECA #include <RF24.h> //INCLUSÃO DE BIBLIOTECA RF24 radio(9, 10); //CRIA UMA INSTÂNCIA UTILIZANDO OS PINOS (CE, CSN) const byte endereco[6] = "00001"; //CRIA UM ENDEREÇO PARA ENVIO DOS //DADOS (O TRANSMISSOR E O RECEPTOR DEVEM SER CONFIGURADOS COM O MESMO ENDEREÇO) int pinoLed = 3; //PINO DIGITAL UTILIZADO PELO LED int estadoBotao = 1; //VARIÁVEL PARA ARMAZENAR O ESTADO DO BOTÃO void setup() { pinMode(pinoLed, OUTPUT); //DEFINE O PINO COMO SAÍDA digitalWrite(pinoLed, LOW); //LED INICIA DESLIGADO radio.begin(); //INICIALIZA A COMUNICAÇÃO SEM FIO radio.openReadingPipe(0, endereco);//DEFINE O ENDEREÇO PARA RECEBIMENTO DE DADOS VINDOS DO TRANSMISSOR radio.setPALevel(RF24_PA_HIGH); //DEFINE O NÍVEL DO AMPLIFICADOR DE POTÊNCIA radio.startListening(); //DEFINE O MÓDULO COMO RECEPTOR (NÃO ENVIA DADOS) } void loop(){ if (radio.available()){ //SE A COMUNICAÇÃO ESTIVER HABILITADA, FAZ char text[32] = ""; //VARIÁVEL RESPONSÁVEL POR ARMAZENAR OS DADOS RECEBIDOS radio.read(&estadoBotao, sizeof(estadoBotao)); // LÊ OS DADOS RECEBIDOS if(estadoBotao == 0){ //SE O PARÂMETRO RECEBIDO (ESTADO ATUAL DO BOTÃO) FOR IGUAL A 0 (PRESSIONADO), FAZ digitalWrite(pinoLed, HIGH); //LIGA O LED }else{ if(estadoBotao == 1){ //SE O PARÂMETRO RECEBIDO (ESTADO ATUAL DO BOTÃO) FOR IGUAL A 1 (NÃO PRESSIONADO), FAZ digitalWrite(pinoLed, LOW); //DESLIGA O LED } } } delay(5); //INTERVALO DE 5 MILISSEGUNDOS } |
– Resultado final:
Gostou desta prática? Então deixa seu comentário, dúvida ou sugestão aí embaixo!
Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop
Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.
Obrigado e até a próxima!
Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.
Próxima postagem: Como usar com Arduino – Módulo Relé 5V de 2 Canais
Olá bom dia, eu fiz esse projeto e deu certo pra caramba, gostaria de saber se consigo acrescentar outro receptor.. um transmissor para dois receptores.
Olá tudo bem!
Parabéns pelo texto, muito bem explicado.
Este exemplo esta servindo de base para um teste aqui na empresa.
Obrigado por compartilhar conhecimento.
Abraços
Roger Aragão
Olá Euler, gostaria de saber qual software você utiliza para fazer os esquemas de ligação, como nas imagens acima. Você utiliza algum simulador em específico?
Estou em busca de um software/simulador que consiga testar um projeto com o NRF24L01, porém não encontro um que possua essa placa.
Olá Vinícius.
Agradeço pelo comentário!
Algumas imagens nós fazemos aqui na empresa e outras a gente usa o Fritzing.
Bom dia Euler!
Tudo bem com você?!
Parabéns por este texto sobre o módulo nRF24l01! É muito instrutivo!
Com o conhecimento adquirido fiz experimentações de comunicação.
Numa delas, comunicação entre dois arduinos cada um com um módulo nRF24l01+ PA/LNA (o que usa antena rosqueável) – onde o transmissor enviava a mensagem “Uma ideia tomando forma.” para o receptor.
Funcionou! E funcionou muitíssimo bem!
Mas quando troquei os módulos de lugar – o do transmissor passei para o receptor e o do receptor passei para o transmissor – não funcionou, não houve comunicação.
Não importando o código, um módulo funciona somente com transmissor e o outro somente como receptor.
Comprei mais dois módulos no mesmo lugar onde comprei os dois primeiros.
O problema se repetiu.
Será que sou azarado e comprei quatro módulos com defeito?
Já aconteceu isso com você? Tem alguma sugestão de como resolvê-lo?
Pesquisei na Internet mas não encontrei um problema parecido ou igual ao meu.
Desde já muito obrigado por tua atenção e gentileza!
Olá César.
Agradeço pelo comentário e reconhecimento!
Recomendo que troque os endereços dos módulos e teste novamente.
Boa tarde, Euler.
Estou lendo duas portas analógicas com um arduino e quero enviar essas leituras para o outro. Fiz lendo apenas uma porta e funcionou, porem quando acrescento mais leituras não funciona. Como posso enviar essas leituras quando leio mais de uma porta analógica ? Obrigado.
Olá Euler Oliveira.
Obrigado pelo resposta, e pelo conteúdo que administra valeu muito bom.
Vou olhar esses detalhes que me informou.
Agradeço.
Olá sou aluno de eletronica e estou utilizando o comunicador em meu tcc porem um problema foi encontrado que o nRF24L01 só esta funcionando quando clico no reset do arduino. Tem alguma solução para isso ?
Olá Matheus.
Agradeço pelo comentário!
Antes de qualquer coisa deverá verificar o esquema de ligação montado. O código não há o que conferir, pois foi testado antes de ser compartilhado aqui no Blog e no final da postagem tem o vídeo mostrando que a prática é totalmente funcional.
Caso não resolva, o ideal é testar o módulo com outra placa Arduino ou usar um outro módulo NRF24L01 para validar um possível defeito neste que está usando.
Se estiver utilizando um Arduíno chines recomendo uma alimentação de 3.3V externa pois tive bastante problemas com os 3.3v dos arduinos chineses, lembrando que se estiver trabalhando com a potencia total do modulo ele vai consumir mais.
Ola amigo. Obrigado pelo post.
Não consigo faze-lo reconhecer a linha #include //INCLUSÃO DE BIBLIOTECA
Instalei tudo que achei nas bibliotecas, as duas indicadas e estou com a última versão do IDE.
Obrigado 😉
Olá Ale.
Agradeço pelo comentário!
As bibliotecas a serem instaladas são somente as disponibilizadas na postagem e outras similares deverão ser removidas.
Provavelmente está instalando as bibliotecas em alguma pasta errada.
Euler, boa noite,
Estou tendo uma grande dificuldade com meu projeto, não consigo fazê-lo funcionar.
Já testei todos códigos possíveis, refiz as ligações 10x e troquei todos os componentes, já não sei o que fazer, me da um HELP! pfvr!
nrf24l01 + pa + lna
Não consigo fazer a comunicação, até mesmo com seu código.
Olá Filipe.
Agradeço pelo comentário!
Já trocou inclusive os NRF24L01 e suas respectivas antenas? Trocou a placa Arduino também?
Sendo sincero: não tem segredo no uso deste módulo. Conforme pode ser visto no vídeo da postagem, o esquema de ligação é código são totalmente funcionais.
Felipe boa tarde!
Conseguiu fazer funcionar? Estou com o mesmo problema, já troquei todos os componentes, já refiz várias vezes as conexões, tentei vários projetos e nada de funcionar.
Olá como eu adicionaria um diaplaynokia 5110 ao projeto?
Pois o display Nokia utiliza os pinos que o módulo NRF24L01 utiliza.
Pode me ajudar por favor?
Obrigado
Olá Marcio.
Agradeço pelo comentário!
Não temos nenhuma postagem que utiliza os dois itens juntos.
Recomendo que leia a documentação das bibliotecas de ambos os itens e veja se há opção de substituição dos pinos utilizados por eles.
Projeto top amigo! pra adicionar mais pushbuttons no projeto é obrigado adicionar mais pipes? Ou em um pipes pode enviar dois valores de botões simutaniamente?