Questo circuito integrato fu originariamente progettato per collegare al PC mouse e tastiere wireless, ma ben presto è stato usato per interfacciare radiocomandi e dispositivi IoT.
Due la regioni del successo (nota 8), soprattutto in ambito educativo ed hobbistico:
Spesso questo intergrato è indicato come nRF24L01p. nRF24L01 è invece un modello precedente, non particolarmente diffuso e solo in parte compatibile con quanto descritto in questa pagina.
Il foglio tecnico contiene tutte le informazioni dettagliate sul componente. Di seguito gli elementi più rilevanti.
Questo integrato trasmette su una radiofrequenza di poco più di 2.4 GHz (nota 6). Questa frequenza è relativamente elevata e quindi non permette di coprire distanze elevate: tipicamente questi moduli difficilmente superano distanze di una decina di metri (nota 1).
Sono disponibili oltre 100 canali RF (nota 2); la frequenza della portante è impostata scrivendo un numero tra 0 e 125 nel registro RF_CH ed è ottenuta dalla formula F0 = 2400 + RF_CH [MHz]. Il canale RF usato dal trasmettitore deve ovviamente essere lo stesso usato dal ricevitore
La banda usata da ciascun canale è di 1 MHz se si imposta una velocità inferiore a 1 Mbit/s e di 2 MHz se si imposta una velocità di 2 Mbit/s.
La modulazione usata è GFSK (variante a banda stretta della FSK) che permette una discreta resistenza alle interferenze. Questo aspetto è importante se si usa nRF24L01+ in ambienti che vedono la presenza di apparati che trasmetto sulle stesse frequenze, come WiFi e bluetooth.
La tensione di alimentazione di nRF24L01+ è compresa tra 1.9 V e 3.6 V. Questi valori permettono l'alimentazione diretta con molte batterie sia al litio che alcaline.
Gli ingressi sono 5 V tolerant, cioè funzionano correttamente se pilotati, per esempio, da Arduino (nota 2 di un'altra pagina). ATTENZIONE: solo i segnali di I/O sono compatibili con i 5 V, non l'alimentazione!
La corrente di alimentazione è circa 11 mA in trasmissione, 13 mA in ricezione; quando l'integrato non è attivo la corrente scende a circa 25 µA; è presente anche una modalità in cui il consumo di corrente è inferiore a 1 µA. Questi aspetti sono particolarmente significativi quando si utilizzano batterie per l'alimentazione.
La potenza del segnale radio trasmesso può essere impostata su quattro diversi valori compresi tra 0 dBm e -18 dBm scrivendo due bit nel registro RF_PWR. Ovviamente un aumento della potenza di trasmissione permette maggiori distanze, ma causa un maggiore consumo di corrente.
La potenza del segnale radio ricevuto deve essere sufficiente (sensitivity); per garantire un BER accettabile, la potenza ricevuta deve essere di almeno -82 dBm se la velocità di trasmissione è di 2 Mbps, per velocità minori basta una potenza minore, cosa comune a molti ricevitori.
nRF24L01+ può comportarsi sia come trasmettitore (TX) che come ricevitore (RX), ma non in contemporanea, analogamente a quanto avviene in comunicazioni half duplex.
Il dispositivo che inizia la comunicazione è indicato come Primary Transmitter o PTX. Quello che inizialmente si comporta come ricevitore è indicato come Primary Receiver o PRX. In genere lo scambio di dati è bidirezionale: il PTX può quindi anche ricevere dati ed il PRX può anche trasmettere dati.
nRF24L01+ utilizza nella trasmissione un frame con la seguente struttura:
nRF24L01+ individua automaticamente gli errori di trasmissione grazie al CRC; i frame contenenti errori sono scartati.
nRF24L01+ può opzionalmente gestire il riscontro dei frame: il PRX può cioè confermare con un ACK la ricezione corretta di un frame al PTX; nel caso in cui il PTX non riceve l'ACK può ritrasmettere automaticamente il frame. Tali caratteristiche sono indicate come Enhanced ShockBurst:
La comunicazione bidirezionale tra un Primary transmitter ed un Primary Receiver è indicata con il termine Data Pipe ed identificata da un indirizzo.
Un PRX può scambiare dati con fino ad un massimo di sei PTX, attraverso sei Data Pipe, ciascuno identificato da un diverso indirizzo (nota 3). Questa modalità di funzionamento è indicata nei fogli tecnici come MultiCeiver.
Tutti i dispositivi devono condividere alcuni parametri (canale usato, bit rate ed altri).
Se tutti i PTX condividono lo stesso indirizzo, è ovviamente possibile collegare un qualunque numero di PTX ad un singolo PRX; in questo caso non è però utilizzabile il meccanismo di riscontro dei pacchetti.
nRF24L01+ contiene tre buffer FIFO dove sono accodati i frame ricevuti. Questo permette una certa "elasticità" nell'elaborazione dei frame ricevuti, che possono essere gestiti anche con un certo ritardo rispetto alla ricezione, senza interrompere la ricezione di ulteriori frame.
Analogamente sono presenti tre buffer FIFO usati per la trasmissione, utili per accodare nuovi frame in attesa dell'effettiva trasmissione.
Il collegamento tra RF24L01+ ed il processore principale è realizzato con un'interfaccia SPI ed un ulteriore pin CE (nota 4).
L'uso di SPI permette il collegamento a praticamente tutti i processori. Alcuni esempi:
Pagina creata nel dicembre 2021
Ultima modifica: 9 febbraio 2023
Appunti scolastici - Versione 0.1028 - Novembre 2024
Copyright 2012-2024, Vincenzo Villa (https://www.vincenzov.net)
Creative Commons | Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)