Como usar com Arduino – Módulo Transceptor Wireless NRF24L01 2.4GHz com Antena

Como usar com Arduino – Módulo Transceptor Wireless NRF24L01 2.4GHz com Antena

img00_como_usar_com_arduino_modulo_transceptor_wireless_nrf24l01_2_4ghz_com_antena_ sem_fio_rf_wifi

– Descriçã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.

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.

– Especificações e características:

– 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
– Antena: 2dBi
– 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

– 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:

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.

– Lista dos itens necessários:

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.

– Esquema de ligação da prática:

OBS: utilize este esquema de ligação tanto para o módulo transmissor quanto para o módulo receptor.

img01_como_usar_com_arduino_modulo_transceptor_wireless_nrf24l01_2_4ghz_com_antena_rf_sem_fio

– Bibliotecas (instalar as duas):

Download RF24

Download RadioRead

– 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.

– Código (Receptor):

OBS: conecte o cabo USB ao Arduino e ao computador e faça o carregamento do código na placa.

– 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.



Postagem anterior:
Próxima postagem:
Postagem feita por

Formado em Engenharia da Computação, Técnico em Eletroeletrônica, Fundador e Diretor da MasterWalker Electronic Shop. Se preocupa com o aprendizado dos seus clientes e daqueles interessados em aprender sobre Arduino e plataformas embarcadas em geral.

Existem 53 comentários para esta postagem
  1. Sebastiao às 14:02

    Olá Euler e pessoal.

    Algúem pode me explicar esta linha?
    “const byte address[6]”
    Por que o número “6”?

    Abs.

  2. Michel de Witte às 10:14

    Euler, bom dia!
    Funcionou perfeitamente!
    Estou utilizando um Arduino Nano como transmissor e um Arduino UNO como resceptor.
    Uma pergunta, tem como eu transformar o receptor em um gateway adicionando um Shield Ethernet e dai passar as informações para a rede cabeada?

  3. Gabriel Galvão às 17:58

    Boa noite, é possível usar um módulo como transmissor e receptor? queria utilizar para sinais simples como mandar comando para acender um led em outro arduino e nesse outro apagar o led com um botão, enviando o sinal de volta com informação de que ele foi desligado

  4. Fernando Gonçalves Carvalho à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.

  5. Bruno às 22:43

    Amigo,
    Estou usando dois arduinos nano, e não consigo comunicação.
    O que pode ser?

  6. Michel à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 às 09:20

      Olá Michel.

      Agradeço pelo comentário!

      Na verdade este item não foi retirado do Fritzing.

  7. breno lima às 00:16

    um unico nrf pode trabalhar como rx e tx ao mesmo tempo?

  8. Danilo Olivera à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 às 08:31

      Olá Danilo.

      Agradeço pelo comentário!

      O NRF24L01 não tem suporte a rede WiFi.

      • Danilo Oliveira à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 ?

      • adriano Mesquita à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 às 10:11

          Olá Adriano.

          Agradeço pelo comentário!

          Sim, é possível desde que defina um endereço para cada transmissor.

  9. CRISTOFER GAIER SAIS às 11:35

    Bom dia!
    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 às 11:42

      Olá Cristofer.

      Agradeço pelo comentário!

      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.

  10. Matheus à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.

    Obrigado desde já.

    • Euler Oliveira Autor às 13:54

      Olá Matheus.

      Agradeço pelo comentário e reconhecimento!

      Sim, é possível implementar conforme você explicou.

  11. Marcio às 10:46

    Precisa utilizar as duas bibliotecas:

    #include
    #include

    Apenas uma delas já funciona o projeto?

    • Euler Oliveira Autor às 12:47

      Olá Marcio.

      Agradeço pelo comentário!

      Deve ser utilizado as duas bibliotecas disponibilizadas na postagem

      • Sebastião às 14:29

        Olá Euler.
        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?
        ABS

        • Euler Oliveira Autor às 16:43

          Olá Sebastião.

          Agradeço pelo comentário!

          Sim, deve ser trocado caso tenha vários dispositivos NRF24L01.

          • Sebastião à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 à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.

  12. Altair às 13:31

    Olá Euler!
    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 às 10:31

      Olá Ricardo.

      Agradeço pelo comentário!

      Na verdade faltava a biblioteca RF24.

      Já atualizei a postagem e inseri a biblioteca faltante.

      Obrigado por informar!

  13. Leandro à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 às 18:42

      Olá Leandro.

      Agradeço pelo comentário!

      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?

  14. Fauze Ribas Filho às 16:17

    Euler, bom dia!

    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 às 18:21

      Olá Fauze.

      Agradeço pelo comentário!

      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?

  15. MAYCON DE ALMEIDA SILVA à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.
    aguardo resposta!

    • Euler Oliveira Autor às 09:34

      Olá Pedro.

      Arquivo verificado e a biblioteca está presente sim.

  16. felipe às 16:02

    boa tarde, como faço ara mandar um sinal analógico ? por exemplo um potenciômetro

  17. ELVIS PATRIK PEREIRA à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 às 21:20

      Olá Elvis.

      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 às 11:44

        Boa Tarde Euler.
        então, se eu alterar os pinos para essa configuração (no Mega), deverá funcionar?

        • Emilly à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}

          Se alguém puder ajudar agradeço muito!

          Parabéns pelo trabalho do site, acompanho já a algum tempo!

      • ELVIS PATRIK PEREIRA à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;

        e também

        TRANSMISSOR
        de: const char text[] = “MasterWalker Shop”;
        para: String text = “MasterWalker Shop”;

        RECEPTOR
        de: char text[32] = “”;
        para: String text = “”;

        … e ainda assim, o texto não aparece.
        Oque pode ser? :/

        • Euler Oliveira Autor à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 à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 à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!

  18. Julio Silva às 14:13

    #include //INCLUSÃO DE BIBLIOTECA
    ao compilar dame o seguinte erro
    nRF24L01.h: No such file or directory
    pode me ajudar ?

    • Euler Oliveira Autor às 14:28

      Olá Júlio.

      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 às 22:57

      ola amigo , quando eu importei essa biblioteca no rar pro adruino o erro se corrigiu

  19. Jack Morris à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 às 07:26

      Olá Jack Morris.

      Agradeço pelo aviso.

      Já foi corrigido o esquema de ligação.

      Vlw!