Arduino modulo nRF24l01+pa+lna percentuale potenza del segnale

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?

La libreria in questione prevede già un metodo atto allo scopo (più o meno):

uint8_t getARC(void);

Esiste inoltre quest'altro metodo che esegue il test sul segnale e restituisce true se > -64dBm (è un regsitro dell'nRF24L01

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.