Radio range.

Hi, in the beginning of development my range of the NRF24+ was around 40 feet. My target was only 6. I have gone thru a lot of PCB revisions and mostly do my testing on the bench. After some struggles with firmware things are once again working. but when I started to separate the distance I lost a lot of communication.  I can set up the two modules to work side by side ( 2 feet apart) and things just start failing at 3 feet. Admittedly we didn't concentrate too hard on the antenna placement because 40 feet was way over the mark. I really am hoping my issues is still firmware, but unsure. The wireless boards could be removed but it will be messy. I can also do one of the hack jobs to extend the range I saw online but again, messy. I'd like to rule out firmware first.

Here are a few images, happy to provide missing details. Are there concerns here?

my start up config

	//set up the NRF24
	enable();
	sendCommand(0x20);sendCommand(0x0A | receiver);//Config : 00001010 enalbe crc,  crc 1 byte, power up, ptx/rx
	disable();
	pulse();
	_delay_ms(2); //power up delay
	
	//set channel from dips
	unsigned char channelFromDip = (~PIND& 0x1e)<<3; //we are going to reverse them so shift left not right.
	channelFromDip = __builtin_avr_insert_bits (0x01234567,channelFromDip,0);//reverse
	enable();
	sendCommand(0x25);sendCommand(channelFromDip);//(channelFromDip); 
	disable();
	
	enable();
	sendCommand(0x24);sendCommand(0x00);//500us instead of 250us
	disable();

	//18db and  rate of 2mb speed
	enable();
	sendCommand(0x26);sendCommand(0x0F);
	disable();
	
	//addres for 5 (0011) bytes
	enable();
	sendCommand(0x23);sendCommand(2);
	disable();
 
	//dynamic length for 0 and 1  pipes 
	enable();
	sendCommand(0x3C);sendCommand(3);
	disable();
	
	//enable ack payload and dynamic
	enable();
	sendCommand(0x3D);sendCommand(7);
	disable();

	//enable();
	//from what I can tell the default values for 21 is all on, and for 22 its 1 and 0, so no need to change any of this. 
	//sendCommand(0x22);sendCommand(0x33);//enable 0 and 1 RX pipes
	//disable();
	
	//must match to auto ack
	enable();//tx address
	sendCommand(0x30);sendCommand(0xe7);sendCommand(0xe7);sendCommand(0xe7);sendCommand(0xe7);sendCommand(0xe7);
	disable();
	
	enable();//rx address
	sendCommand(0x2A);sendCommand(0xe7);sendCommand(0xe7);sendCommand(0xe7);sendCommand(0xe7);sendCommand(0xe7);
	disable();

Note about config 6: I think my goals was to use 18db and  rate of 2mb speed but it looks like I set 0x0f. I also tried 0x08 but regardless I'm very confused on the datasheet. It gives the examples:

00’ – 1Mbps
‘01’ – 2Mbps
‘10’ – 250kbps
‘11’ – Reserved

but says you set it on bit 3. So that is a range of 1 bit, not 2?

Related