NRF24L01 com Arduino

O módulo NRF24L01 é um circuito poderoso e barato de comunicação por Radiofrequência (RF) sem fio que opera na faixa de 2,4GHz de baixo consumo de energia e que vem ganhando espaço em diversas aplicações industriais, o melhor de tudo é que ele pode ser usado no Arduino.


O Módulo
Figura 1 - Exemplo do Módulo NRF24L01
O circuito é baseado no chip nRF24L01+ da Nordic Semiconductor que integra um transceptor (Transmissor e Recepitor) de RF a 2,4 GHz, um sintetizador de RF, e também inclui o protocolo acelerador de hardware ShockBurst dando suporte a uma interface avançada SPI (Serial Peripheral Interface) de alta velocidade para o controlador de aplicação.

Características

Por se sustentar sob um chip de baixo custo de aquisição (mas lembrem-se, poderoso) existem várias implementações deste hardware no mercado, mas todas desempenham as mesmas funcionalidades. Recomendo fortemente que baixe e leia o DATASHEET do nRF24L01+ para uma total compreensão do equipamento.
  • Comunicação RF sem fio a 2,4GHz. (Obs:. Este módulo opera na mesma frequência do padrão IEEE 802.11 [b | g | n] "redes de internet sem fio" que é uma faixa de frequência livre "Não há necessidade de pagamento de taxas para aplicações que operem nessa faixa, desde que respeitem os limites de banda e potência vigentes em cada País" mas não causa interferência significativa no sinal da rede sem fio, contudo para melhor performasse deste modo uma analise dentre os 128 canais possíveis de se trabalhar deve ser feita para manter-se completamente fora da interferência exterior)
  • Permite comunicação entre vários pontos de acesso.
  • Velocidade de dados [256kbps | 1Mbps | 2Mbps]
  • Distancia de operação entre 70m a 100m para 256kbps (600m a 1Km nos módulos que vem com antena)
  • Modos de operação [Modo de baixa potencia | Modo de Standby | Modo RX | Modo TX]
  • Sensibilidade de operação de -85dBm em 1Mbps.
  • Tensão de operação entre 1.9V e 3.6V.
  • Corrente de operação em 13,2 (RX) e 13,5mA (TX) para 2Mbps. (1uA se no modo de baixa potencia)
  • Dimensões figuram em média de 20mm x 29mm x 0.8mm
Conexão

Para conectar o módulo NRF24L01 com o Arduino (Pois usaremos a biblioteca RF24) basta seguir o especificado na Tabela 1, é importante ressaltar que algumas placas do módulo vem com 8 pinos e outras com 10 (Estas possuem 2 pinos para o VCC e GND) mas a conexão é feita da mesma forma.

Pinos do Módulo
Pinos do ArduinoPinos Arduino MegaDescrição
GND
GNDGNDAlimentação negativa
VCC3.3V3.3VAlimentação positiva (Atenção, cuidado para não ligar ao 5V)
CE949Habilitador que ativa o modo de RX ou TX
CSN1053SPI Seletor do chip
SCK1352SPI Clock
MOSI1151SPI (Escravo) Dados de Entrada
MISO1250SPI (Escravo) Dados de Saída
IRQ22Pino de interrupção (Uso não obrigatório) (Serve para alertar quando tem dados
chegando ou o número máximo de retransmissão foi alcançado)
Tabela 1 - Pinagem do módulo ao Arduino

Figura 2 - NRF24L01 Pinout

Biblioteca

A RF24 é uma biblioteca especialmente voltada para trabalhar com o Módulo NRF24L01 e o Arduino (Há também a intensão de expandir para outras plataformas de hardware) que suporta todas as funcionalidades do chip e também é muito simples de utilizar.

Para uma completa avaliação da biblioteca nada melhor que a página oficial do desenvolvedor LINK lá você encontrará uma documentação completa bem como informações sobre o chip e novidades no código.

Agora você pode instalar uma biblioteca em [Incluir Biblioteca -> Gerenciar Bibliotecas], pesquise por nRF24L01 e instale a RF24 fornecida por TMRh20.

Programação

Passo 1 - Instalação
Para instalar a biblioteca basta ir no LINK oficial do desenvolvedor hospedado no GitHub, fazer ou download ou um git clone do código e salvar tudo na pasta /libraries na pasta do Aruduino IDE, pronto, é só reiniciar a IDE.

Passo 2 - Escolher um canal de operação

Escolher um canal de operação é muito importante para se trabalhar com este módulo. Com falado anteriormente ele opera na faixa de frequência de 2,4GHz, faixa está que livre de taxas e por isso possui diversos dispositivos operando nela (rede de internet sem fio, bluetooth, telefone residencial sem fio e muitos outros), para isso a biblioteca RF24 possui um código já pronto para fazer essa tarefa, para acessá-lo basta abrir o Arduino IDE então no Menu Principal escolha FILE -> Exemplos -> RF24 -> scanner

Não há a necessidade de alterar nada no código, basta conectar o módulo ao Arduino como foi previamente descrito e fazer o UPLOAD do código, ao abrir o Monitor da Serial (Repare que o código está configurado para 57600 de baundrate) você verá uma saída semelhante a exibida na Figura 2, esse sketch (Código) monitora os 128 canais da faixa 2,4GHz possíveis de se trabalhar com o módulo e mostra a atividade periodicamente neles.

Figura 2 - Saída serial gerada pelo sketch "scanner"
Para entendimento da Figura 2 observe a segunda e a terceira linha como colunas, elas indicam em hexadecimal o 128 canais (De 0 a 127), as demais linhas são geradas segundo a segundo indicando a atividade em cada canal, a ideia é selecionar algum canal que só apresentem 0 (zeros) na saída (No meu caso, há muitos livre).

Passo 3 - Testar

Para testar o módulo, tudo que você precisa são de dois Arduinos e dois Módulos RF24L01. Faça a conexão como descrito anteriormente faça o upload do Código 1 no primeiro Arduino, este será a estação de transmissão:



No outro Arduino faça o upload do Código 2, este será a estação de recepção:



Veja na saída serial o resultado final.
NRF24L01 com Arduino NRF24L01 com Arduino Reviewed by AJ Alves on sexta-feira, fevereiro 15, 2013 Rating: 5

Um comentário:

guilherme disse...

da um monte de erro esse codigo ai

Tecnologia do Blogger.