Salve, questo è il mio primo argomento che creo qui e spero nel vostro aiuto.
Sto creando per la mia tesi di laurea una centralina che sfrutta un arduino UNO che oltre a lavorare autonomamente può essere controllata a distanza da un arduino Master che comunica con lo slave attraverso il modulo radio nRF24l01+pa+lna
Nel mio progetto ho la necessità di poter visualizzare nella centralina slave la percentuale di potenza del segnale radio tra la centralina master e la centralina slave perché voglio garantire una certa percentuale di affidabilità sulla ricezione dei messaggi che la centralina master manda alla centralina slave.
Ho cercato ovunque senza successo, l'unica cosa che sono riuscito a trovare è la seguente:
La centralina slave manda 100 messaggi alla centralina master e memorizza in una variabile tutti i pacchetti inviati correttamente alla centralina master, quindi se sono riuscito ad inviare correttamente 100 pacchetti allora la percentuale è del 100%
il codice è il seguente:
Per la centralina Slave:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 wireless(8, 7);
const byte address[6] = "00001";
void setup() {
Serial.begin(9600);
wireless.begin();
wireless.setChannel(125);
wireless.openWritingPipe(address);
wireless.setPALevel(RF24_PA_HIGH);
wireless.setDataRate(RF24_250KBPS);
wireless.stopListening();
}
void loop() {
const int numPackets = 100;
int packetsSent = 0;
for (int i = 0; i < numPackets; i++) {
int payload = i;
if (wireless.write(&payload, sizeof(payload))) {
packetsSent++; // Incremento il contatore dei pacchetti inviati
Serial.println("Pacchetto inviato correttamente");
} else {
Serial.println("Errore nell'invio del pacchetto");
}
delay(1);
}
Serial.print("Pacchetti ricevuti correttamente: ");
Serial.println(packetsSent);
delay(1000);
}
Mentre il codice della centralina Master:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 wireless(8, 7);
const byte address[6] = "00001";
void setup() {
Serial.begin(9600);
wireless.begin();
wireless.setChannel(125);
wireless.openReadingPipe(1,address);
wireless.setPALevel(RF24_PA_HIGH);
wireless.setDataRate(RF24_250KBPS);
wireless.startListening();
}
void loop() {
if (wireless.available()) {
int payload;
while (wireless.available()) {
wireless.read(&payload, sizeof(payload));
}
Serial.print("Pacchetto ricevuto: ");
Serial.println(payload);
}
}
Quindi la mia domanda è la seguente:
Questo metodo mi garantisce una certa percentuale di affidabilità sulla potenza del segnale e quindi mi garantisce una sicurezza che i messaggi inviati dal master alla centralina slave vengano ricevuti?