This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

[nRF52] ESB: one PTX, many PRX + frequency hopping. How to increase probability to of recived data?

In traditional approach to ESB communication we have many PTX device and one PRX device: image description

In my application, situation is inverted: I have only one PTX device and many PRX devices:

image description

Each PRX device have implemented Bluetooth and timeslot ESB.

Each PTX device has implemented only ESB protocol, and only transmit data – so the communication is only in one direction. So I did it, and it works very well, but i don't thing is the best way to do it.

PTX device sends payload with no ack:

payload->noack  = 1;

And later, send packed on 5 different channels: 4, 25, 42, 63 and 77 channel. For increase the probability of a chance of reaching the frame data to the PRX device I send each frame:

for ( i = 0 ; i < 10 ; i++ )
{	
  sendEsbDataOnChannelNr1();
  wait();
  sendEsbDataOnChannelNr2();
  wait();
  sendEsbDataOnChannelNr3();
  wait();
  sendEsbDataOnChannelNr4();
  wait();
  sendEsbDataOnChannelNr5();
  wait();
}

In the each PRX device I jumping through RX channel in interval 10ms:

nrf_esb_stop_rx();
nrf_esb_set_rf_channel( frequencyHopingTable[ channelIndex ] );
nrf_esb_start_rx();
channelIndex++;
if ( channelIndex > 4 ) channelIndex = 0;

So my question is:

  1. How to choose the best channel for frequency hopping?

  2. How to maximize probability to recive frame by PRX device? We have a few variable:

  • a total number of frequency hopping channel
  • number of burst transfer. Less is better - more energy efficiency. (one burst = transfer data ion each frequency hopping channel )
  • time and algorithm between how to jump between RX channel in PRX device? Random? What time between hop?

Mayby there are some books or article about this problems?

Related