<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>[nRF52] ESB: one PTX, many PRX + frequency hopping. How to increase probability to of recived data?</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/28673/nrf52-esb-one-ptx-many-prx-frequency-hopping-how-to-increase-probability-to-of-recived-data</link><description>In traditional approach to ESB communication we have many PTX device and one PRX device:
 
 In my application, situation is inverted: I have only one PTX device and many PRX devices: 
 
 Each PRX device have implemented Bluetooth and timeslot ESB</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 03 Jan 2018 15:31:19 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/28673/nrf52-esb-one-ptx-many-prx-frequency-hopping-how-to-increase-probability-to-of-recived-data" /><item><title>RE: [nRF52] ESB: one PTX, many PRX + frequency hopping. How to increase probability to of recived data?</title><link>https://devzone.nordicsemi.com/thread/113640?ContentTypeID=1</link><pubDate>Wed, 03 Jan 2018 15:31:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4c275d8d-0282-4e38-9303-3cae434740d3</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;I was referring to the wait500us() function, yes ;)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: [nRF52] ESB: one PTX, many PRX + frequency hopping. How to increase probability to of recived data?</title><link>https://devzone.nordicsemi.com/thread/113641?ContentTypeID=1</link><pubDate>Wed, 03 Jan 2018 11:54:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b2e589e3-8997-47e7-8247-056a758e0a53</guid><dc:creator>Mateusz Gancarczyk</dc:creator><description>&lt;p&gt;&amp;quot;&lt;em&gt;In general I would recommend sending the packets in a non-blocking way, but that shouldn&amp;#39;t affect packet loss ;)&lt;/em&gt;&amp;quot;
