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.
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.
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.
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.
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!
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?