Guia definitivo do Módulo Wireless NRF24L01+

Introdução

O nosso leitor já está familiarizado a fazer projetos em apenas uma placa Arduino, e só aí as possibilidade são infinitas, porém imagine agora a quantidade e a variedade de projetos possíveis de serem desenvolvidos se duas placas ou mais pudessem comunicar entre si sem a necessidade de fios entre elas. Essa é a principal funcionalidade do componente que abordaremos neste post: o Módulo Wireless NRF24L01+. Trataremos aqui sobre todas as suas características, principais funcionalidades, especificações e como utilizá-lo. Prontos para aprender? Bora lá!

Descrição e Funcionamento

O que é?

NRF24L01 é um transceptor de rádio de chip único que opera dentro das faixas de frequência ISM (Industrial, Sientific and Medical) de 2,4 – 2,5 GHz. O transceptor consiste em um sintetizador de frequência totalmente integrado, um amplificador, um oscilador de cristal, um demodulador, modulador e o protocolo Enhanced ShockBurst ™. Sua potência de saída, canais de frequência e configuração de protocolo são facilmente programáveis por meio de uma interface SPI. O consumo de corrente é muito baixo, apenas 9,0 mA a uma potência de saída de -6 dBm e 12,3 mA no modo RX. Os modos de “desligamento integrado” (Built-in Power Down) e de “espera” (Standby) tornam a economia de energia facilmente realizável.

Como funciona

O módulo transceptor nRF24L01 + transmite e recebe dados em uma determinada frequência chamada Canal (channel). Além disso, para que dois ou mais módulos de transceptor se comuniquem, eles precisam estar no mesmo canal. Este canal pode ser qualquer frequência na banda ISM de 2,4 GHz ou, para ser mais preciso, pode estar entre 2,400 a 2,525 GHz.

Cada canal ocupa uma largura de banda de menos de 1 MHz. Isso nos dá 125 canais possíveis com espaçamento de 1 MHz. Assim, o módulo pode usar 125 canais diferentes que dão a possibilidade de ter uma rede de 125 modems trabalhando independentemente em um só lugar.

Quando conectado a um microcontrolador, o módulo nRF24L01 + usa o protocolo de comunicação Serial Peripheral Interface (SPI) que usa o conceito de mestre e escravo. Na maioria das aplicações, o Arduino é o mestre e o módulo transceptor nRF24L01 + é o escravo. O número de escravos no barramento SPI é limitado e para o Arduino Uno é possível ter no máximo dois dispositivos escravos SPI, ou seja, dois módulos transceptores nRF24L01 +.

Especificações

  • Velocidade de operação de até 2Mbps, podendo ser empregados inclusive em aplicações VoIP de alta qualidade;
  • Taxas de transmissão selecionáveis entre 2Mbps, 1Mbps ou 250Kbps over the air;
  • Baixo consumo, com tensão de alimentação de 1,9 a 3,6V e corrente em modo Power Down de apenas 1uA, sendo ideal para dispositivos que operam com baterias;
  • Regulador de tensão integrado;
  • Entradas tolerantes a 5V;
  • Cristal não crítico, com tolerância de +/- 60 PPM;
  • Modulação GFSK de alta eficiência;
  • Habilidade anti-interferência;
  • Particularmente adequado para aplicações de controle industrial;
  • 125 canais, com capacidade de comunicação multiponto e frequency hopping, permitindo conexões bastante confiáveis;
  • Auto Acknowledge;
  • Controle de erros CRC por hardware;
  • Tecnologia ShockBurst™ com acelerador de protocolo por hardware, liberando o microcontrolador para tarefas mais importantes;
  • Comunicação multiponto com controle de endereçamento;
  • Software disponível para configurar os endereços, gerando interrupções apenas para dados recebidos dentro de uma mesma rede;
  • Pinagem padrão DIP com espaçamento de 2,54 mm;
  • Extremamente miniaturizado: 29 x 15 mm;
  • Pode ser conectado a uma grande variedade de microcontroladores com programação muito simples;
  • Pinagem padrão DIP com espaçamento de 2,54 mm;
  • Extremamente miniaturizado: 29 x 15 mm;
  • Alcance de até 100m em linha de visada.

