Problemi con transceiver NRF24L01

Buonasera!

E’ la prima volta che pubblico una domanda sul forum Arduino, tuttavia prima di farlo ho cercato nelle domande già poste ma non riesco a venire a capo a questo problema.
Cercherò di essere il più dettagliato possibile.

Sto cercando di far funzionare il modulo NRF24L01 e ho comprato quello di AZDelivery: Amazon

Per capire il funzionamento ho seguito il tutorial di Paolo Aliverti su Youtube: Paolo Aliverti
Nel tutorial usa la libreria RF24 che ho correttamente installato nell’IDE: RF24

Inoltre ho anche dato una guardata al seguente tutorial sul forum di Arduino: Forum Arduino
Tale guida consiglia tra l’altro di inserire una capacità tra Vdd(3.3V) e massa, quindi ne ho messa una elettrolitica da 100 uF.

Il risultato è che, nonostante abbia seguito alla lettera il tutorial di Aliverti, usando un Arduino Uno su un transceiver e un Arduino Mega per l’altro, anche a distanza di pochi centimetri non sembra rilevare nulla!

Siccome con soli due transceiver mi è parso difficile capire se il problema fosse dei transceiver stessi, ho sfruttato l’esempio allegato alla libreria RF24 ovvero GettingStarted.
Ciò che ne consegue è che il lato server non riceve nulla, mentre il lato client tenta di inviare messaggi senza successo.
Infatti la cosa che trovo strana è che dalla seriale il client mostra la scritta seguente:

Now sending
failed
Failed, response timed out.

Il primo failed è relativo alla riga di codice che dovrebbe comunicare al transceiver il messaggio da inviare, ebbene pare non funzionare!..

Ho provato anche l’altro transceiver ma il problema è lo stesso.

A questo punto non riesco a capire se siano proprio i transceiver a non funzionare o stia sbagliando qualcosa io.
Qualcuno che abbia utilizzato questi dispositivi può aiutarmi?
Vi ringrazio in anticipo per l’attenzione! :slight_smile:

Buonasera,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

Buongiorno,
Ti ringrazio per avermi fatto notare queste cose, ho quindi scritto la presentazione e ho letto il regolamento :slight_smile:

AGGIORNAMENTO: siccome non riesco a comprendere quale possa essere il problema, ho tentato una nuova libreria, ovvero NRFLite: NRFLite
Ho utilizzato il codice dell'esempio Basic_TX.. Risultato?

Cannot communicate with radio

Questo è ciò che mi comunica la seriale.

Di transceiver ne ho comprati 3, e tutti e tre presentano lo stesso problema.
Che sia il mio un caso sfortunato? O c'è qualcosa che mi sfugge?

Il bus SPI è una brutta bestia e NON è fatto per essere portato in giro con dei fili, quindi, al 85%, il problema è nei collegamenti che devono essere il più corto possibile, senza intrecciarsi troppo.

Considera che su Arduino, di base, il bus SPI viaggia a 4MHz ... capisci da solo i problemi che questo crea ... ::slight_smile:

Guglielmo

Ciao, grazie per avermi risposto!

Quello che intendi dire è che nel protocollo SPI, con fili lunghi, si rischia che si corrompa il segnale?
I fili da me utilizzati sono lunghi 20cm, non credevo fossero eccessivi come lunghezza.

Mi consigli comunque di sostituirli?

Il bus SPI è fatto per interconnettere tra loro circuiti integrati su un PCB ed ha il pregio di raggiungere velocità di trasferimento elevatissime; il rovescio della medaglia è che quando lo si cerca di portare a spasso con i fili ... spesso non funziona :confused:

Ricontrolla bene il cablaggio e, se possibile, accorcia i cavi ed usa cavi di capacità bassissima (la capacità distorce il segnale e crea infiniti problemi).

Per i test usa uno degli esempi più semplici che trovi nella libreria che usi ...
... solo quando quest'ultimo va, puoi passare a complicare le cose :wink:

Guglielmo

Ho aggiornamenti, forse positivi!