Can You get more detail? Blocking = wait500us(); ?
;)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: [nRF52] ESB: one PTX, many PRX + frequency hopping. How to increase probability to of recived data?</title><link>https://devzone.nordicsemi.com/thread/113643?ContentTypeID=1</link><pubDate>Wed, 03 Jan 2018 10:26:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9b043061-3fc4-4cbd-a486-bc05ee7583aa</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Mateusz&lt;/p&gt;
&lt;p&gt;It&amp;#39;s good to hear that you got it working :)&lt;/p&gt;
&lt;p&gt;In general I would recommend sending the packets in a non-blocking way, but that shouldn&amp;#39;t affect packet loss ;)&lt;/p&gt;
&lt;p&gt;Best regards&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: [nRF52] ESB: one PTX, many PRX + frequency hopping. How to increase probability to of recived data?</title><link>https://devzone.nordicsemi.com/thread/113644?ContentTypeID=1</link><pubDate>Tue, 02 Jan 2018 08:14:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e4ca8dc8-4346-4a75-8aa2-c7516ecf45ff</guid><dc:creator>Mateusz Gancarczyk</dc:creator><description>&lt;p&gt;Of course You right. In PTX device i send 20 times in each channel:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;for ( j = 0; j &amp;lt; 20 ; j ++ ) {
	sendFrameOnChannel1();
	wait500us();
}
for ( j = 0; j &amp;lt; 20 ; j ++ ) {
	sendFrameOnChannel2();
	wait500us();
}
for ( j = 0; j &amp;lt; 20 ; j ++ ) {
	sendFrameOnChannel3();
	wait500us();
}
for ( j = 0; j &amp;lt; 20 ; j ++ ) {
	sendFrameOnChannel4();
	wait500us();
}
for ( j = 0; j &amp;lt; 20 ; j ++ ) {
	sendFrameOnChannel5();
	wait500us();
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Send data on one channel takes ~10ms.&lt;/p&gt;
&lt;p&gt;In PRX device  I switch channel in every 2ms.&lt;/p&gt;
&lt;p&gt;And it works very well :)
Thanks for help.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: [nRF52] ESB: one PTX, many PRX + frequency hopping. How to increase probability to of recived data?</title><link>https://devzone.nordicsemi.com/thread/113642?ContentTypeID=1</link><pubDate>Thu, 28 Dec 2017 11:46:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:567c299c-dacf-4250-9b82-818b153e16f9</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Mateusz&lt;/p&gt;
&lt;p&gt;Sending a packet every 1ms when the PRX stays on each channel for 1ms might not be quick enough, because you might send the packet at the exact moment the PRX is switching to a different channel (causing it to drop the data).&lt;br /&gt;
It would be safer to send a packet every 500us. Then you know that if one packet is sent during the channel switch, the next packet will not be.&lt;/p&gt;
&lt;p&gt;In other words I would recommend sending the same packet every 500us, for a total of 5ms. If you want to try on all channels you should go through the list and do the same for each one.&lt;/p&gt;
&lt;p&gt;Best regards&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: [nRF52] ESB: one PTX, many PRX + frequency hopping. How to increase probability to of recived data?</title><link>https://devzone.nordicsemi.com/thread/113639?ContentTypeID=1</link><pubDate>Thu, 21 Dec 2017 16:25:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cd921c0c-234b-4449-95b4-ca88797e7e50</guid><dc:creator>Mateusz Gancarczyk</dc:creator><description>&lt;p&gt;Firstly thanks for the answer!
Secondly, let me summarize:&lt;/p&gt;
&lt;p&gt;PTX DEVICE:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;for ( i = 0 ; i &amp;lt; 10 ; i ++ ) // for example - do this 10 times - less is better
{
	for ( j = 0; j &amp;lt; 5 ; j ++ ) // total time send in one channel is ~5ms
	{
		sendEsbDataOnChannelNr1();
		wait1ms();
	}
	for ( j = 0; j &amp;lt; 5 ; j ++ )
	{
		sendEsbDataOnChannelNr2();
		wait1ms();
	}
	for ( j = 0; j &amp;lt; 5 ; j ++ )
	{
		sendEsbDataOnChannelNr3();
		wait1ms();
	}
	for ( j = 0; j &amp;lt; 5 ; j ++ )
	{
		sendEsbDataOnChannelNr4();
		wait1ms();
	}
	for ( j = 0; j &amp;lt; 5 ; j ++ )
	{
		sendEsbDataOnChannelNr5();
		wait1ms();
	}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;PRX DEVICE:&lt;/p&gt;
&lt;p&gt;in every 1ms:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;channelIndex++;
if ( channelIndex &amp;gt; 4 ) channelIndex = 0;
nrf_esb_stop_rx();
nrf_esb_set_rf_channel( frequencyHopingTable[ channelIndex ] );
nrf_esb_start_rx();
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;so all frequency hop have 5ms period.&lt;/p&gt;
&lt;p&gt;Please, let me know is that ok?&lt;/p&gt;
&lt;p&gt;I can&amp;#39;t use ACK because I have many PRX device which have the same address and I want to trasmit data to all of them. So I can&amp;#39;t synchronize frequency between PRX and PTX - so I think the only way to do this - is &amp;quot;stupid&amp;quot; burst data throught all the channels in PTX device and hope that all PRX devices will recive data :)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: [nRF52] ESB: one PTX, many PRX + frequency hopping. How to increase probability to of recived data?</title><link>https://devzone.nordicsemi.com/thread/113638?ContentTypeID=1</link><pubDate>Wed, 20 Dec 2017 14:36:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:58177bee-e3d5-4967-9604-c64273ff10ba</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Mateusz&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;The main consideration when picking channels is that you spread them across the band, rather than clustering them together. Then you have a larger chance that some channels will be open, even if you have significant interference from other 2.4GHz sources such as WiFi and Bluetooth.&lt;br /&gt;
The 5 channels you listed earlier seems to fit this requirement.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The main point in a frequency jumping system such as this, where you don&amp;#39;t synchronize the frequency hopping in the TX and RX, is that one side needs to stick to one channel for as long as it takes the other side to go through all it&amp;#39;s channels.&lt;br /&gt;
In Gazell we solve this by having the PTX retransmit on the same channel for the same amount of time it takes the PRX to cycle through all it&amp;#39;s channels (5ms typically, with 5 channels and a 1ms &amp;#39;Gazell period&amp;#39;).
In your example it seems to be the opposite, and you have the PRX stick on a channel for a longer time while the PTX jumps around. There is no reason you can&amp;#39;t do it this way, and the same rule applies (but in reverse). The PRX should stay on the same channel for at least enough time to allow the PTX to send the packet once on each channel. Then you have a very good chance that they will at least be on the same frequency for one of these packets.
Not using the ACK is a bit of a drawback, since it means you have no idea if the packet was received or not, which means you have to retransmit each packet a certain number of times and hope for the best. It also means you have no way of synchronizing the PTX with the PRX (which would allow you to pick the right frequency quicker, and reduce the amount of retransmits).&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The number of channels used is typically between 3-5. Fewer channels reduce the amount of retransmits needed and as such reduced average current consumption and latency, but you have less flexibility when encountering heavy interference.&lt;/p&gt;
&lt;p&gt;I don&amp;#39;t see any particular reason to go for a random hop sequence in the PRX, a sequential ordering should work equally well (and if you do implement synchronization it makes things easier).&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;
Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>