Pinout

  • GND: é o pino Ground. Geralmente, é marcado por um quadrado branco ao seu redor, assim podendo ser utilizado como referência para os outros pinos;
  • VCC: fornece energia para o módulo. Ele pode ser de 1,9 V até 3,9 V. Pode ser conectado a saída de 3,3 V do Arduino. ATENÇÃO: Conectar o módulo NRF24L01+ a saída de 5 V do Arduino pode queimá-lo!
  • CE (Chip Enable): é um pino ativamente alto (active-HIGH). Quando selecionado, o módulo irá transmitir ou receber, dependendo do modo em que estiver.
  • CSN (Chip Select Not): é um pino ativamente baixo (active-LOW) porém é geralmente mantido em HIGH. Quando este pino estiver em LOW, o NRF24L01 começa a captar dados da porta SPI e processa-os de acordo com suas especificações.
  • SCK (Serial Clock): entrada de pulsos de clock providas pela conexão Mestre do SPI;
  • MOSI (Master Out Slave In): entrada SPI para o NRF24L01;
  • MISO (Master In Slave Out): saída SPI para o NRF24L01;
  • IRQ: é um pino interruptor que avisa o Mestre quando novos dados estão disponíveis para serem processados.

Exemplo Simples (Sketch)

A prática que será desenvolvida aqui tem o intuito de familiarizar o leitor com as funcionalidades do NRF24L01+. Ela consiste em estabelecer uma comunicação entre um módulo cliente e um servidor que são capazes de mandarem mensagem entre si. Para isso, é necessário baixar e instalar a biblioteca RadioHead. Para isso, basta acessar o link a seguir e clicar no local indicado na imagem para fazer o download da biblioteca.

airspayce.com/mikem/arduino/RadioHead/

Feito isso, abra sua IDE e instale a biblioteca baixada. Para isso, clique em Sketch->Incluir Biblioteca->Adicionar biblioteca .ZIP. Encontre a zip file da biblioteca no seu computador e instale-a.

Lista de Materiais

Os materiais necessários para a realização desta prática são os seguintes:

Diagrama

O diagrama do projeto está detalhado a seguir. As conexões do servidor e do cliente são as mesmas.

ATENÇÃO: Concecte o Vcc do módulo na saída de 3,3 V do Arduino. NUNCA conecte o módulo aos 5 V do Arduino, fazer isso pode queimar seu módulo!

Os pinos são:

  • Vcc -> 3V3;
  • GND -> GND;
  • CE -> 8;
  • CSN -> 10;
  • SCK -> 13;
  • MOSI -> 11;
  • MISO -> 12;

O pino IRQ do módulo não será usado.

Código

Os códigos utilizados aqui são exemplos incluídos na biblioteca que foi baixada. Serão utilizados dois códigos aqui, um para o cliente e outro para o servidor. Para acessar o código do cliente, basta abrir sua IDE e ir em Arquivo->Exemplos->RadioHead->nrf24->nrf24_client.

Ou se preferir, basta copiar o código abaixo.

Já o código do servidor é possível ser encontrado em Arquivo->Exemplos->RadioHead->nrf24->nrf_server.

O código também se encontra abaixo.

Botando pra rodar!

Após carregar o código do cliente em uma placa e o do servidor na outra, basta rodar os códigos e abrir o monitor serial para conferir os resultados. Eles devem ser semelhantes aos da imagem abaixo.

Crédito: DroneBot Workshop

Se o leitor estiver interessado em aprofundar ainda mais seus conhecimentos neste módulo super prático e quiser desenvolver um projeto mais complexo utilizando os conhecimentos adquiridos aqui, indico fortemente que acesse nosso post sobre Radio Controle! Nele, é desenvolvido uma comunicação entre um carro e um controle remoto justamente com uma variante do Módulo Wireless NRF24L01+, ótimo para aprender ainda mais. Confira!

Faça seu próprio Rádio Controle

Considerações Finais

A partir do post acima, foi possível compreender um pouco mais sobre a aplicação do Módulo Wireless NRF24L01+, bem como seu funcionamento e as vantagens de sua utilização. Se o leitor se interessou pela implementação prática do projeto, acredito que gostará dos seguintes posts relacionados:

Curtiu o post? Avalie e deixe um comentário!

Siga-nos também no Instagram e nos marque quando fizer algum projeto nosso: @eletrogate.

Até a próxima!

Referências

Avaliação: 5.0/5. De 7 votos.
Espere por favor...
Ricardo Lousada
Ricardo Lousada
Graduando em Engenharia de Controle e Automação pela UFMG. Ocupo meu tempo aprendendo cada vez mais sobre eletrônica e programação, áreas que mais gosto. Meus hobbies são cinema e livros.
Acesse nossa loja