Utilizzando i cablaggi di cui ho disponibilità a casa, ho provato un accorciamento spellandoli, tuttavia il filo in rame all'interno è troppo sottile e quindi per il momento ho preferito tenerli lunghi 20 centimetri.

Ho cercato di evitare intrecci e ho inserito la capacità da 100 uF il più vicino possibile al transceiver.

Il risultato è che, con la libreria NRFLite, non compare più quel messaggio sulla seriale che comunicava l'errore nella comunicazione tra Arduino e il modulo radio.

Che il problema fosse quello?
Prima di cantare vittoria provo a far comunicare tra loro due transceiver.
Vi aggiorno.

AGGIORNAMENTO: dopo vari tentativi credo di aver capito di essermi soltanto illuso.
I collegamenti tra Arduino e il transceiver sono corretti e la libreria NRFLite effettivamente non mostra più l'errore, tuttavia impostando l'altro Arduino come ricevitore questo continua a non ricevere nulla.

Sono tornato quindi sulla libreria RF24 e ho riprovato il GettingStarted: continua a mostrare il failed nel tentativo di scrittura sul modulo. >:(

E' vero che non ho accorciato i fili, tuttavia fili corti maschio-femmina per questo transceiver non ne ho.

Siccome sto avendo parecchi problemi con questo transceiver, mi chiedo se esistano soluzioni alternative (possibilmente economiche) che possano avere un interfacciamento meno problematico. :frowning:

Dipende cosa devi fare ...
... hai già visto gli HC-12 ? :slight_smile:

Guglielmo

No, non li avevo presi in considerazione.
Cercerò di documentarmi, grazie!

Il progetto che ho in mente consiste in una piccola stazione meteo, che possa essere piazzata all'esterno e che comunichi con un Arduino indoor il quale raccolga i dati e li mostri su display.
L'idea sarebbe di utilizzare un Arduino Nano all'esterno al quale sono collegati i sensori (temperatura, umidità, pressione atmosferica) e il transceiver (che quindi funzionerà a 3,3V).
Il punto critico (oltre alla scelta del transceiver) sarebbe la raccolta e trasmissione dei dati che deve essere il più low power possibile, siccome Arduino Nano outdoor ho intenzione di collegarlo a una batteria.

Sono a conoscenza del fatto che ci siano miriadi di progetti di questo tipo, tuttavia vorrei provare a mettere in campo le mie conoscenze. :slight_smile:

Ho guardato un pò la documentazione che mi hai inviato sul HC-12, ho notato che ha un range di 1000m e mi sembra quindi più robusto del NRF24L01 per quel che riguarda la trasmissione.

A questo punto direi che nel caso trovassi problemi con il nuovo transceiver, aprirò un nuovo topic.

Grazie! :slight_smile:

electronics_project:
Ho guardato un pò la documentazione che mi hai inviato sul HC-12, ho notato che ha un range di 1000m ...

Si, anche se, all'aumentare della distanza, devi calare la velocità di trasmissione dati sulla seriale.

Guglielmo

noi facciamo un'ipotesi

se la prevalenza delle domande su connessioni via radio è su NRF24, HC06, HC05
mentre ci sono pochissime richieste per HC12, HC11 e CC1101

è ragionevole pesare che i dispositivi del secondo gruppo sono meno 'rognosi' di quelli del primo?

questa era l'ipotesi, ora un po' di speculazione:
se così fosse, non sarebbe ragionevole aggiungere alle varie guide che ci sono una nota:

"evitatevi casini con NRF24 e consimili, usate: XXXX che abbiamo provato e vanno bene"

dove XXX lo decidiamo adesso cosa scegliere?

Salvorhardin:
è ragionevole pesare che i dispositivi del secondo gruppo sono meno 'rognosi' di quelli del primo?

No, sono semplicemente meno diffusi e la gente usa molto di più gli altri.

Per altro, HC-05 e HC-06, se si seguono i datasheet e si scelgono i giusti moduli (quelli con i traslatori di livello, utilizzabili sia a 3.3V che a 5V), non danno particolari problemi ... ovviamente il "range" è quello di un Bluetooth classico di classe 2, circa 10 mt, contro i teorici 1000 mt del HC-12 :wink:

Guglielmo