NRF24 Power Down Mode

Buongiorno a tutti

Il nostro Arduino Group di Pinerolo (To) sta sviluppando un sistema di acquisizione dati wireless utilizzando la radio nRF24.

Il sistema è composto da un master Arduino che archivia i dati e dialoga con un PC tramite un programma sviluppato da noi in Python. Questo programma si occupa di gestire un database Sqlite.
I codici del progetto sono qui:

I sensori sono le unità slave. Al momento leggiamo le temperature.
Siamo utilizzando Arduino Uno o equivalenti auto-costruiti.

Vorremmo far funzionare gli slave a batteria.
E’ necessario quindi mettere le loro radio in risparmio energetico quando non servono.
L’ideale sarebbe che le radio ricevendo un pacchetto dati si riattivassero.
La libreria nRF24 di ManiacBug ( GitHub - maniacbug/RF24: Arduino driver for nRF24L01 )gestisce la modalità PowerDown.
Dalle prove fatte se la radio è in questa modalità, la ricezione è completamente disattivata e quindi non è possibile dall’unità master inviare il comando di risveglio.

Tutti gli esempi di ManiacBug prevedono che sia lo slave a mettere in powerdown la radio e che sia la sua MCU a risvegliare la radio a scadere di un timer.

Qualcuno di voi ha fatto dei test a riguardo?

Vi allego il codice di prova che evidenzia che la radio slave in powerdown non riceve più dati. Anche la radio master non riesce più a dialogare con l’unità slave.

Vi ringraziamo
Ciao

NRF24_Temp_base_IRQ_00.ino (2.99 KB)

printf.h (656 Bytes)

NRF24_Temp_remoto_IRQ_01.ino (3.18 KB)

Ciao, questo utente voleva realizzare una cosa simile alla vostra ma non so a che punto è il suo progetto.
--> Consiglio per contametri / scatti per telaio - Generale - Arduino Forum

roboticboyer:
....
E' necessario quindi mettere le loro radio in risparmio energetico quando non servono.
L'ideale sarebbe che le radio ricevendo un pacchetto dati si riattivassero.
...

Mi sa tanto che non è un problema di libreria e che c'è poco da fare prove ...
... se si legge il datasheet dei moduli si vede che, una volta messi in PowerDown ... li risvegli solo andando a scrivere in un registro ... la sezione radio è totalmente spenta quindi NON riceve nulla.

Guglielmo

Grazie
Volevo avere la conferma di no aver capito male.

Stiamo pensando quindi di gestire il risveglio periodico dello slave e comunicare al master che il modulo può tramettere dei dati. Se il master risponde positivamente inizia la trasmissione dei dati.
Ciao

Per curiosità usate la libreria di maniacbug ? io con un paio di questi modulini ci sto sbattendo al testa da un po' e ho risultati spesso altalnanti. A volte comunicano molte altre no.
Già letto mezzo internet a riguardo... voi riuscite a farli funzionare in maniera stabile e continuativa?

Prova nel setup ha usare
radio.setPALevel(RF24_PA_LOW);
radio.setDataRate(RF24_250KBPS);

in questo modo la potenza in tx e rx è bassa.

Se possibile inserisci un condensatore tra alimentazione 3.3V e GND se devi trasmettere a piena potenza.
ti cerco la capacità e lo scrivo nel prossimo messaggio.

Gio

ok grazie, avevo già provato a mettere il condensatore da 100nF come indicato in altri siti/thread, però a volte va a volte no.
Inoltre ho provato anche ad usare dei regolatori da 3,3v,e non usare l'uscita 3v dell'arduino UNO e Nano ( le due board che uso per queste prove) ma sempre con risultati discontinui.
Ora proverò i tuoi suggerimenti.

La capacità però che usiamo noi e 100 uF!
Forse la tua è troppo bassa (1000 volte più piccola).

Tienici aggiornati.
Ciao
Buone Feste a Tutti.
Gio

Ciao ho provato a rifare tutto da capo, collegamento, cambiato arduino nano con mini, breadboard, tutto quanto insomma.
Ho provato i vs consigli e testato il tutto con lo sketch LED Remote. funziona abbastanza bene.
A distanza di 5mt in casa tutto ok. Ogni tanto perde il primo invio ma poi il secondo arriva ( o così si legge sul monitor seriale).
Unica nota dolente la distanza. A quanto si legge su internet la portata reale è molto bassa: voi che distanza riuscite a coprire?
In campo aperto o con muri/ambiente domestico?
Buona pasqua a tutti!

campo aperto 50-60 m
in casa dipende, tipo il wifi

Non è che stai trasmettendo su canali occupati dal wifi?
Usa lo scanner seguente per trovare un canale libero:
https://github.com/roboticboyer/Arduino/tree/master/RF24/2_4GHz_Scanner_gio_01
Ti indica con dei numeri i canali occupati. più numero alto più c'è traffico

Considera che il wifi, mouse radio...usano anche loro i 2.4Ghz. Noi usiamo canali tipo 90

Ciao

in effetti grazie alla lettura dei vs sketch ho capito come settare il canale, lo scanner lo avevo già.
Ma una domanda:
radio.setPALevel(RF24_PA_LOW);
non regola la potenza dell'antenna? come mai mettendola LOW si migliora la ricezione? meno disturbo?

Assorbi meno corrente.
Se usi il condensatore da 100uF non ti dovrebbe più servire quel comando e dovresti trasmettere a distanza maggiore.

Ciao
Gio