NRF24 USB

Da GolemWiki.
Versione del 22 ago 2019 alle 21:29 di Giulio (discussione | contributi) ([Bozza] Aggiunte foto e info pinout)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
Jump to navigation Jump to search

Golem-template-note-warning.png Pagina in scrittura, informazioni ancora parziali


Coppia di moduli equivalenti

nRF24L01+ è un transceiver a 2.4GHz con gestione automatica di protocollo a pacchetti (Enhanced ShockBurst™). La comunicazione è punto punto fra due moduli. L'interfaccia con sistemi esterni (es. microcontrollori, Arduino) avviene via SPI. Attenzione! non è un modulo WiFi (non usa il protocollo 802.11).

Principi di funzionamento

TL;DR

In linea di massima ogni modulo è contraddistinto da una coppia di indirizzi (anche identici), in trasmissione e ricezione. Ogni pacchetto inviato è marcato con l'indirizzo di trasmissione scelto e sarà processato da un modulo ricevente solamente se corrisponde al suo indirizzo in ricezione.

Il protocollo dispone nativamente di una funzione autoACK: l'unità trasmittente attende la conferma di avvenuta ricezione (ACKnowledgement), altrimenti ritenta l'invio.

Ogni modulo può ricevere o trasmettere, ma la comunicazione è half duplex: non è ammessa la bidirezionalità nello stesso istante di tempo.

Per maggiori informazioni tecniche si consiglia la lettura del manuale del chip.

Pinout e connessione ad Arduino

È necessario scaricare la libreria RF24 dal gestore librerie. Negli esempi sono già presenti degli sketch di prova per testare il corretto funzionamento del modulo (es. pingpair).

La libreria usa l'hardware SPI del microcontrollore, quindi i pin MISO, MOSI ed SCK sono fissati e riportati in tabella. È possibile variare a piacere CE e CSN con l'istruzione RF24 radio(ce, csn);, nella tabella sono riportati i valori di default. IRQ è usualmente disconnesso.

pin RF24 Arduino UNO (ATmega328) Arduino Mega (ATmega2560)
MISO 12 50
MOSI 11 51
SCK 13 52
CE 7 7
CSN 8 8

Da testare: si può tentare di creare un canale broadcast impostando lo stesso indirizzo di ricezione a più moduli e disabilitando l'autoACK, che diventa a questo punto deleterio.

Funzionamento della penna usb

Esempio di un modulo adattatore

Gli adattatori USB in commercio permettono di collegare il modulo nRF24 al PC in modo diretto, senza passare da Arduino. Nel caso in esame si è usato l'adattatore commercializzato da LC Technology. Tale adattatore:

  • forza gli indirizzi di ricezione e trasmissione a 0x0110104334;
  • viene identificato dal PC come una comune porta seriale (su Linux, ad esempio: /dev/ttyUSB0) a 9600 baud;
  • si avvia per default in modalità trasmettitore. Per passare a ricevitore è necessario cortocircuitare i due pin SWIM e GND per qualche istante.

Utilizzando quindi un generico programma per comunicazione seriale (il monitor seriale di Arduino, minicom, miniterm, etc...) è sufficiente digitare un messaggio quindi battere invio per inviarlo. Si noti che è necessario abilitare LFCR[1]) affinché la stringa venga effettivamente inviata. Il modulo invia sempre una stringa di conferma che conferma l'avvenuta o fallita ricezione, nel nostro caso in cinese :/

Per testare la comunicazione si mette a disposizione il seguente sketch di esempio da caricare su Arduino. All'accensione invia un riepilogo della configurazione del modulo nRF24 e si pone in ascolto di pacchetti trasferiti, per passare in modalità trasmissione è sufficiente battere T.

Clone fatto in casa

Modulo adattatore GOLEM

Viste le esigenze richieste dal Progetto Arcieri abbiamo realizzato una nostra versione dell'adattatore USB. I file del circuito stampato, del codice sorgente e le istruzioni di caricamento sono versionate su git.

Agendo opportunamente sul file di configurazione da caricare in memoria è possibile configurare ognuno dei registri dell'nRF24.

Riferimenti

Note

  1. Il programma di comunicazione seriale invia la coppia di caratteri "a capo" e "ritorno carrello" ogni volta che si preme invio.