Como usar com Arduino - Módulo Transceptor Wireless NRF24L01 2.4GHz com Antena - BLOG MASTERWALKER SHOP
Home ARDUINO Como usar com Arduino – Módulo Transceptor Wireless NRF24L01 2.4GHz…
O Módulo Transceptor Wireless NRF24L01 2.4GHz é um dispositivo produzido pela Nordic Semiconductors. Possui baixo consumo de energia e este módulo conta com uma antena externa e um amplificador de potência embutido.
É ideal para muitas aplicações que requerem comunicações sem fio. O mesmo é compatível com o módulo NRF24L01 simples, logo, você poderá substituir ele pelo Módulo Transceptor Wireless NRF24L01 2.4GHz, ganhando uma melhor transmissão sem modificações consideráveis no seu projeto.
O Módulo Transceptor Wireless NRF24L01 2.4GHz possui longo alcance de sinal que pode chegar a 1Km (sem obstáculos) com transmissão de até 250Kbps. Esse alcance da transmissão em parte se dá pela antena de 2dBi que acompanha o módulo.
– Controlador: RFX2401C
– Tensão de operação: 1,9V – 3.6VDC
– Corrente de operação (envio): 115mA
– Corrente de operação (recebimento): 45mA
– Corrente de operação (power-down): 4.2 µA
– Frequência de operação: 2,4GHz ~ 2,52GHz
– Modulação: GMSK
– Potência máxima de saída: 20dBm
– Sensibilidade do receptor em 2Mbp: -92dBm
– Sensibilidade do receptor em 1Mbps: -95dBm
– Sensibilidade do receptor em 250kbps: -104dBm
– Ganho de PA: 20dB
– Ganho de LNA: 10dB
– Comprimento da antena: 107mm
– Taxa de transmissão em 2MB (área aberta): 520m
– Taxa de transmissão em 1MB (área aberta): 750m
– Taxa de transmissão em 250kb (área aberta): 1000m
– Quantidade de canais: 125
– Temperatura de operação: -40 a 85º celsius
Projetos com Arduino ou outras plataformas microcontroladas em que seja necessário utilizar comunicação sem fio de baixo custo.
Utilizar o Módulo Transceptor Wireless NRF24L01 2.4GHz com Antena em conjunto com o Arduino para enviar uma mensagem do transmissor para o receptor. A mensagem será exibida no monitor serial do ambiente de programação do Arduino.
02 – Arduino com Cabo USB
02 – Módulo Transceptor Wireless NRF24L01 2.4GHz com Antena
14 – Cabos Jumper macho-fêmea
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.
OBS: utilize este esquema de ligação tanto para o módulo transmissor quanto para o módulo receptor.
– Bibliotecas (instalar as duas):
Download RF24
Download RadioRead
– Código (Transmissor):
OBS: conecte o cabo USB ao Arduino e ao computador e faça o carregamento do código na placa.
#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 address[6] = "00002"; //CRIA UM ENDEREÇO PARA ENVIO DOS //DADOS (O TRANSMISSOR E O RECEPTOR DEVEM SER CONFIGURADOS COM O MESMO ENDEREÇO) void setup() { radio.begin(); //INICIALIZA A COMUNICAÇÃO SEM FIO radio.openWritingPipe(address); //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() { const char text[] = "MasterWalker Shop"; //VARIÁVEL RECEBE A MENSAGEM A SER TRANSMITIDA radio.write(&text, sizeof(text)); //ENVIA AO RECEPTOR A MENSAGEM delay(1000); //INTERVALO DE 1 SEGUNDO }
#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 address[6] = "00002"; //CRIA UM ENDEREÇO PARA ENVIO DOS
//DADOS (O TRANSMISSOR E O RECEPTOR DEVEM SER CONFIGURADOS COM O MESMO ENDEREÇO)
radio.begin(); //INICIALIZA A COMUNICAÇÃO SEM FIO
radio.openWritingPipe(address); //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)
const char text[] = "MasterWalker Shop"; //VARIÁVEL RECEBE A MENSAGEM A SER TRANSMITIDA
radio.write(&text, sizeof(text)); //ENVIA AO RECEPTOR A MENSAGEM
– Código (Receptor):
#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 address[6] = "00002"; //CRIA UM ENDEREÇO PARA ENVIO DOS //DADOS (O TRANSMISSOR E O RECEPTOR DEVEM SER CONFIGURADOS COM O MESMO ENDEREÇO) void setup() { Serial.begin(9600); //INICIALIZA A SERIAL radio.begin(); //INICIALIZA A COMUNICAÇÃO SEM FIO radio.openReadingPipe(0, address); //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(&text, sizeof(text)); //LÊ OS DADOS RECEBIDOS Serial.println(text); //IMPRIME NA SERIAL OS DADOS RECEBIDOS } }
radio.openReadingPipe(0, address); //DEFINE O ENDEREÇO PARA RECEBIMENTO DE DADOS VINDOS DO TRANSMISSOR
radio.startListening(); //DEFINE O MÓDULO COMO RECEPTOR (NÃO ENVIA DADOS)
if (radio.available()) { //SE A COMUNICAÇÃO ESTIVER HABILITADA, FAZ
char text[32] = ""; //VARIÁVEL RESPONSÁVEL POR ARMAZENAR OS DADOS RECEBIDOS
radio.read(&text, sizeof(text)); //LÊ OS DADOS RECEBIDOS
Serial.println(text); //IMPRIME NA SERIAL OS DADOS RECEBIDOS
Postagem anterior: Como usar com Arduino – Sensor Analógico de Refletância QRE1113
Próxima postagem: Como usar com Arduino – Sensor Infravermelho Reflexivo de Obstáculo
- Descrição: A válvula solenoide é um tipo de atuador…
Como usar com Arduino – Sensor de Pressão e Temperatura BMP180
- Descrição: O Sensor de Pressão e Temperatura BMP180 que também é…
Existem 50 comentários para esta postagem
Jack Morris	 19 de janeiro de 2019 às 02:22
Revisem o esquemático para a alimentação dos módulos. A imagem mostra a conexão com a alimentação de 5V no Arduino, sendo que o módulo opera com 3,3V.
Euler Oliveira	Autor 19 de janeiro de 2019 às 07:26
Olá Jack Morris.
Já foi corrigido o esquema de ligação.
Julio Silva	 25 de janeiro de 2019 às 14:13
#include //INCLUSÃO DE BIBLIOTECA
ao compilar dame o seguinte erro
Euler Oliveira	Autor 25 de janeiro de 2019 às 14:28
Depois do esquema de ligação no texto, tem o link para download da biblioteca RadioRead.
Você deve baixar a biblioteca e adicionar no ambiente de programação do Arduino.
adriano	 23 de março de 2020 às 22:57
ola amigo , quando eu importei essa biblioteca no rar pro adruino o erro se corrigiu
ELVIS PATRIK PEREIRA	 12 de fevereiro de 2019 às 18:48
Ola. Estou tentando realizar a comunicação entre os transmissores, mas utilizando um Arduino Uno e um Arduino Mega.
Não estou conseguindo comunicação, oque poderia ser alterado para funcionar?
Euler Oliveira	Autor 12 de fevereiro de 2019 às 21:20
Alguns dos pinos no Mega 2560 mudam. O SCK é o pino 52, o MOSI é o pino 51 e o MISO é o pino 50.
ELVIS PATRIK PEREIRA	 13 de fevereiro de 2019 às 11:44
então, se eu alterar os pinos para essa configuração (no Mega), deverá funcionar?
Emilly	 11 de maio de 2020 às 20:40
Olá, Boa noite! Talvez alguém possa me ajudar, quero fazer o transmissor começar a emitir através de uma variável qualquer, exemplo: 'a'. Porém todas as vezes que programo o módulo transmissor com a condição if, ele não comunica mais, alguém pode me dar uma ajuda? A programação está igual a do site, so modifiquei o void loop dessa forma:
char tecla = Serial.read ();
If (tecla == 'a'){ igual ao do site}
Parabéns pelo trabalho do site, acompanho já a algum tempo!
ELVIS PATRIK PEREIRA	 13 de fevereiro de 2019 às 12:24
Alterei os fios e consegui resposta, porém, não aparece o texto. Então tentei algumas alterações básicas…
de: const byte address[6] = "00002";
para: const uint64_t address = 0xE8E8F0F0A1LL;
de: const char text[] = "MasterWalker Shop";
para: String text = "MasterWalker Shop";
de: char text[32] = "";
para: String text = "";
… e ainda assim, o texto não aparece.
Oque pode ser? :/
Euler Oliveira	Autor 17 de fevereiro de 2019 às 09:30
Se não está aparecendo o texto na serial, como fez para identificar que os módulos estão respondendo?
Verifique seu esquema de ligação e utilize os códigos conforme disponibilizado na postagem. Verifique também se a velocidade de comunicação da serial está configurado corretamente.
ELVIS PEREIRA	 19 de fevereiro de 2019 às 16:06
por que apenas o texto não esta aparecendo….
realizei a conexão do Arduíno Mega no Adaptador do NRF24L01 + PA + LNA (50,51,52) e conectei o Arduíno Uno em um segundo adaptador conforme mostra no exemplo o Arduíno Uno esta como receptor e no Monitor (Serial.begin)adiciona novas linhas, mas o texto não aparece.
ELVIS PATRIK PEREIRA	 25 de fevereiro de 2019 às 18:18
Ja achei o problema. Eu estava testando o código com os dois módulos NRF24L01, conectados cada um em um adaptador. Resolvi tirar os adaptadores para testar, e ligar direto nos módulos. Pronto! Funcionando!
ELVIS PATRIK PEREIRA	 15 de fevereiro de 2019 às 23:08
Boa noite Euler. por favor, poderia me ajudar?
felipe	 14 de março de 2019 às 16:02
boa tarde, como faço ara mandar um sinal analógico ? por exemplo um potenciômetro
pedro	 21 de abril de 2019 às 20:19
no arquivo zip não tem a biblioteca
Euler Oliveira	Autor 22 de abril de 2019 às 09:34
Arquivo verificado e a biblioteca está presente sim.
MAYCON DE ALMEIDA SILVA	 17 de maio de 2019 às 14:52
como faço para mandar um caractere por vez?
Tipo mandar uma letra 'A' e uma letra 'a' do transmissor para o receptor.
Fauze Ribas Filho	 11 de junho de 2019 às 16:17
estou tentando utilizar os modulos de comunicação com o arduino nano porem sem sucesso, tem alguma coisa especifica para fazer eles funcionarem no nano?
Euler Oliveira	Autor 11 de junho de 2019 às 18:21
Olá Fauze.
O esquema de ligação com o Nano é o mesmo do Uno. Está recebendo algum erro ou o código carrega normalmente, mas a comunicação entre os módulos não ocorre?
Leandro	 14 de junho de 2019 às 16:51
Eu estou com o mesmo problema, copia sem erro, mas não ocorre comunicação entre os módulos. Já fiz um teste com o exemplo de scanner que vem na biblioteca e funcionou bem. Você poderia me ajudar?
Euler Oliveira	Autor 14 de junho de 2019 às 18:42
Utilizando o mesmo esquema de ligação desta postagem, funcionou com um exemplo da biblioteca? Os exemplos da biblioteca senão em engano, estão configurados para funcionar com a velocidade da serial em 115200 bauds e os pinos CE e CSN não são o 9 e o 10. O código da postagem está configurado para 9600 bauds.
Chegou a verificar se no monitor serial está definido a comunicação em 9600?
Ricardo	 18 de agosto de 2019 às 16:59
ta falatando a library NRFL24L01..
Euler Oliveira	Autor 21 de agosto de 2019 às 10:31
Na verdade faltava a biblioteca RF24.
Já atualizei a postagem e inseri a biblioteca faltante.
Altair	 7 de outubro de 2019 às 13:31
Não consigo de jeito maneira a transmissão. Tem certeza que está tudo correto tanto no programa quanto na ligação? Estou usando um modulo NRF24L01 com aquela antena interna. Funciona também?
Euler Oliveira	Autor 7 de outubro de 2019 às 14:00
Tenho absoluta certeza, até porque, na postagem há um vídeo mostrando o resultado final dos módulos em funcionamento conforme descrito nos passos do tutorial.
A versão simples do NRF24L01 temos em outro tutorial, contudo, os passos e código são idênticos:
https://blogmasterwalkershop.com.br/arduino/como-usar-com-arduino-modulo-transceptor-wireless-2-4ghz-nrf24l01/
Marcio	 17 de outubro de 2019 às 10:46
Precisa utilizar as duas bibliotecas:
Apenas uma delas já funciona o projeto?
Euler Oliveira	Autor 17 de outubro de 2019 às 12:47
Deve ser utilizado as duas bibliotecas disponibilizadas na postagem
Sebastião	 15 de dezembro de 2019 às 14:29
E possível alterar o código do endereço, como se eu quisesse colocar senha, para não entrar em conflito com outros partes de nrf?
Euler Oliveira	Autor 15 de dezembro de 2019 às 16:43
Sim, deve ser trocado caso tenha vários dispositivos NRF24L01.
Sebastião	 16 de dezembro de 2019 às 20:22
E como faço isso? Se for no "0xF0F0F0F0E1LL", tentei e fica dando erro de variável não declarada. Acho que estou alterando dígitos que não podem ser mudados, pois, o único que consegui mudar sem dar erro foi o "1". Mas aí, só terei de zero a nove possibilidades. Sabe me orientar? Abraços.
Euler Oliveira	Autor 16 de dezembro de 2019 às 21:48
Você deve manter o padrão do endereço numérico. Compilei o código com o endereço 99999 e não deu nenhum erro.
Teste o endereço 99999 e vá alternando os valores mantendo o formato de 5 casas e veja se irá funcionar.
Matheus	 20 de janeiro de 2020 às 11:53
Bom dia, amigo Euler! Como sempre, parabéns pelo ótimo trabalho, facilita muito o aprendizado de todos.
Gostaria de saber se com esse módulo é possível transmitir dados de um sensor também conectado ao arduino "em campo" para um arduino também com esse módulo num escritório, por exemplo. Isso pelo que eu entendi dá pra fazer, me corrija se eu estiver errado. Agora vem a dúvida de fato: caso o arduino que esteja no escritório recebendo os dados esteja conectado com um ethernet shield, é possível passar os dados recebidos para um banco de dados normalmente? Criando assim um sistema onde uma placa captura os dados em campo e os passa sem fio para outra placa e esta faz o processo de enviar os dados para o banco de dados.
Matheus	 21 de janeiro de 2020 às 09:56
CRISTOFER GAIER SAIS	 11 de fevereiro de 2020 às 11:35
Eu compilei o sketch em meus dois arduinos, porém a serial do receptor apenas imprime "??????????" na tela, o que isto significa?
Euler Oliveira	Autor 11 de fevereiro de 2020 às 11:42
Olá Cristofer.
Significa que alguma ligação entre o módulo e a placa Arduino pode estar errada ou que a taxa da serial está divergente do código.
Danilo Olivera	 30 de junho de 2020 às 00:47
Euler boa noite, queria antes de mais nada agradecer por compartilhar seus conhecimentos, e que o tutorial é muito bem explicado, porém eu tenho uma dúvida.
Eu tenho a possibilidadede usar o NRF24L01 para conectar à minha rede Wifi ? Eu queria acessar o Arduino Uno pela IDE pelo NRF24L01 por um IP fixo, em vez de conectar o USB. Caso positivo acredito que eu consiga exportar meus códigos via NRF24 e usar o APP no Celular para ascender leds ou outros Módulos como motores escravos. Obrigado.
Euler Oliveira	Autor 30 de junho de 2020 às 08:31
O NRF24L01 não tem suporte a rede WiFi.
Danilo Oliveira	 1 de julho de 2020 às 15:33
Apenas recepção e Transmissão via CLI .. Entendi, fora o shield ethernet, teria algum módulo que me indicaria para fazer a conexão na Rede Wifi ?
Euler Oliveira	Autor 6 de julho de 2020 às 10:08
Veja sobre o ESP8266:
https://blogmasterwalkershop.com.br/arduino/como-usar-com-arduino-modulo-wifi-esp8266-esp-01/
adriano Mesquita	 3 de julho de 2020 às 00:02
Caro Euler, boa noite. primeiramente gostaria de parabenizá-lo por compartilhar sua experiência. Excelente blog.
Gostaria de saber se eu poderia ligar 3 arduinos uno como transmissores(3 unos + 3 NRF24L01) e colocar um arduino mega como receptor(1 arduino mega + 1 NRF24L01)?
Euler Oliveira	Autor 6 de julho de 2020 às 10:11
Sim, é possível desde que defina um endereço para cada transmissor.
breno lima	 4 de agosto de 2020 às 00:16
um unico nrf pode trabalhar como rx e tx ao mesmo tempo?
Michel	 6 de agosto de 2020 às 21:34
Voce pode me disponibilizar o arquivo do fritzing com o NFR24L01? os que eu tenho não vem com antena
Euler Oliveira	Autor 7 de agosto de 2020 às 09:20
Na verdade este item não foi retirado do Fritzing.
Michel	 8 de agosto de 2020 às 13:36
então foi de que programa?
Euler Oliveira	Autor 10 de agosto de 2020 às 08:25
Foi um desenho feito por um membro aqui da empresa.
Bruno	 7 de dezembro de 2020 às 22:43
Estou usando dois arduinos nano, e não consigo comunicação.
Fernando Gonçalves Carvalho	 13 de setembro de 2021 às 21:33
Boa noite, tive o mesmo problema do ELVIS PATRIK PEREIRA, acima, não teve jeito de funcionar com os adaptadores alimentados por 5 ou mesmo por 3,3V. Só funcionou sem os adaptadores. Achei que um deles estava queimado mas não foi isso porque testei colocando adaptador somente no transmissor ou somente no receptor e testando os dois adaptadores em cada um dos dois receptor ou transmissor de cada vez. Nada deu certo. Em nenhum momento inverti os pólos dos adaptadores.