Rete di moduli nRF24l01 con Arduino

Ciao!


Per un progetto ho avuto la necessità di creare una rete di più moduli, tenendo sotto controllo i costi e il consumo di batteria.
Curiosando in rete ho trovato che i moduli nRF24l01 (di cui vi avevo già parlato qui) potrebbero fare al caso mio.





Infatti con questi moduli è possibile non solo una comunicazione trasmettitore/ricevitore, ma anche creare una "rete" composta da un "master" e fino a 6 "slave" collegati allo stesso master.

Ho trovato molti esempi non funzionanti, anche a causa della confusione creata dalle molte librerie disponibili per questo modulo.
L'unico progetto funzionante è questo Instructables(in inglese) dell'utente Millervet, grazie al quale sono riuscito a capire il funzionamento di questo sistema.

Ecco un video che mostra il comportamento dei 2 moduli slave.




Questi sono gli schemi per collegare i moduli nRF24l01 al nostro Arduino:


Ecco quello per il modulo "master", la scheda che controllerà tutti gli altri moduli.


E questo è lo schema per realizzare gli "slave" i moduli che in questo progetto riceveranno i dati dal "master".



Ecco il codice da caricare nel modulo "master"



Questo invece quello per i moduli "slave"
cambiare il valore della variabile "WHICH_NODE" in base al nodo (massimo 6 slave quindi valori da 1 a 6)



Ciao!
Seguimi sulle mie pagine per rimanere sempre aggiornato sui nuovi post!

8 commenti:

  1. Consiglio anche di valutare le librerie di MySensors.org che sono abbastanza semplici

    RispondiElimina
  2. Ciao, volevo chiederti un informazione si possono fare due master e uno slave. Cioè mi servirebbe che due arduino nano inviano dei dati diversi ad un singolo arduino Mega.
    Grazie in anticipo!!

    RispondiElimina
  3. Buongiorno, programma molto interessante, che risolverebbe i miei "problemi" di gestione tabelloni.
    Ho provato a far "parlare" un arduino uno (master) con un mega ( purtropo al momento ho solo due antenne!) ma sembra che i due non si parlino; il mega non da' alcun segnale di ricezione, sull'arduino uno lampeggia invece il led RX e sulla seriale ottengo una serie (scusa i "bisticcio")di zeri. Ovviamente ho mantenuto i PIN del trasmettitore ed ho cambiato quelli del ricevitore (CE --> 49, CSN --> 53, SCK -->52, MOSI --> 51 e MISO --> 50). Escluderei problemi di Hardware in quanto ho provato a scaricare l'esempio "GettingStarted" e funziona .

    Hai qualche idea su come superare l'empasse?

    Io, purtroppo, ho pochissime esperienze di programmazione (ricavate dai vari tutorial)e praticamente nessuna di elettronica

    Grazie in anticipo + saluti.

    Enrico

    RispondiElimina
    Risposte
    1. Risolto inserendo una "base" con condensatore sulle antenne.

      Elimina
    2. I condensatori li avrai saldati tra i pin Vcc e Gnd, cosa che è determinante su tutti gli nRF24L01 perché funzionino. ( 10 - 50 uF )
      Per le librerie invece è un gran caos. Non sono per nulla compatibili tra loro e quelle aggiornate non vanno mai bene. Io ne trovai una funzionante tempo addietro e mi capita spesso di doverla reinstallare.

      Elimina
    3. No, ho utilizzato delle basi (costo ca. 1.50€!)già presenti sul mercato, , alimentandole a 5 V sono riuscito a trasmettere a ca. 500 mt (con antenna). Purtroppo ogni tanto il programma si "impalla" e devo spegnere e riaccendere per farlo ripartire.

      Saluti

      Elimina
  4. Buongiorno mi chiamo Juri e sono alle prime armi con arduino. Ho fatto un pò di pratica con ingressi ed uscite analogiche e digitali senza grossi problemi ma con la comunicazione wireless che mi serve per trasmettere i dati di un sensore remoto non riesco a venirne a capo. Ho provato diversi sketch e configurazioni incluso il presente senza successo. Non riesco a farli comunicare.
    Nello specifico ho caricato gli sketch su due arduino pro nano ma non comunicano.
    Ho cambiato solo quanto sotto indicando HIGH o LOW in tutte le configurazioni possibili.

    const int pinCE = 9; //settare basso per modulo in standby, alto modulo acceso

    Chiedo una mano, mi scuso in anticipo per l'ignoranza :)

    RispondiElimina

Lascia un commento qui sotto, ti risponderò il prima possibile!

Altri Post