@Sander Nordic’s Explanation of Pipe Address(s).
We recommend using at least 32bits address, preferably 40bits address. The reason we don’t recommend using a shorter address is that the nRF device might demodulate random noise on the air which might match with the correct address. Using a long address avoids this problem.
For instance with a 16bit address and 1mbit speed, the chance is that random noise hits the correct address about every 65ms. Statistically with a 32bit address hits the correct address every 70 minutes.
We recommend enabling 16bit CRC, this ensures that the received payload is correct. Both the address field and payload must be equal to the CRC checksum. All bits must be correct otherwise the packet is discarded.
Here are some guidelines when choosing an address:
A. The address made by (5, 4, or 3) equal bytes (0x00 or 0xFF) is not recommended because it usually makes the packet-error-rate increase.
B. Addresses where the level shifts only one time (i.e. 0x000FFFFFFF) can often be detected in noise giving a false detection, which again may give raised packet-error-rate.
C. First byte of the address should not start with 0x55… or 0xAA… as this can be interpreted as part of a preamble, causing an address mismatch for the rest of the address.
Quick summary:
Use at least 32bit address and enable 16bit CRC.
Avoid addresses that start with 0x00, 0x55, 0xAA and 0xFF.
openWritingPipe
Open a pipe for writing. Addresses are 40-bit hex values, e.g.:
openWritingPipe(0xF0F0F0F0F0);
Parameters:
address: The 40-bit address of the pipe to open. This can be any value whatsoever, as long as you are the only one writing to it and only one other radio is listening to it. Coordinate these pipe addresses amongst nodes on the network.
openReadingPipe
Open a pipe for reading.
Warning: all 5 reading pipes should share the first 32 bits. Only the least significant byte should be unique, e.g.
openReadingPipe(0xF0F0F0F0AA);
openReadingPipe(0xF0F0F0F066);
Parameters:
number: Which pipe# to open, 1-5.
address: The 40-bit address of the pipe to open.
So from the code in Github for Solidgeeks Controller:
Transmitter (Transmitter.ino)
const uint64_t pipe = 0xE8E8F0F0E1LL;
Receiver (Receiver.ino)
const uint64_t pipe = 0xE8E8F0F0E1LL;
Change the address to whatever you want to make it but follow the notes, rules above. Recompile your code and upload to your Ardunio Device
and you should now have a different address then someone elese’s controller. Of course what is in the Github is going to be the same for every controller
until you change it to something different.
I will post the link to Nordic and look at Appendix A for detailed information about “Pipelines”
https://www.sparkfun.com/datasheets/Components/SMD/nRF24L01Pluss_Preliminary_Product_Specification_v1_0.pdf
Hope this helps.