I found that beside using the build-in re-transmission feature, i need to write the firmware to re-transmit the data for many times (from few times up to hundreds times) until it able to reach the receiver.
May i know what is the possible problem and solution?
I have a similar problem. I am using two MiRF v2 (nRF24L01) modules from SparkFun but the communication is reliable only when the distance between the modules is lesser than 0.5 meters.
Ya, that problem is solved. i carelessly set the wrong number of data to transmit and received. After i set the same number at the receiver and transmitter side, it works ok.
I got another problem here. the receiver works fine initially, but if i leave it run over night or run for few days, the nRF24L01 chip seems stop function as receiver. it can no longer received data from the transmitter.
If you turn the receiver off and back on a few seconds later, does this clear the problem? Or, is there a heat related drift issue, and the board needs to cool down for a few minutes? What about battery levels?
One thing I would suggest to do is set up your microcontroller at the receiver to notice when it’s not getting packets if it should be. Let the micro dump all of the 24L01’s registers to the uC’s internal memory and print them to the screen or LCD or any type of output device you have (in my library, there’s a function called nrf24l01_get_all_registers() that will get the 24L01’s registers). Make sure that your configuration hasn’t gotten corrupted (sometimes the FIFO_STATUS bits get set and cleared for no apparent reason if you let the device go for a while). If the register configuration looks right, then more than likely you have a defective unit. I had a bad one once, and Sparkfun replaced it with a new one.
Here’s another thought… Perhaps it’s the code, or the uProcessor? I build all my transceivers with the ability to receive and transmit interchangeably. This way I know if neither works properly, it is more than likely my code.Can you run the receive code on the “transmitter”? this will either confirm or clear the first 24L01 as the prime suspect. Also, try wiggling the board gently in receive mode and see if it stops working.