Tutorial: Comunicação Módulo NRF24L01 com Arduino 208

Montar uma rede de comunicação sem fio utilizando Arduino é muito simples, como você já viu no post Módulo RF Transmissor + Receptor 433 Mhz AM, onde mostramos um tutorial de como utilizar esse módulo para enviar dados de um Arduino para outro. Outra forma muito fácil e barata de se montar uma rede sem fio é utilizando o módulo wireless NRF24L01 com Arduino como esse abaixo:

Módulo Wireless NRF24L01

Pinagem e Datasheet NRF24L01:

Este módulo utiliza o chip NRF24L01+ fabricado pela Nordic (NRF24L01 datasheet), trabalha na frequência de 2.4 Ghz e possui uma antena embutida, o que faz desse um dos módulos mais compactos do mercado. Possui um conector de 10 pinos (figura abaixo) com os pinos muito próximos uns dos outros, o que limita o seu uso na protoboard. Nessa configuração, o ideal é a utilização de algum outro tipo de conector, como o jumper macho-fêmea, e ligá-lo diretamente aos pinos do Arduino.

Módulo NRF24L01 - Pinos

Dos 10 pinos do conector, vamos utilizar 9 (não vamos utilizar o IRQ nesse momento).  Como o módulo utiliza a interface SPI do Arduino, temos que obrigatoriamente utilizar os pinos 11, 12, e 13 para os sinais MOSI, MISO e SCK, respectivamente. Os pinos CSN e CE serão ligados aos pinos 7 e 8 do Arduino, ou algum outro de sua preferência. Atenção para a tensão de alimentação : este módulo trabalha com alimentação de 1,9 à 3.6 Volts :

Tabela pinagem NRF24L01

Montagem NRF24L01 com Arduino:

Podemos testar o módulo utilizando um dos vários exemplos contidos na biblioteca RF24. O ideal é a utilização de 2 módulos com 2 Arduinos diferentes. Como o mesmo módulo pode ser utilizado tanto para transmissão como para recepção, a ligação é a mesma :

NRF24L01 com Arduino

Programando Arduino com NRF24L01:

Carregue em cada um deles o programa abaixo, que é o programa GettingStarted, contido na base de exemplos da biblioteca :

/*
Copyright (C) 2011 J. Coliz <[email protected]>

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 2 as published by the Free Software Foundation.
*/

/**
* Example for Getting Started with nRF24L01+ radios.
*
* This is an example of how to use the RF24 class. Write this sketch to two
* different nodes. Put one of the nodes into 'transmit' mode by connecting
* with the serial monitor and sending a 'T'. The ping node sends the current
* time to the pong node, which responds by sending the value back. The ping
* node can then see how long the whole cycle took.
*/

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"

//
// Hardware configuration
//

// Set up nRF24L01 radio on SPI bus plus pins 9 & 10

RF24 radio(9,10);

//
// Topology
//

// Radio pipe addresses for the 2 nodes to communicate.
const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };

//
// Role management
//
// Set up role. This sketch uses the same software for all the nodes
// in this system. Doing so greatly simplifies testing.
//

// The various roles supported by this sketch
typedef enum { role_ping_out = 1, role_pong_back } role_e;

// The debug-friendly names of those roles
const char* role_friendly_name[] = { "invalid", "Ping out", "Pong back"};

// The role of the current running sketch
role_e role = role_pong_back;

void setup(void)
{
//
// Print preamble
//

Serial.begin(57600);
printf_begin();
printf("nrRF24/examples/GettingStarted/nr");
printf("ROLE: %snr",role_friendly_name[role]);
printf("*** PRESS 'T' to begin transmitting to the other nodenr");

//
// Setup and configure rf radio
//

radio.begin();

// optionally, increase the delay between retries & # of retries
radio.setRetries(15,15);

// optionally, reduce the payload size. seems to
// improve reliability
//radio.setPayloadSize(8);

//
// Open pipes to other nodes for communication
//

// This simple sketch opens two pipes for these two nodes to communicate
// back and forth.
// Open 'our' pipe for writing
// Open the 'other' pipe for reading, in position #1

//(we can have up to 5 pipes open for reading)

//if ( role == role_ping_out )
{
//radio.openWritingPipe(pipes[0]);
radio.openReadingPipe(1,pipes[1]);
}
//else
{
//radio.openWritingPipe(pipes[1]);
//radio.openReadingPipe(1,pipes[0]);
}

//
// Start listening
//

radio.startListening();

//
// Dump the configuration of the rf unit for debugging
//

radio.printDetails();
}

void loop(void)
{
//
// Ping out role. Repeatedly send the current time
//

if (role == role_ping_out)
{
// First, stop listening so we can talk.
radio.stopListening();

// Take the time, and send it. This will block until complete
unsigned long time = millis();
printf("Now sending %lu...",time);
bool ok = radio.write( &time, sizeof(unsigned long) );

if (ok)
printf("ok...");
else
printf("failed.nr");

// Now, continue listening
radio.startListening();

// Wait here until we get a response, or timeout (250ms)
unsigned long started_waiting_at = millis();
bool timeout = false;
while ( ! radio.available() && ! timeout )
if (millis() - started_waiting_at > 200 )
timeout = true;

// Describe the results
if ( timeout )
{
printf("Failed, response timed out.nr");
}
else
{
// Grab the response, compare, and send to debugging spew
unsigned long got_time;
radio.read( &got_time, sizeof(unsigned long) );

// Spew it
printf("Got response %lu,round-trip delay: %lunr",got_time,millis()-got_time);
}

// Try again 1s later
delay(1000);
}

//
// Pong back role. Receive each packet, dump it out, and send it back
//

if ( role == role_pong_back )
{
// if there is data ready
if ( radio.available() )
{
// Dump the payloads until we've gotten everything
unsigned long got_time;
bool done = false;
while (!done)
{
// Fetch the payload, and see if this was the last one.
done = radio.read( &got_time, sizeof(unsigned long) );

// Spew it
printf("Got payload %lu...",got_time);

// Delay just a little bit to let the other unit
// make the transition to receiver
delay(20);
}

// First, stop listening so we can talk
radio.stopListening();

// Send the final one back.
radio.write( &got_time, sizeof(unsigned long) );
printf("Sent response.nr");

// Now, resume listening so we catch the next packets.
radio.startListening();
}
}

//
// Change roles
//

if ( Serial.available() )
{
char c = toupper(Serial.read());
if ( c == 'T' && role == role_pong_back )
{
printf("*** CHANGING TO TRANSMIT ROLE -- PRESS 'R' TO SWITCH BACKnr");

// Become the primary transmitter (ping out)
role = role_ping_out;
radio.openWritingPipe(pipes[0]);
radio.openReadingPipe(1,pipes[1]);
}
else if ( c == 'R' && role == role_ping_out )
{
printf("*** CHANGING TO RECEIVE ROLE -- PRESS 'T' TO SWITCH BACKnr");

// Become the primary receiver (pong back)
role = role_pong_back;
radio.openWritingPipe(pipes[1]);
radio.openReadingPipe(1,pipes[0]);
}
}
}
// vim:cin:ai:sts=2 sw=2 ft=cpp

Abra o serial monitor e selecione a velocidade de transmissão para 57600 bauds, conforme destacado :

Serial Monitor - Selecionar 57600 baud

O Arduino faz a comunicação com o módulo NRF24L01 e mostra os dados na tela do serial monitor, indicando o status do módulo :

Serial Monitor - Comunicação com módulo NRF24L01

No serial monitor, pressione T e clique em ENVIAR em um dos Arduinos e será iniciado o processo de transmissão de dados. No outro Arduino, pressione R e será iniciado o processo de recepção. Lembre que um mesmo módulo pode ser utilizado tanto para transmissão, como para recepção.

 Gostou? Deixe seu comentário logo abaixo.

Faça seu comentário

Acesse sua conta e participe

