Salve a tutti,
Ho in problema con la trasmissione del sistema che ho appena costruito: nello specifico a casa comunicano ma fuori casa non sempre.
Il sistema è basato su 3 Arduino uno collegate con altrettanti nrf240l01 (con antenna): 1 ricevitore e 2 trasmettitori.
Da qui mi è venuto il dubbio che possa dipendere da interferenze WiFi.
O pensato a due probabili soluzioni da provare, ma qui non so come applicarle.
come posso verificare la corrispondenza dei canali WiFi (faccio uno scan con app da cellulare) con quelle da impostare su arduino (libreria rf24) ?
può essere utile implementare i pipes (non ho ben capito la funzione Multiceiver del trasmettitore)?
I dati che vengono trasmessi è un semplice on/off di un interruttore: è importante la sicurezza che arrivi e velocità.
Alcuni moduli dispongono di un amplificatore RF ed un preamplificatore in ricezione per portare il range a 3000 ft (circa 900m), ma i moduli con sola antenna esterna arrivano al massimo a 2000ft (circa 600m).
Si tratta di range in linea ottica e variano di molto se ci sono muri od altro.
Il mio modem WiFi TELECOM possiede una diagnostica che indica i canali usati dalle reti vicine: questo può essere utile per sapere quali sono i canali da non usare per evitare interferenze.
Probabilmente usando canali "alti" (>20) non dovresti avere problemi.
la trasmissione che mi ha creato problemi (ed è la condizione che mi interessa alla fine!) è fatta all'aperto.
Ho fatto uno scan con il cellulare dei canali wifi occupati e mi risultavano occupati dal 10 al 14 (penso reti wifi intorno).
Il mio problema è calcolare quale frequenza impostare su arduino per evitare qui canali. Inoltre sto leggendo dei pipes e non so se possa essere utili la funzione ACK.
Qui i miei sketch:
RX
myRadio.begin(); // Start up the physical nRF24L01 Radio
myRadio.setChannel(115);
myRadio.setPALevel(RF24_PA_MAX);
myRadio.begin(); // Start up the physical nRF24L01 Radio
myRadio.setChannel(115);
myRadio.setPALevel(RF24_PA_MAX);
myRadio.openWritingPipe( addresses[0]); // Use the first entry in array 'addresses' (Only 1 right now)
delay(1000);
}