A placa retratada acima foi comprada na Tato, mas placas iguais ou semelhante são facilmente encontradas.
O nRF24L01+ trabalha na faixa de 2.4GHz (a mesma que WiFi, Bluetooth e fornos de micro-onda). Ele suporta taxas de 250Kbps, 1Mbps e até 2Mbps e possui modos de operação de baixíssimo consumo. Trabalha com alimentação de 1.9 a 3.6V e tolera 5V nos pinos de entrada. A interface com um microcontrolador é SPI. A página do chip no fabricante está aqui; o link direto para a especificação é este.
O nRF24L01+ é um transceiver (transmissor e receptor). Várias funções de protocolo são realizadas internamente ao chip, reduzindo o esforço do microcontrolador. A figura abaixo mostra o diagrama de blocos:
O bloco "RF Synthesiser" faz a mágica de gerar com precisão as frequências necessárias a partir de um cristal de 16MHz.
Na parte do transmissor RF, o que nos interessa é que é possível programar a frequência central de comunicação e a potência de saída. Existem 126 frequências possíveis, espaçadas de 1MHz. Entretanto, para comunicar a 2Mbps é necessário espaçar os canais de 2MHz portanto só devem ser usadas metade destas frequências quando se seleciona esta taxa. Para o receptor escutar a transmissão ele precisa estar programado para a mesma frequência. Existem quatro opções para a potência de saída, permitindo um certo compromisso entre alcance e consumo.
O nRF24L01+ possui cinco modos de operação:
- Power Down: consumo mínimo, só SPI esta ativo, tempos maiores para iniciar recepção ou transmissão.
- Standby-I: consumo baixo, mas com tempos menores para iniciar a comunicação.
- Standby-II: reduz um pouco mais os tempos com um aumento de consumo
- RX: ativo e recebendo. Os pacotes recebidos são validados e colocados na fila de recepção.
- TX: ativo e transmitindo. Os pacotes na fila de transmissão são enviados. Cuidado deve ser tomado para não transmitir continuamente por mais de 4ms, pois durante a transmissão o PLL que gera as frequências opera em open-loop (ou seja, sem corrigir desvios). Este é o modo de maior consumo,
- Preâmbulo (1 byte): usado para indicar o início de um pacote e sincronizar o receptor.
- Endereço (3 a 5 bytes - tamanho configurável ): o receptor ignora automaticamente pacotes para outro endereço.
- Campo de controle (9 bits): este campo contém o tamanho dos dados, a identificação do pacote (para desprezar pacotes duplicados quando um ACK é perdido) e um flag para desligar o envio automático de ACK.
- Os bytes de dados (0 a 32)
- CRC (1 ou 2 bytes): usado para detectar erros de comunicação.
Um modo especial é o MultiCeiver, onde o receptor aceita até seis endereços diferentes, movendo os pacotes de cada um para uma fila separada.
Além dos sinais do SPI o nRF24L01+ possui um sinal CE para ativar o chip (e usar os modos Rx e Tx) e um sinal IRQ (para sinalizar eventos como a recepção de um pacote).
No próximo post vamos começara a fazer experiências com o nRF24L01+, usando um Arduino.
Nenhum comentário:
Postar um comentário