208 Comentários

  1. Mestre, boa tarde.
    Veja se consegue me ajudar.
    Preciso de um projeto, onde eu possa ter varios trasmissores (RF ou Wirelles) e antenas recebendo essas informações.
    A Ideia é criar uma cerca virtual, num raio de 500 metros quadrados.
    Os transmissores estaraia sendo monitorados nesse perimetro.
    Existe algum transmissor com essa potencia, ou até para distancias maiores, sendo que esses transmissores, precisariam ser o mais leve possivel e quanto menores em tamnho fisico, melhor.

    1. Olá Welinton!

      Acredito que uma rede LoRa seria uma forma interessante de implementar esse projeto.
      Você pode conferir alguns posts sobre ela aqui: https://www.makerhero.com/blog/primeiros-passos-lora-com-arduino/
      https://www.makerhero.com/blog/comunicacao-lora-com-arduino-p2p/
      https://www.makerhero.com/blog/comunicacao-lora-ponto-a-ponto-com-modulos-esp32-lora/

      Abraços!
      Vinícius – Equipe MakerHero

  2. Olá bom dia! Obrigado pelo post! Quero desenvolver equipamento da seguinte forma: Tenho um Emissor e um receptor. No meu emissor um arduino com um teclado e um botão de “disparo”. No meu receptor um arduino com um relê e ligado nele uma lâmpada e uma bateria para a lâmpada. Quando eu disparar no emissor, o receptor recebe a mensagem requisita uma senha que deverá ser digitada no reclado do emissor, se positivo o receptor manda um sinal para o relê, abrindo o mesmo e acendendo a lâmpada com a bateria. É possível? Obrigado, Itamar.

  3. Tenho um dispositivo de Joystick Hid (Arduino pro micro 32u4) que transmite informações para o pc de um sensor MPU 9250. Cada movimento que é feito ele repassa para o programa no pc. Gostaria de transformar este dispositivo em sem fio. Qual seria o melhor caminho para que ele não perca sua propriedade HID? Sou novato e montei seguindo um tutorial. Mas agora queria transformar ele em sem fio. Este modulo NRF24L01 seria uma boa opção?

  4. Achei estranho o fato de o arduino Uno operar em 5V e em tese, o barramento SPI deve operar em 5V de tensão.
    Já o transmissor opera em 3.3v.
    Pode dar problema?

    1. João,

      Em nossos testes, zero problemas.

      Abraços!
      Diogo – Equipe MakerHero

  5. Bom dia fiz corretamente ,mas não envia ros dados ou não estão se comunicando teste varia vezes

    1. Richard,

      Confira todas as ligações e refaça-as se possível.

      Abraços!
      Diogo – Equipe MakerHero

  6. Bom dia, tenho uma dúvida sobre o “NRF24L01 + PA + LNA Wireless”.
    Se eu usar dois módulos desse em um projeto de controle remoto com arduino, o sinal de transmissão vai aumentar(dobrar de tamanho)?
    Sendo que para esse módulo as especificações de alcance são:
    até 1km em 250kbps
    até 750m em 1MB,
    até 520m em 2MB;
    E nesse caso de dois módulos, devo usar também dois capacitores?

    1. Júnior,

      Talvez aumente se você usá-los em locais diferentes, passando o sinal do primeiro para o segundo e depois para o objeto final.

      Abraços!
      Diogo – Equipe MakerHero

  7. Adílson, parabéns pelo post. Você acha que esse módulo funcionaria com um microcontrolador PIC com essa mesma bilbioteca?Abraços.

  8. Quero saber se posso utilizar dois NRF24L01 de modo que se comuniquem, por exemplo, um estando em minha casa e outro na outra casa a 1 quarteirão de distância.

    1. Gabriel

      Não creio que vá funcionar devido a distância.

      Abraços!
      Diogo – Equipe MakerHero

  9. Bom dia, tenho a seguinte situação :
    Estou fazendo um volante com Arduino Micro, tb daria de fazer com o Leonardo se for o caso.
    Nesse volante existe uma cadeia de botões , pushbuttons , e um display Nextion . Uso somente um arduino pra isso tudo q funciona perfeitamente, o WIndows reconhece ele como JOystick no COntroladores de jogos do windows e o Nextion uso um software a parte que basicamete é só selecionar a portam COM correspondente do arduino.
    Estou vendo a possibilidade de fazer esse volante sem fio, onde teria uma bateria interna alimentando tudo e a comunicação de dados seria sem fio. Qual modulo vcs me indicariam para fazer isso e se isso realmente é possivel?
    Vale lembra q a parte de botões enviam dados e a parte do Nextion Ele recebe dados do software, daí não sei se precisaria separar em 2 arduinos e 2 modulos sem fio um pra receber outro pra enviar, e se tb o windows reconheceria como joystick normal?
    E se por exemplo um arduino poderia ter 2 modulos sem fio, nos quais um seria pra receber e outro pra enviar dados?
    Desde já agradeço.

  10. Olá Adilson.
    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

  11. Olá. Parabéns pelo tutorial. Poderia me dizer se é possível mudar o endereço “0xF0F0F0F0E1LL”. Quando tendo alterar, dá erro no sketch.
    Abs.

    1. Sebastião, é possível sim!

      Você deve seguir uma regra da API, que seria a de manter os 32bits e alterar apenas os valores menos significativos.

      O valor hexadecimal que você deve alterar em por exemplo “0xF0F0F0F0E1LL” é: F0F0F0F0E1. Nesse valor você deve altera apenas os dois últimos caracteres. Exemplo:

      F0F0F0F0E1 (antigo)
      F0F0F0F066 (novo)

      Depois, basta você adicionar o “0x” e o “LL”, ficando:

      0xF0F0F0F066LL

      Espero que tenha sido fácil compreender 🙂

      Abraços!
      Diogo – Equipe MakerHero

      1. Olá. Muito obrigado pela resposta. Vou tentar. É um TCC que estou fazendo. Abs.

  12. Olá, estou trabalhando em um projeto de automação residencial, e gostaria de saber se não há problema na comunicação de um módulo com antena externa e um módulo com antena embutida na placa, obrigada.

    1. Olá Cleuza,

      Não há problemas com isso. É importante observar que a distância máxima entre os dois módulos será limitada pelo alcance do módulo com antena embutida.

      Abraço!
      Rosana – Equipe MakerHero

  13. preciso fazer um sinal liga/desliga para funcionar como chave boia

    1. Olá,

      Você quer enviar um sinal de liga/desliga usando o NFR24L01?

      Abraço!
      Rosana – Equipe MakerHero

  14. Olá
    Adilson Thomsen

    O NORDIC continua sendo um módulo atual? Ou há algo melhor no mercado que seja similar?

    1. Olá Darly,

      O NRF24L01 continua sendo uma opção quando se quer operar em uma frequência de 2,4GHz e a distância entre transmissor e receptor é pequena.
      Mas existem sim outras opções de módulos que conseguem operar em distâncias maiores.

      Abraço!
      Rosana – Equipe MakerHero

  15. Mano, essa parte da dando erro no meu PC e não sei resolver:

    done = radio.read( &got_time, sizeof(unsigned long) );

    Alguém pode me ajudar?

    1. Olá,

      Você instalou todas as bibliotecas necessárias corretamente?

      Abraço!
      Rosana – Equipe MakerHero

  16. Bom dia gostaria de saber se ha possibilidade de utilizar em conjunto com RFID RC255 com intuito de aumentar o range de alcance do modulo RC255.

    1. Olá Anderson,

      Acredito que não seja possível.

      Abraço!
      Rosana – Equipe MakerHero

  17. E´possível fazer um controle remoto de 6 canais com o módulo NRF24L01 ? Obrigado.

  18. Ola, Tudo bem? Sei que este post é bem antigo. Mas gostaria de tirar uma duvida.

    “temos que obrigatoriamente utilizar os pinos 11, 12, e 13 para os sinais MOSI, MISO e SCK, “. Teria como alterar estes pinos?

    1. Olá Maicon!

      Não é possível alterá-los.

      Abraços!

      André – Equipe MakerHero

  19. show

    1. Olá Bertolino!

      É sempre bom saber que nosso trabalho ajuda as pessoas!

      Abraços!

      André – Equipe MakerHero

  20. Ola boa tarde ao carregar o código e checar as configurações esta dando este erro (printf.h: No such file or directory) poderia me ajudar a resolver.

    1. Olá Ailton!

      Quando você compila (clica naquele “V” que tem do lado do botão de carregar o código), ele funciona?

      Pode ser algum problema na biblioteca também.

      Abraços!

      André – Equipe MakerHero

  21. Boa tarde estou fazendo um projeto do robozinho BB8 e gostaria de saber se esse módulo pode resolver meu problema. Quero usar 2 arduinos um no corpo e outro na cabeça e como a cabeça e separada e desliza no corpo não posso fazer a comunicação com fios ligando um arduino no outro. Mais uma dúvida um Bluetooth ligado em um arduino teria a comunicação dos 2 arduinos através do celular. Abraço

    1. Olá Reinaldo!

      Muito legal a sua ideia! Você pode colocar como tá ficando no nosso fórum?
      https://www.makerhero.com/forum/

      Acredito que com essa comunicação que você está planejando irá funcionar sem problemas.

      Abraços!

      André – Equipe MakerHero

  22. estou tendo dificuldades para programar o envio de sinal para executar um acionamento, teria como me ajudar

    1. Olá Alcimar!

      Você pode colocar esse problema com mais detalhes no nosso fórum? Lá o pessoal pode te ajudar melhor nisso.

      https://www.makerhero.com/forum/

      Abraços!

      André – Equipe MakerHero

  23. Ótimo post, tenho uma idéia de tcc, serà que consigo fazer a comunicação de dois arduinos que quando um veículo chegar ele comunica que o outro arduino chegou e transmitir um aviso sonoro(usando este mòdulo) ?

    1. Olá Guilherme!

      Ficamos muito felizes em saber que nosso trabalho realmente ajuda as pessoas!

      Acredito que seja possível fazer sim.

      Você já viu o nosso fórum? É um espaço aberto onde todos podem colaborar. Lá você pode postar seus projetos, tirar suas dúvidas, ajudar outras pessoas e contribuir para a comunidade 🙂

      https://www.makerhero.com/forum/

      Fale mais sobre o projeto lá, o pessoal sempre vem com várias ideias (eu, inclusive).
      Detalha mais o problema que você quer resolver e as ideias de solução que você teve.

      Abraços!

      André – Equipe MakerHero

  24. Olá, gostaria de saber se é possível criar uma rede com vários transmissores para enviar informação para um único receptor, se for possível, como é feito o endereçamento de cada módulo?

  25. Usei esse sketch para teste. (No meu caso liguei só 1 placa, para ver se estava respondendo, ou queimada)

    No início ele apresenta as informações, como você mostra.

    Depois, a tela do terminal segue sem fim com dados do tipo:

    Got payload 4294967295…Sent response.nrGot payload 2139127552…Sent response.nrGot payload 4282384383…Sent response.nrGot payload 4294967295…Sent response.nrGot payload 4294967295…Sent response.nrGot payload 67108863…Sent response.nrGot

    Seria isso mesmo?

  26. Boa tarde!
    Gostaria de saber se por o módulo trabalhar com a mesma frequência do wifi, pode ocorrer alguma interferência?

  27. Ola, consigo fazer o arduino se comunicar com o pc sem a necessidade de outro modulo?

  28. Boa tarde, tudo bem?

    Estou com dificuldade para adicionar as bibliotecas em questão (printf.h, RF24.h e nRF24L01.h), como faço?

  29. eu ja tenho a lista de codigo feita, mas a que eu tenho esta feita para o nrf24l01 sem antena, porem o que eu tenho para o meu projeto é com antena, que modificação eu faço para funcionar o modulo de radio frequencia com antena?

  30. oi tudo bem quero enviar um comando de um digitalWrite(LEDPin,HIGH);arduino para outro ligar um led tem como fazer isso

  31. Boa tarde, gostaria de fazer o seguinte: Tenho 20 botões que devo comunicar com uma placa principal, porém se fosse comunicar cada um dele separadamente, iria consumir muitas entradas e uma quantidade grande de fiação, eu consigo, criando uma placa com os botões, fazer essa comunicação com a placa principal via NRF24L01?

  32. RF24 radio(9,10);

    Porque colocou 9 e 10? Sendo que no desenho o CE e CS é 7 e 8?

    1. 7 e 8, ou algum outro de sua preferência

  33. amigo esse módulo tambem transmite video ???

  34. quando tento compilar ou carregar este código , que voce passou ele da invalido. aparece esta mensagem: (void value not ignored as it ought to be). dar erro nesta parte da programação : done = radio.read( &got_time, sizeof(unsigned long) ); o que fazer?

  35. Boa noite,

    Caros tenho uma dúvida, o módulo NRF24L01 com antena ele pode ser usado como um repetidor de sinal wifi? Por exemplo se eu quisesse ampliar o alcance do meu roteador ele poderia ser usado para esta finalidade?

  36. Bom dia, gostaria de saber se é possivel usar este mesmo codigo para o Módulo Wireless Nrf24l01 + Antena 1Km.
    Obrigado

    1. Boa tarde Lucas,

      Sim, é o mesmo módulo. O que muda é somente a antena, ok?

      Abraço!

      Adilson – Equipe MakerHero

  37. Oi,Boa Noite,se eu mudar o endereço de conecção na linha ”const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };”, e por exemplo colocar const uint64_t pipes[2] = { “Radio”, “Conect” };, ira funcionar ??Obrigado!

  38. Ola. gostaria de adaptar este projeto que usa um modulo RF433mhz para este NRF24l01, alguém sabe se seria complicado adaptar o código?

    https://www.instructables.com/id/ARDUINO-WIRELESS-HOME-SECURITY-SYSTEM/

  39. Bom dia,
    Eu tenho um modulo de Wifi Nrf24l01 e um arduino Nodemcu que possui um ESP8266, estou querendo criar uma aplicacao e gostaria de saber se estes dois modulos se conversam ! Voce pode me ajudar ?

    1. Boa tarde Andre,

      Não se comunicam, pois usam protocolos de comunicação diferentes.

      Abraço!

      Adilson – Equipe MakerHero

  40. Boa tarde, sou novo na programação de arduino e pretendo acender um led através da serial do arduino uno com 2 transceivers NRF24L01+ , no entanto não estou a conseguir, apenas consigo na serial quando pressiona a tecla 1 do meu pc a dizer acende LED, mas não acende do lado do receptor os códigos são os seguintes :
    EMISSOR
    // Programa : NRF24L01 Emissor

    #include
    #include
    #include
    #include

    // Armazena caractere digitado na serial
    char valor[1];

    // Armazena os dados enviados
    int dados[1];

    // Inicializa o NRF24L01 nos pinos 9 (CE) e 10 (CS) do Arduino Uno
    RF24 radio(9, 10);

    // Define o endereco para comunicacao entre os modulos
    const uint64_t pipe = 0xE13CBAF433LL;

    void setup()
    {
    // Inicializa a serial
    Serial.begin(57600);
    Serial.println(“Digite 1 e pressione ENVIAR…”);

    // Inicializa a comunicacao do NRF24L01
    radio.begin();
    // Entra em modo de transmissao
    radio.openWritingPipe(pipe);
    }

    void loop()
    {
    // Le o caractere digitado na serial
    if (Serial.available() > 0)
    {
    valor[0] = Serial.read();
    }

    // Envia 1 via radio caso seja digitado o valor 1
    if (valor[0] == ‘1’)
    {
    Serial.println(“Enviado : 1 – Acende Led”);
    dados[0] = 1;
    radio.write(dados, 1);
    delay(1000);
    valor[0] = 0;
    }

    }

    RECEPTOR

    // Programa : NRF24L01 Receptor
    #include
    #include
    #include
    #include

    // Armazena os dados recebidos
    int recebidos[1];

    // Inicializa o NRF24L01 nos pinos 9 (CE) e 10 (CS) do Arduino Uno
    RF24 radio(9, 10);

    // Define o endereco para comunicacao entre os modulos
    const uint64_t pipe = 0xE13CBAF433LL;

    // Define o pino do led
    int LED1 = 8;

    void setup()
    {
    // Define o pino do led como saida
    pinMode(LED1, OUTPUT);
    // Inicializa a serial
    Serial.begin(57600);
    // Inicializa a comunicacao do NRF24L01
    radio.begin();
    // Entra em modo de recepcao
    radio.openReadingPipe(1, pipe);
    radio.startListening();
    // Mensagem inicial
    Serial.println(“Aguardando dados…”);
    }

    void loop()
    {
    // Verifica sinal de radio
    if (radio.available())
    {
    bool done = false;
    while (!done)
    {
    done = radio.read(recebidos, 1);
    Serial.print(“Recebido : “);
    Serial.print(recebidos[0]);

    // Se recebeu 1, acende led
    if (recebidos[0] == 1)
    {
    delay(10);
    Serial.println(” -> Acende led”);
    digitalWrite(LED1, HIGH);
    }

    else
    {
    digitalWrite(LED1, LOW);
    }

    }
    }
    }

    Agradecia uma ajuda se estou a fazer mal a programação

    cumprimentos

    1. As bibliotecas são estas
      #include
      #include
      #include
      #include

  41. Boa tarde,

    É possível fazer a leitura do nível de sinal de recepção do NRF?

  42. hello alison, let me drop an inquire, may be i am wrong but i cant find info about it, what i need is to connect a nrf24l01 to a 74hc595 (via SPI) to light 8 leds (through the shift register with latch), my request help is: if it is posible to do without a arduino or another microcontroler, independent of the transmitter part. i will apreciate very much your opinion, thank you in advance. karl

    pd: acho que o ingles nao e um problema pra voçe, acaso fosse re escrevo em brasileiro : )

  43. Como seria sua comunicação com um controle de rádio frequência ?

  44. Olá, ótimo artigo e está funcionando perfeitamente aqui, só gostaria de saber uma coisa, eu consegui fazer o transmissor enviar um dado alterando o valor de ‘dados[0]’ para ‘dados[0]=50’, e o receptor me mostra esse valor, mas quando eu coloco um valor com vírgula, o receptor só mostra o inteiro, por exemplo, se eu colocar ‘dados[0]=50.4’ o receptor me mostra apenas 50, como eu faço para adquirir o valor depois da vírgula?

    Obrigado.

    1. talvez seria possivel se você, por exemplo, na sua programação, multiplicar o valor por 10 ( ex.: 50.4 * 10 = 504 ) enviar o valor inteiro, e na sua recepção dividir novamente o valor ( 504 / 10 = 50.4 ) para obter o numero com a parte decimal. Só um chute, também estou aprendendo.

  45. Olá Adilson,

    Irei trabalhar com sd-card e o NRF24l01 no spi, logo precisarei utilizar o pino CSN. Só que estou com uma dúvida: A tensão de saída no pino 7 em nível alto no arduino é 5V? Se sim isto danificaria meu módulo NRF?

    Alisson Pereira dos Santos
    1. O ideal é você usar um conversor de nível lógico. O conversor de nível lógico é um pequeno dispositivo que baixa o nível de 5V para 3,3V ou aumenta o nível de 3,3V a 5V, este conversor de nível também funciona para dispositivos 2,8V e 1,8V.

  46. Ola, estou motando um projeto para transformar um controle com fio em wireless, porem para comunicação, ele utiliza 2 portas seriais, com dois módulos nrf24l01 e dois arduinos eu conseguirira fazer isso ?

    Exemplo: se eu cortar um cabo de um controle de videogame, conectar cada fio no arduino, eu conseguiria transmitir os dados para o outro arduino ? Lembrando que a transmissão tbm ocorrerá no sentido contrário.

  47. Gostaria de enviar mais de dado, tipo enviar o valor de dois sensores , poderia ajudar, com explicação ou algum exemplo ?

    1. Boa tarde Gustavo,

      Dê uma olhada neste post, por favor, creio que tem o que você precisa: http://www.arduinoecia.com.br/2015/02/comunicacao-wireless-arduino-nrf24l01.html

      Abraço

      Adilson – Equipe MakerHero

      1. Bia noite, gostaria de uma ideia para eu montar um controle usando o nfr24l01 estou montando um carrinho controlado pelo nrf e estou com essa dúvida!

    2. Olá eu faço o envio de dados de dois sensores, para isso eu apenas envio o valor de um deles negativo assim do lado do receptor se o valor for menor q zero pertence a um determinado sensor

  48. Se as propriedades do modulo aparecer diferente da postagem, significa que à algo errado ? cheguei a alimentar os modulos com 5v sem querer ….. mais tirei rápido, pode ter queimado mesmo assim ?

    1. Boa tarde João,

      Na postagem está especificado que a tensão de alimentação vai de 1,9 à 3,6 volts, mesmo assim alguns módulos são tolerantes à variação de tensão por alguns segundos.

      Abraço

      Adilson – Equipe MakerHero

  49. Esse modulo precisa de endereço de mac?

    1. Bom dia Alexandre,

      Sim, ele precisa de um endereço para se identificar na rede, nesse post você encontra mais informações: http://www.openbeacon.org/NRF24L01

      Abraço

      Adilson – Equipe MakerHero

  50. Existe um modelo do Modulo Wireless Arduino Nrf24l01 Pa Lna Com Antena, no site de comprar do mesmo diz que a transmissão chega ate 1000m, gostaria de saber se e verdade ou não? se alguém já usou, e a mesma coisa desse Nrf24l01 do post ?

    1. Sim Arthur é verdade, porem, para alcançar os 1.000m ele precisa de algumas coisas, como visada direta, ou seja, não pode ter absolutamente nada entre o emissor e o receptor, a segunda coisa necessária é uma fonte de alimentação que entregue corrente suficiente e por ultimo, nos testes que fiz, existem posições na colocação da antena que faz eles alcançar maiores distancias.

  51. Estou tentando fazer uma automação residencial com 2 modulos NRF24LO1 e dois arduinos uno,
    mas falta resolver só uma coisa.
    No Emissor tenho 1 Botâo e gostaria que esse botão ao pressionar uma vez liga o led do Receptor ao ser pressionado novamente desliga o led.
    Poderia me ajudar?

    1. Cláudio, use uma variavel auxiliar em que vc altere o seu valor assim q uma operacao com o led ocorrer…quando ligar o led, sete o valor desta variavel para 1, por exemplo. Na proxima vez em que pressionar o botao, o led apagará se o botao for pressionado e se o valor dessa variavel for 1. Como o valor a condicao será verdadeira, o led desligará. Ao desligar o led, sete a variável para 0 novamente, assim, a condicao para ligar o led novamente é pressionar o botao e ter o valor desta variavel =0…fiz algo semelhante usando a porta serial:

      //Liga e desliga um led no pino 13 quando o caractere “a” é recebido pela porta serial.

      int lastser=0;
      char ser;
      void setup() {
      Serial.begin(9600);
      pinMode(13, OUTPUT);

      }

      void loop() {
      ser = Serial.read();

      if((ser == ‘a’)&&(lastser==0)){
      digitalWrite(13, HIGH);
      lastser=1;
      ser=’b’; //altera valor da variavel que o proximo if nao seja verdade
      }
      if((ser == ‘a’)&&(lastser==1)){
      digitalWrite(13, LOW);
      lastser=0;
      ser=’b’;

      }
      }

      Valeu.

  52. Gostaria de um dica pra fazer o seguinte:

    Um arduino recebendo informações de outros dois arduinose, ou seja 1 receptor e 2 transmissor. Alguma dica de como?

    1. Olá Natan,

      Os nrf24l01 são uma forma fantástica e barata de comunicação sem fio, para você avançar no estudo deles a melhor forma disparado é estudar os exemplos que vem junto com as bibliotecas e procurar entender o porque de cada linha.
      No momento as melhores bibliotecas para os NRF24L01 são as bibliotecas do TMRH20, a principal é a RF24, mas tem outras como a R424NETWORK e varias outras, nenhuma é melhor que a outra, cada uma tem apenas um foco diferente.
      Porem, se o que você deseja é algo pronto, tá aqui o exemplo exatamente do que você quer: http://futebol-uff.blogspot.com.br/2013/05/exp-06-quatro-nrf14l01-com-rf24network.html?view=sidebar

  53. Ola… acho otimo os tutoriasi do site costumo sempre comprar com voces pelo suporte que encontro no site… Mas em relaçao ao NRF24l01, voces nao teriam um exemplo mais simples apenas para enviar um numero e recebe-lo?
    Grato.

    1. Bom tarde Ailson,

      Por enquanto temos apenas esse exemplo, mas tente este artigo, creio que tenha o que você precisa: http://www.arduinoecia.com.br/2015/02/comunicacao-wireless-arduino-nrf24l01.html

      Abraço!

      Adilson – Equipe MakerHero

  54. Pessoal estou com um problema e muitas dúvidas.Tenho um projeto de automação residencial no qual tenho a seguinte estrutura:
    1 Arduino MEGA 2560 como central de controle. Conectada a ele um Shield de ethernet + LCD + nRF24L01.
    1 ou mais (n) Garaginos que comprei para cada ponto que quero controlar remotamente. Conectado a ele 1 módulo nRF24L01 + 1 ou mais sensores/reles, para controlar o que for necessário.
    O meu problema: no arduino MEGA onde tem o shield ethernet pelo que pesquisei, já muda a maneira como os pinos devem ser ligados tanto para o nRF24L01 quanto para o LCD pois o shield ethernet causava interferência no LCD e no caso do modulo RF ele utiliza a porta SPI nativa do arduino, impedindo a utilização dessa porta por outros modulos.
    Está difícil de encontrar alternativas na internet para fazer todas essas conexões. Algumas alternativas que minhas pesquisas indicaram: conectar o LCD utilizando um módulo Serial que reduziria a utilização de pinos. E também utilizar um módulo serial específico para o nRF24L01. Também achei um material que fala sobre conexão desse modulo RF utilizando SPI por software.
    Mas juntar todas essas informações e fazer funcionar é outra história.. rs
    Estou com dúvidas de qual biblioteca utilizar, como fazer o ajuste dos pinos que terei que mudar, como dizer isso a biblioteca… em fim.
    Alguém teria a bondade de me dar uma orientação? Se puder pode até ser pelo skype. Pois assim fica mais fácil explicar e mostrar o projeto no detalhe.

    Desde já agradeço a ajuda.
    Abs!

    1. Tenta usar um módulo Xbee

  55. Pessoal alguém pode me dar uma dica?
    Eu sou muito novato com Arduino, mas gostaria de fazer um projeto de automação residencial o mais “wireless” possível.
    Mas vou usar um exemplo de aplicação para saber se é possível: imagine que eu tenho um arduino em um comodo e um dispositivo qualquer (lampada, tomada, etc) conectado a um shield de Rele em outro comodo, e quero ligar esse modulo usando um transmissor RF, por exemplo um NRF24L01. Até ai ok. é possível. Mas queria de alguma forma fazer esse receptor funcionar sem ter que usar um outro arduino. É possivel?
    Porque todos exemplos que vi na internet utilizam um outro Arduíno para fazer isso. Então eu teria que comprar um arduino para cada ponto de controle sem fio q eu queira colocar?
    Queria algo assim: 1 transmissor q varia fraquencia conforme programado, e cada respectivo receptor interage com apenas 1 arduino na central.
    Existe forma de fazer isso?

    Muito obrigado.
    Att

    1. Ola… apenas o shield de rele não controlaria o NRF24l01, ele precisa de um micro controlador(Arduino,pic,avr etc) para isso.

      1. Olá Ailton, obrigado pela resposta.
        Em minhas últimas pesquisas na internet encontrei um site bem interessante com uma biblioteca própria para os Shields e Sketches dos projetos de sensores remotos em rede RF. Vale a pena conhecer: http://www.mysensors.org/

        Abs!

        1. Obrigado.. estou a 1mes tentando fazer meus modulos se comunicarem e nada estou usando um Atmega38P(basicamente um Arduino uno ), uma solucao para o preço do arduino (não que seja tao caro)… Acho que meus modulos (Da china) estao com problemas.

  56. Boa tarde. Tenho uma questão que espero que me saibam responder, tenho uma placa STMF4 com processador ARM a qual está ligada ao módulo ESP8266 que envia dados para o router (este lê o SSID e a Pass), de seguida utilizo o software API que lê o link (vindo do router) e leva os dados a uma base de dados (que é uma folha do google). A minha questão é, existe algum módulo mais eficiente que me faça retirar o API? Ou seja, será possível fazer: placa STMF4 – Módulo – router – base de dados? eliminando assim o software API?

  57. Olá queria controlar 5 servos com arduino uno e um modulo bluetooth vcs podem me ajudar?
    Comprei o meu arduino na Flipeflop a pouco tempo

    1. Amigo estou com a mesma dúvida. Quero acionar 5 reles diferentes através do nrf 24l01 mas não achei nada na internet sobre isso.
      Gostaria de fazer também por bluetooth. Se você conseguir da um tok. [email protected]

  58. Olá não pude deixar de notar que o nome do dispositivo possui “Wireless”, já que o dispositivo possui esse nome ele possui alguma alusão ao protocolo 802.11ac? Ou seja, posso atribuir um endereço IP no dispositivo para conecta-lo em uma rede WiFi?

    1. Boa tarde Rafael,

      Não, ele usa um outro protocolo para comunicação, você não vai conseguir ligá-lo na rede wifi 802.11.

      Abraço.

      Adilson – Equipe MakerHero

  59. Boa tarde, na linha 30 do código temos, “RF24 radio(9,10);”.
    Essa linha precisa ser alterada ou não, pois estamos utilizando os pinos digitais 7 e 8, e o 9 e 10 não.

    Obrigado!

  60. Existem a disposição uns módulos com antena, alguém já tentou ou pensou em adaptar uma antena para esses módulos sem antena?

    1. Fabio, os modulos com antena sáo os NRF24L01+PA+LNA elem são 10x mais poderosos que esses do topico, ou seja, segundo o fabricante eles atingem 1.000m de distancia, enquanto essa versão normal atinje apenas 100m no maximo e em campo aberto.
      Porem, para trabalhar com eles não é tão simples como trabalhar com esse aqui, você vai ter que entender um pouco mais de programação, vai ter que lidar com o controle de potencia, vai ter que utilizar capacitores complementares, etc. etc. etc.
      Na verdade existem tambem alem desse e da versão com antena, as versões SMD, eles são minusculos e tem potenciais iguais suas versões DIP.

      1. Olá Weider, vejo que tem uma boa experiência no assunto e gostaria de fazer algumas perguntas. Tem algum email para que possamos conversar?

  61. o transceptor pode fazer comunicação entre vários ou só em pares? e o mesmo pode fazer comunicação com o módulo Rf 433mhz?

    1. Bom dia Leonardo,

      Você pode fazer a comunicação entre vários módulos. Quanto ao RF433, a comunicação não é possível, pois trabalham em frequências diferentes.

      Abraço

      Adilson – Equipe MakerHero

  62. como faço uma comunicação bidirecional com o NRF24L01 de uma maneira mais simples?

  63. Ola,
    Estou com problemas na utilização desse módulo, ele hora funciona, hora não funciona. Estou montando um sistema de automação residencial e gostaria de usar os módulos para comunicar uma central extensores, mas não estou conseguindo uma transmissão de dados decente para dar continuidade no projeto, porém estou tendo perda de pacotes a uma distância de 5 metros, e hoje fiz alguns testes e nada mais funciona. Estou desconfiado que meus módulos estão com problemas, mas gostaria de alguma sugestão, para conseguir entender o que estou fazendo de errado.
    Desde ja agradeço.

    1. Boa tarde Daniel,

      Para testar o módulo, tente uma ligação básica, como neste post: http://www.arduinoecia.com.br/2015/02/comunicacao-wireless-arduino-nrf24l01.html

      Abraço

      Adilson – Equipe MakerHero

    2. Coloque um capacitor entre o vcc e o gnd do modulo, normalmente coloca-se 100uf/6v, mas vc pode ir testando para mais ou para menos até que ache um que não dê mais perdas de pacotes, isso numa distancia boa entres os dois e ai depois que vc conseguir resolver a perda de pacotes ai vc testa as distancias. blz caso vc consiga mande um feedback e se puder compartilhe por email seu projeto, pois também estava fazendo um, mas por causa da falta de tempo acabei parando.

  64. Se alguem poder me ajudar eu agradeço

  65. Como posso fazer para escrever uma mensagem em um display(OLED) usando o módulo NRF24l01?
    uma mensagem simples mesmo tipo(“OLA MUNDO”)

  66. O meu teste dá apenas: “Failed, response timed out.” O que ocorreu?

    1. Boa tarde Leandro,

      Onde esse erro aparece ?

      Adilson – Equipe MakerHero

      1. Quando aperto T para transmitir.

        LEANDRO JOSE EVILASIO CAMPOS
  67. Gostaria de um exemplo para enviar dados de um DHT22 , temp e umid para outro arduino com display 16 x2
    e 2 modulos nrf24l01
    Obrigado a todos…

  68. Boa noite Filipe, sou iniciante podeira me ajudar ?
    Meu projeto Eu pretendo controlar 2 Servos usando os NRF24l01 com potenciômetro, e estou tendo dificuldades em desenvolver o código para controlar os servos no transmissor e no receptor.
    Fico no aguardo e Parabéns pelos posts !!!!!!!!!!

  69. Ola preciso fazer uma automação de apontamento de produção por código de barras de 5 maquinas, pensei em fazer da seguinte forma:
    um arduino uno em cada maquina com leitor de código de barras e um transmissor rf, no total de 5 arduinos, 5 leitores, e 5 transmissores, e um arduino mega com 5 receptores, um pra cada transmissor correspondente em cada maquina, e também com 5 transmissores para enviar a resposta da leitura(se ok ou não) do código de barras a mais 5 receptores em cada arduino uno.
    o mega estaria conectado em um pc e enviando as leituras a algum software.

    a distancia entre uma maquina e outra eh de uns 10 metros mais ou menos.

    sou novato, sei que tem como fazer, me falaram sobre transceptor, estou pesquisando, alguém teria alguma dica, uma ajuda.

    Desde já agradeço.

  70. Olá, tenho uma dúvida quanto a estes módulos, estou em um projeto em que o que eu preciso não é nem tanto a informação transmitida entre os dois módulos e sim a intensidade do sinal que sai do módulo 1 e o quanto ele se atenua ao chegar no módulo 2, ou seja, a intensidade que chega no módulo 2, como faço isso?

  71. Boa noite , preciso enviar um comando para um relé para acionar um sensor LDR em um comodo atráves de um app do celular android, não quero passar fio até este comodo , com este módulo é possível?

    1. Boa noite Adriano,

      Você faria a alteração via rede wifi comum, correto ? Nesse caso, esse modulo não seria indicado, pois ele possui um outro tipo de protocolo.

      Talvez um módulo wifi que suporte redes 802.11 seja mais indicado, ou até um módulo bluetooth.

      Abraço.

      Adilson – Equipe MakerHero

  72. Olá Srs,

    Tenho uma dúvida antes de iniciar o meu projeto em arduino e não consigo encontrar a solução. Peço a ajuda de vocês.
    Vou ter 10 arduinos ligados e instalar em cada um deles 01 transceiver NRF24L01. Cada um dos arduinos terá um botão que ao ser acionado, uma função se ativará. Esta função fará com que o led pisque por 5x e no mesmo instante, este arduino deverá enviar um sinal para os outros arduinos próximos, para que também ativem a mesma função de piscar o led por 5x (porém, os arduinos que recebem o sinal para ativar a função de piscar led, não devem retransmitir para os demais arduinos, ou, teremos uma cascata. Ele recebe, pisca e fica quieto. Só o arduino que tiver o botão apertado é o que trasmite.) E todo o ciclo recomeça ao toque de qualquer botão de qualquer outro arduino. Todos conversarão entre si.. Isso é possível ?
    Obrigado à todos!

    1. Kra creio que da sim, é só vc criar um pacote de dados ex:
      1#5&
      onde
      1 = id do arduino
      # = separador de dados
      5 = numero de veses que pisca o led
      & = final do pacote

      então o resto é analise de dados dos arduinos, assim que vc lê um pacote inteiro no arduino e identifica qual arduino está com o id do pacote é que vai executa as piscadas e dai incrementa o id e retransmite o pacote.

    2. Olá Godoy(tem parentesco com o juiz famoso?) ,
      Cara, possível é, simples não!
      Vai dar um certo trabalho

      Pelo que entendi é assim:

      1- são 10 arduinos com 1 nrf24l0 em cada um.
      2- Todos deverão estar configurados como RECEPTORES.
      3- Aquele que você aperta o botão, muda de receptor para TRANSMISSOR e transmite um codigo.
      4-Como todos os outros estão como receptores aguardando, eles recebem o codigo e fazem o que você quer, ou seja, piscar leds.
      5- Quando você solta o botão, o ponto volta se tornar um recptor e como não tem ninguem transmitindo, tudo fica parado.
      6- Ai você aperta o botão de outro, sendo que todos tem a mesma programação, e ai ele sai de receptor e vira transmissor, e acontece o que rolou anteriormente.

      Bem, é assim que eu faria, dá um bom trabalho, mas é perfeitamente possível.
      Uma dica, estude o exemplo que vem com a biblioteca chamado PINGPAIR, pois nele ensima como um mesmo modulo passar de recptor para transmissor e vice versa.

  73. Como recebo a leitura de multiplos potenciometros e botões simultaneamente ? pois se eu for usar o projeto em um Rc de carrinho terei que receber o comando para direção+para frente ou para trás agradeço a atenção 😉

    1. Olá,

      Para recebo a leitura de múltiplos potenciômetros e botões simultaneamente, é só você criar uma struct e colocar seus dados tudo dentro dessa struct, no meu caso usei Arduino.
      exemplo:
      struct DadoRc{
      float potenciometros1;
      float potenciometros2;
      int botao1;
      int botao2;
      char direcao;
      };
      Lembrando que o modulo nRF24L01, tem a capacidade de enviar e receber até 32 bytes de dados por vez. Então é só você fazer a soma de de todos das variáveis dento da struct.

  74. Boa tarde,

    Existe a possibilidade de utilizar esse módulo direto com um PIC? Gostaria de controlar alguns servos à distância.

    Obrigado.

  75. qual é melhor o modulo RF433 ou MÓDULO NRF24L01

    1. Sidnei,

      Os NRF24L01 são disparado melhores que os modulos 433mhz.
      Se eu fosse colocar numa ordem colocaria assim:
      1º – Xbee
      2º – Nrf24l01
      3º – 433 mhz

    2. Boa noite Sidnei,

      Vai depender do seu projeto. Tanto o RF433 como o NRF24L01 são bons módulos, mas o NRF24L01 tem um alcance maior. Por outro lado, ele trabalha na frequência de 2.4 GHz, o que teoricamente pode gerar algum tipo de interferência em outros aparelhos.

      Abraço.

      Adilson – Equipe MakerHero

  76. Boa noite! Gostaria de saber se este módulo tem melhor alcance e qualidade do que um módulo Bluetooth? E qual seu alcance em ambientes internos com obstáculos?

    1. Boa tarde Flávio,

      Realmente o alcance do bluetooth é bastante limitado. Segundo informações do fabricante, o módulo NRF24L01 alcança até 10 metros em ambiente fechado, e até 50 metros em ambiente aberto.

      Abraço.

      Adilson – Equipe MakerHero

  77. Alguém testou isso ? parece que os pinos no desenho não são o mesmo da programação tem que alterar desenha esta 7 e 8 e no código 9,10 mesmo corrigindo não funciona alguém teve sucesso ?

    1. Denner,

      Imaginei que tivesse algo errado assim q ví o código. Não ligamos o pino 9 e 10… Então, como iríamos usá-los. Bem, abri o código fonte da biblioteca e fui atrás do construtor da RF24.

      Quando a gente roda no programa:

      RF24 radio(9,10);

      Estamos criando, instanciando um objeto da classe RF24. Isso chama o construtor da classe. Quem não está familiarizado com orientação à objetos, basta entender que, quando a gente instancia um objeto da classe RF24, esse objeto é “construído” de acordo com o que está declarado em RF24(), no arquivo da biblioteca RF24, o arquivo RF24.h

      Para achar este construtor, basta procurar um método RF24() sem a definição de retorno. E eu encontrei isso:

      /**
      * Constructor
      *
      * Creates a new instance of this driver. Before using, you create an instance
      * and send in the unique pins that this chip is connected to.
      *
      * @param _cepin The pin attached to Chip Enable on the RF module
      * @param _cspin The pin attached to Chip Select
      */
      RF24(uint8_t _cepin, uint8_t _cspin); <——————————- ESTA LINHA… =)

      Como todo bom código, a explicação está no comentário. Então, p fazer funcionar conforme a montagem deste post, precisamos declarar:

      RF24 radio(8,7);

      Funcionou pefeitamente p mim:

      ==================================================
      RF24/examples/GettingStarted/

      ROLE: Pong back

      *** PRESS 'T' to begin transmitting to the other node

      STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
      RX_ADDR_P0-1 = 0xe7e7e7e7e7 0xf0f0f0f0d2
      RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
      TX_ADDR = 0xe7e7e7e7e7
      RX_PW_P0-6 = 0x00 0x20 0x00 0x00 0x00 0x00
      EN_AA = 0x3f
      EN_RXADDR = 0x03
      RF_CH = 0x4c
      RF_SETUP = 0x07
      CONFIG = 0x0f
      DYNPD/FEATURE = 0x00 0x00
      Data Rate = 1MBPS
      Model = nRF24L01+
      CRC Length = 16 bits
      PA Power = PA_HIGH
      ==================================================

      Abraços.

  78. Ola, tenho um controle remoto na freq. 2,4ghz(aciona uma cortina elétrica), gostaria de clonar esse controle através do arduino UNO e um modulo nrf24l01. Seria possível realizar essa tarefa? Tenho o arduino UNO e o modulo, mas não estou conseguindo clonar esse controle. Grato

    1. Boa noite Rodrigo,

      Até onde eu sei não é possível, a não ser que o controle remoto que você tem utilize o mesmo protocolo de comunicação do módulo.

      Abraço.

      Adilson – Equipe MakerHero

  79. Olá , alguém poderia me dizer se é possível comunicar esse módulo com um celular através de algum aplicativo? ou só comunico com outro módulo igual a esse ? Obrigado !

    1. Olá amigo, infelizmente não dá, os NRF24L01 só se comunicam entre si, para você colocar um microcontrolador como o arduino para falar com celulares existem 2 metodos, o primeiro é utilizando um modulo bluetooth ( https://www.makerhero.com/blog/tutorial-arduino-bluetooth-hc-05-mestre/ ) o segundo metodo é utilizando um shield GSM ( https://www.makerhero.com/blog/tutorial-arduino-gsm-shield/ ) agora se você desejar fazer uma rede em casa, pode criar uma rede com os nrf24l01 e apenas um deles(o metre) ligado a dos modulos citados, e ligado a um celular, dai sim, você controlaria toda a rede por celular.

    2. Boa noite,

      Não é possível, já que esse módulo usa um protocolo de comunicação diferente do wifi do celular.

      Grato.

      Adilson – Equipe MakerHero

  80. Olá estou fazendo um projeto de quarto modulo para o curso técnico em mecatrônica e gostaria de saber se é possível utiliza-lo em menores distancias sem ocorre alguma interferência ou problemas no envio do sinal.

  81. Ola tudo bem,
    Como esse módulo não funciona nos 2 modos (enviar e receber) ao mesmo tempo. Você poderia indicar um modulo parecido com esse, mais que tem essa função de enviar e receber dados ao mesmo tempo.
    Obrigado.

    1. Boa tarde Felipe,

      Tente o APC220, que envia e recebe dados via serial, talvez seja uma opção ao seu projeto :

      https://www.makerhero.com/blog/modulo-rf-apc220-arduino/

      Abraço.

      Adilson – Equipe MakerHero

    2. Olá Felipe,

      Na verdade os nrf24l01 funcionam sim como emissor e receptor no mesmo sketch, ou seja, você pode usar um programa que ele passa alguns milisegundos(ou ciclos) enviando e outros milisegundos(ou ciclos) recebendo, o lance é que milisegundos(ou ciclos) é algo tão rapido que você nem notará que não se trata de ao mesmo tempo.
      Dentro dos exemplos da propria biblioteca RF24 tem um exemplo de PING pair se não me engano que faz isso, ele emite e aguarda a resposta, pra isso um radio entra como emissor, emite e vira receptor, o do outro lado faz o contrario, originalmente tá como receptor, dai quando recebe ele se transforma em transmissor pra dizer que recebeu o dado.
      Dá uma fuçada nos exemplos que tá lá.

      1. Obrigado pela dica, vou dar uma olhada nesse exemplo.

    3. Felipe, e ai resolveu o seu problema? Eu estou com o mesmo….queria uma hora enviar o dado outra receber. Como faço?

  82. Boa noite,
    Preciso de uma ajuda de vocês. Tenho 4 módulos e preciso enviar um texto de uma módulo
    para o outro. Este texto possui de 30 a 50 caracteres. Como eu faço isso?
    Obrigado pela atenção.
    Ernany

    1. Bom dia Ernany,

      É possível fazer isso, mas ainda não temos nenhum tutorial ou exemplo mostrando isso.

      Grato.

      Adilson – Equipe MakerHero

  83. Olá Filipe,

    Estou com um enorme problema, criei uma shield para o arduino UNO poder utilizar os nrf24l01 sem maiores problemas, dai fiz algumas aplicações com eles e todas correram bem.
    O problema foi quando precisei utilizar os modulos de maior potência, os nrf24l01+PA+LNA que segundo o fabricante são para 1000m.
    O problema é que com a mesma montagem e os mesmos sketchs eu consigo fazer uma aplicação rodar perfeitamente com a versão sem amplificação, já quando coloco a versão amplificada ele funciona por um tempo depois para, e chega até a queimar o radio.
    Você tem alguma ideia do que pode estar acontecendo ?

    1. Boa noite Weider,

      Infelizmente não temos informações sobre esse módulo em especial. Esse link tem informações úteis e algumas restrições sobre esse módulo que você está utilizando : http://www.elecfreaks.com/wiki/index.php?title=2.4G_Wireless_nRF24L01p_with_PA_and_LNA

      Abraço.

      Adilson – Equipe MakerHero

    2. O motivo para o nrf24l01+PA+LNA parar de funcionar deve-se pelo fato dele necessitar de uma corrente superior do que a porta de 3v3 do arduino pode fornecer a melhor solução é utilizar um regulador de voltagem independente, tive o mesmo problema e foi resolvido desta forma.

  84. Olá, este módulo não precisa de nenhuma antena para alcançar as distâncias prometidas (10m indoor, 100m outdoor)?
    Somente a “mini” anterna já embutida no módulo garante estas distâncias?
    Caso eu tenha 10 destes módulos em uma casa, haverá conflito de transmissão? Qual protocolo ele utiliza?

    1. Boa noite Luis,

      Segundo informações do fabricante, ele alcança essas distâncias apenas com a antena embutida. Quanto à utilização de vários módulos, cada um deles é endereçado individualmente, o que evita conflitos.

      Adilson – Equipe MakerHero

  85. Bom dia,

    Qual a quantidade máxima de transmissores (clientes) por receptor (servidor)?

    Grato.

    1. Boa noite Daniel,

      Teoricamente não há limite, pois você pode se comunicar com quantos módulos quiser, apenas alterando o endereço do destinatário.

      Abraço.

      Adilson – Equipe MakerHero

      1. Como identificar os endereços de cada modulo?

  86. caro colegas acabei de adquirir meu primeiro kit de arduino ainda nao recebir confeço que estou ansioso,eu gostari de estreiar montando um carrinho de controle remoto tanto com modulo tx rx 433mhz ou o nrf24l01 se algum amigo possui um codigo que usa este modulo e poder me ceder pode enviar para [email protected] ficarei muito agradecido.

  87. Parabéns, excelente artigo.

    1. Valeu Diego ! Abraço.

      Adilson – Equipe MakerHero

  88. Olá, estou testando esse código com um Arduino Leonardo, porém sem sucesso,
    retorna uma mensagem de erro:
    rf24.cpp.o: In function `__static_initialization_and_destruction_0′:
    C:arduino-1.0.5/rf24.ino:30: undefined reference to `RF24::RF24(unsigned char, unsigned char)’
    rf24.cpp.o: In function `loop’:

    No compilador já está setado para Arduino Leonardo COM3 e AVRISP mkII
    O que posso estar fazendo de errado?

    1. Boa tarde Adair,

      Qual versão da IDE você está usando ? Tente na versão 1.0.5.

      Grato.

      Adilson – Equipe MakerHero

  89. Olá

    tem com fazer de uma forma que eu pressione T e clique em ENVIAR em um dos Arduinos e será iniciado o processo de transmissão de dados. No outro Arduino, será iniciado o processo de recepção SEM pressionar R será iniciado o processo de recepção?
    tipo assim modificar os dois arduinos, porem apenas com um só, pois quero controlar um robô que envia dados de sensores.

    obrigado.

    1. Boa tarde Felipe,

      Teoricamente sim, você só teria que achar a programação adequada para isso, já que o módulo funciona tanto no modo de transmissão como de recepção.

      Abraço.

      Adilson – Equipe MakerHero

    2. Você poderia deixar o robô em modo de recepção e quando ele receber um determinado comando ele muda para transmissão e transmite os dados , é o mesmo com o transmissor depois da transmissão ele muda pra receptor

  90. Boa Tarde,

    Vocês teriam algum exemplo de conexão de um arduíno com uma cubieboard utilizando o NRF24L01?

    Grato

    1. Boa tarde Mário,

      Ainda não temos esse exemplo.

      Adilson – Equipe MakerHero

  91. Olá Filipe, estou com um problema não estou conseguindo localizar aonde você configurou a distancia entre o Transmissor e o Receptor , se possível me forneça o código , estou fazendo um projeto e preciso colocar uma distancia entre 5 METROS entre Transmissor e o Receptor.
    Abraços

    Muito Obrigada deis de já !

    1. Bom dia Monique,

      Não entendi a pergunta com relação à distância.

      Grato.

      Adilson – Equipe MakerHero

  92. Olá Filipe, estou com um problema não estou conseguindo localizar aonde você configurou a distancia entre o Transmissor e o Receptor , se possível me forneça o código , estou fazendo um projeto e preciso colocar uma distancia entre 5 METROS entre Transmissor e o Receptor.

    Muito Obrigada deis de já !

  93. Ola, tendo em vista que o alcance deste diapositivo em espaços fechados como uma casa por exemplo, é de 10m. É possível usar um módulo intermediario como repetidor?

    Grato!

    1. Boa tarde Luan,

      Teoricamente sim, você só teria que programá-lo para que ele seja a “ponte” entre um módulo e outro.

      Abraço.

      Adilson – Equipe MakerHero

  94. Olá!! Primeiramente, obrigado pela resposta anterior que me conduziu até aqui!! Porém esse post me levou à uma segunda questão, eu consigo enviar dados para ele no modo receptor somente de um outro igual a ele? e se sim eu terei de ter um arduino ligado à ele? Pergunto isso por causa do meu projeto, o botão de mesa pra chamar garçom, eu teria que ter um artduino em cada mesa?

    1. Boa noite Tiago,

      Não testei em nenhuma configuração sem usar o Arduino.

      Abraço.

      Adilson – Equipe MakerHero

  95. Olá bom dia!
    Sou aluna da escola SENAI FUNDAÇÃO ZERRENNER, estudo o curso técnico em eletrônica e estou a poucos meses de entregar o tcc, gostaria de obter uma ajuda melhor com relação a essa comunicação entre os arduinos, pois quando vou compilar o código na IDE do arduino da erro, sendo que ja efetuei download da biblioteca do mirf, seria necessário fazer dowload de mais alguma biblioteca ?

    1. Olá Camila, desculpa estar tomando o espaço de resposta que normalmente é destinado ao nosso nobre Filipe, mas vou tentar te dar alguma ajuda.
      A comunicação sem fio entre arduinos pode ser feita de variadas formas, desde os xbee que utilizam comunicação serial até esses nrf24l01.
      Os nrf24l01 não possuem bibliotecas proprias do fabricante, logo, para utiliza-los com os arduinos, você terá que usar uma biblioteca escrita por usuários, e existem várias bibliotecas.
      Pessoalmente não gostei da mirf,, gostei mais da rf24., o site para obter ela é o https://github.com/maniacbug/RF24
      Já se vocÊ pretente fazer uma comunicação entre muitos pontos, tipo uma rede a biblioteca ideal seria a rf24network, o site pra ter informações sobre ela é o http://maniacbug.wordpress.com/2012/03/30/rf24network/

      Pra os melhores exemplos sem erro de falha, existe um blog de uma galera de uma universidade com dois simples exemplos, um com cada uma dessass bibliotecas, mas curiosamente são os mais simples, diretos, e funcionais exemplos que já achei até hoje, logo visite: http://futebol-uff.blogspot.com.br/2012/12/nrf24l01-testes-iniciais.html e veja o que falei.

      Bem, espero ter ajudado.

  96. Bom dia filipe, estou iniciando meu tcc, e estou querendo fazer no meu projeto dois notebooks se comunicarem através de um ou dois LEDS de autro brilho utilizando arduino, ou seja enviar dados de um para o outro utilizando a luz. Isso é possivel? ja fez algo parecido?

    1. Boa noite Allyson,

      Não temos nenhum projeto nesse sentido, mas teoricamente é possível, Você poderia utilizar leds de alto brilho e LDR´s para detectar a luminosidade.

      Boa sorte com o TCC. Abraço !

      Adilson – Equipe MakerHero

  97. Olá, comprei esse módulo aqui no entanto não consegui fazer com que o par se comunicasse. Nenhum dos tutoriais nem bibliotecas funcionariam. Há alguma diferença entre esse módulo e este?

    http://produto.mercadolivre.com.br/MLB-586137451-modulo-nrf24l01-wi-fi-transceiver-arduino-pic-avr-frete-7-_JM

  98. Olá Filipe,

    Cara, sou um grande fã e admirador seu, e meu interesse é apenas ajudar.
    Sobre a pergunta sobre a possibilidade de dois modulos em um mesmo arduino, veja a linha 67 da pagina oficial da livraria nRF24: http://www.airspayce.com/mikem/arduino/NRF24/ (logo acima do topico Example programs)

    Meu caro Filipe, quero te agradecer de coracão, pois descobri sobre esse maravilhosos modulos atraves de você.
    A questáo é que fazendo pesquisas, descobri que estão sendo lançadas livraria que estão tornando esses baratos modulos, em peças tão poderosas como os Xbee.

    Por exemplo se você desejar criar redes mais complexas o mesmo criador da biblioteca NRF24 o MANIACBUG, criou a biblioteca RF24NETWORK:
    VIDE AQUI: http://maniacbug.wordpress.com/2012/03/30/rf24network/

    Já se seu desejo é botar os nRF24l01 pra competir pau a pau com os xbee, criando redes mesh e modos supercomplexos de comunicacao com inumeros nós, entáo a coisa é com a biblioteca HADIOHEAD
    VIDE AQUI: http://www.airspayce.com/mikem/arduino/RadioHead/

    Bem, peço que me perdõem por estar espondo tais informações antes mesmo de fazer plenos testes com essas bibliotecas, mas adoro ajudar, e preferi correr o risco e pedir que aprendamos juntos.

    Logo, peço a todos que forem testando e encontrando coisas legais, postem aqui como fizeram.

    OBRIGADO.

  99. Olá boa tarde, com este modulo eu posso enviar e receber dados de um arduino utilizando rede wi-fi ?

    1. Boa tarde Rodrigo,

      Não, os protocolos de comunicação são diferentes da rede wifi padrão 802.11.

      Abraço.

      Adilson – Equipe MakerHero

  100. Boa noite Filipe,

    Olhei rapidamente o tutorial, porém não vou seguir por enquanto pq ainda não comprei o módulo, pois estou procurando um que melhor se adapta à minha necessidade… Mas já me bateu uma dúvida…

    A comunicação entre os módulos é só uma via (tipo um fala e os outros somente escutam) ou eles podem realmente se comunicar enviando e recebendo dados, ou seja, enviando uma “pergunta” e recebendo uma “resposta”, por exemplo, um módulo envia um comando solicitando a hora e outro responde com a hora atual??? Ou o master envia um comando pra um slave solicitando a temperatura e o slave responde com a temperatura do ambiente… Bom, acho que entendeu, né? hehehe

    Muito obrigado!

    1. Boa tarde Carlos,

      Os módulos funcionam nos dois modos : envio e recebimento de informações. Você pode configurar o módulo para, por exemplo, enviar um sinal e depois entrar em estado de espera, aguardando a resposta.

      Abraço.

      Adilson – Equipe MakerHero

      1. O protocolo SPI possibilita a utilização de vários dispositivos na mesma interface, tendo os pinos SCLK, MOSI e MISO em comum a todos os dispositivos, e cada escravo terá um pino associado SSn, onde n é o número do escravo.

  101. Olá Filipe, gostaria de conectar dois modulos nrf24 em um só arduino, um só enviando e o outro só recebendo isso é possível ? se sim, como conectar os pinos de cada um? como fazer as ligações? OBRIGADO.

    1. Boa noite,

      Não é possível, porque o módulos teriam que utilizar a interface SPI. E temos somente uma disponível no Arduino.

      Abraço.

      Adilson – Equipe MakerHero

  102. Primeiramente parabéns pelo site.
    Mas eu não conseguir entender o seguinte:
    1º Depois de fazer o que foi descrito no post, como eu faria para transmitir um numero pelo modulo para o outro arduino ?Se esse numero fosse 1 ele ligava o led no pino 13 e se fosse 0 led desligava.

    1. Boa noite Luiz,

      Obrigado pela visita. No momento não temos nenhum exemplo com essa configuração, mas você pode utilizar tanto esse tutorial do NRF24L01 como os tutoriais do Bluetooth e montar um código para essa transferência de dados.

      Abraço.

      Adilson – Equipe MakerHero

  103. Gostaria de saber do porquê dos transceivers não conseguirem se comunicar entre dois arduinos unos comprados aqui também(erro de envio: falha). Qual IDE de arduino é recomendada?

    1. Boa noite Breno,

      Nos nossos testes usamos 2 Arduino Uno. A versão de IDE que utilizamos é a 1.0.5.

      Grato.

      Adilson – Equipe MakerHero

  104. só possível enviar e receber dados com o arduino uno? nao existe algum projeto com pic capaz de substituir o aduino?

    1. Boa noite Morais,

      Aqui no blog ainda não temos um projeto nesse sentido, mas você consegue informações sobre a ligação do NRF24L01 com o PIC nesse link :

      http://wordpress.codewrite.co.uk/pic/2013/12/11/nrf24l01sw/

      Grato.

      Adilson – Equipe MakerHero

  105. Olá, Gostaria de um exemplo de como usar NRF24L01 + ENC28J60… não consegui integrar as duas em um mesmo hardware…

    1. Olá bruno, também tive este mesmo problema, parece que o arduino não consegue gerencia o enc28 e enviar dados por rf simultaneamente.
      Adilson, creio que essa duvida é para todos que tentaram fazer tal combinação de placas e, se não for muito incômodo, gostaria que testasse para nos auxiliar.
      Grato!

      1. Boa tarde Vitor,

        Não temos nenhum esquema ainda nesse sentido mas vamos estudar a possibilidade de fazer um post integrando esses módulos.

        Abraço.

        Adilson – Equipe MakerHero

  106. sou iniciante com o arduíno e queria saber do que preciso pra montar um sistema de comunicação com o meu android ou pc, obg!

    1. Bom dia Edmo,

      Existem várias opções para comunicação, e tudo vai depender do seu projeto.

      Temos por exemplo módulos bluetooth, módulos Xbee e outros módulos Wireless que você pode utilizar para esse fim.

      Acesse a loja MakerHero em http://www.makerhero.com e confira os nossos produtos.

      Abraços

      Adilson – Equipe MakerHero

  107. Já adquiri várias coisas contigo, agora é hora de tirar umas duvidas contigo, na verdade duas Duvidas 1ª- Qual a distancia maxima informada pelo fabricante, e qual distancia real que vocÊ acredita que ele alcança ? – Comparando esse modulos aos modulos 433mhz e depois comparando com os Xbee, o que você poderia me dizer ?

  108. Bom dia, estou desenvolvendo um projeto e estou com problema na transmissão, sera que você pode me auxiliar?
    Preciso construir um equipamento para sinalização, montei o hardware assim, um arduino uno + RTC 1307 + Shield Ethernet slot card + NRF24l01 + led super brilho + buzer + botão.

    O que eu preciso que faça:

    Ao teclar o botão o equipamento TX envia sinal aos demais equipamentos, ao receber o sinal, os RX acendem um Led, acionam um buser, e registram no SD Card. a data a hora o min e seg, e o TX registra a Hora Min e seg.

    Todo equipamento tem que ser TX e RX, preciso de um alcance entre 150 e 250 metros.

    Pela sua experiência você acha que isso é possível?

    1. Boa tarde Rodrigo,

      É possível sim. Só estou achando a distância um pouco elevada. E não esqueça que você vai precisar de um módulo NRF24L01 no TX, pois o protocolo wireless dele não é o 802.1xxxx, comum nas redes de computadores, então ele não vai se comunicar com o Ethernet Shield.

      Abraço.

      Adilson – Equipe MakerHero

  109. Pelo que entendi da imagem do serial monitor, esse módulo trabalha com endereçamento “RX_ADDR” e “TX_ADDR”, é isso mesmo? Então seria possível um Arduino central se comunicar simultaneamente com vários outros, Arduinos Pro Mini por exemplo, cada um com um módulo NRF24L01?

    1. Boa tarde Alessandro,

      Isso mesmo. Com esse módulo, você consegue ter um ponto central, e configurar os outros NRF24L01 para executarem tarefas específicas.

      Abraço.

      Adilson – Equipe MakerHero

      1. ola td bem gostaria de saber como montar e quais os materias corretos utilizar …
        montar um ponto central de controle com 4 sensores ultrassonicos medindo a distancia e mandando as informaçoes para um display sem fio …
        e no display eu conseguir configurar uma distancia a ser estabelecida .
        obrigado …
        gostaria talves ate da ajuda de vcs para montar este projeto se possivel entrar em contato comigo pelo email …

  110. olá é possível uma montagem do sensor de distancia para si comunicar entre ele e o arduino

    1. Boa noite José,

      Que tipo de sensor de distância você quer utilizar ?

      Grato.

      Adilson – Equipe MakerHero

  111. Eu tenho uma dúvida quanto a este módulo. Posso utilizar ele enviando e recebendo dados ao mesmo tempo? Ou eu teria que alternar entre essas funções?

    1. Boa tarde Rafael,

      Esse módulo não funciona nos 2 modos ao mesmo tempo. Você deve configurar cada módulo para receber ou transmitir, e alternar esses modos conforme a necessidade.

      Grato.

      Adilson – Equipe MakerHero

  112. Olá, gostaria de saber se é possivel fazer a transmissao desse módulo com um smartphone?

    1. Boa tarde Luciano,

      Não. apesar desse módulo trabalhar na frequencia de 2.4 Ghz, ele não segue o padrão 802.1XXXXX normalmente utilizado nas comunicações wireless.

      Para comunicação com um smartphone, recomendamos o módulo bluetooth :

      https://www.makerhero.com/pd-b4742-modulo-bluetooth-rs232-hc-05.html?ct=&p=1&s=1

      Abraço !

      Adilson – Equipe MakerHero

  113. kra, otimo post, agora aki no meu PC (com navegador Chrome), o codigo esta aparecendo cheio de codigos HTML…

    1. Boa tarde Flavio,

      Obrigado por avisar. Já corrigimos o código.

      Qualquer problema, estamos à disposição.

      Grato.

      Adilson – Equipe MakerHero