Full disclosure: I'm a newbie.
I've got an Arduino Nano and a Mega, and a pair of NRF24L01+ PA modules (exactly these: http://www.elektrotedarik.com/Images/Urun/11122013173429.jpeg)
I'm trying to get them to work. I am on this tutorial with the RF24 library: https://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
On Arduino Nano, it works perfect. I wire everything as told, and set up my radio:
const uint64_t pipe = 0xE8E8F0F0E1LL; RF24 radio(CE_PIN, CSN_PIN); fdevopen( &my_putc, 0); radio.begin(); radio.setPALevel(RF24_PA_MAX); radio.setDataRate(RF24_250KBPS); radio.openWritingPipe(pipe);
When I call
radio.printDetails(); I get a nice output in serial monitor:
STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0 RX_ADDR_P0-1 � = 0xe8e8f0f0e1 0xc2c2c2c2c2 RX_ADDR_P2-5 � = 0xc3 0xc4 0xc5 0xc6 TX_ADDR = 0xe8e8f0f0e1 RX_PW_P0-6 � = 0x20 0x00 0x00 0x00 0x00 0x00 EN_AA = 0x3f EN_RXADDR � = 0x03 RF_CH = 0x4c RF_SETUP � = 0x27 CONFIG = 0x0c DYNPD/FEATURE � = 0x00 0x00 Data Rate = 250KBPS Model = nRF24L01+ CRC Length = 16 bits PA Power = PA_HIGH
Everything as expected. If I remove a wire (for testing), it displays all zeroes, when I plug it back, it displays right again, so I assume that it's in working condition. I then try the same with Mega, but even after re-checking the wiring after 4 times, it's not working. Here's what I get with the same code:
STATUS = 0x00 RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=0 TX_FULL=0 RX_ADDR_P0-1 � = 0x0000000000 0x0000000000 RX_ADDR_P2-5 � = 0x00 0x00 0x00 0x00 TX_ADDR = 0x0000000000 RX_PW_P0-6 � = 0x00 0x00 0x00 0x00 0x00 0x00 EN_AA = 0x00 EN_RXADDR � = 0x00 RF_CH = 0x00 RF_SETUP � = 0x00 CONFIG = 0x00 DYNPD/FEATURE � = 0x00 0x00 Data Rate = 1MBPS Model = nRF24L01 CRC Length = Disabled PA Power = PA_MIN
Tried many times, no avail. Then I've came upon several threads talking about the different pins. Changed the pins to match Mega's MOSI, MISO, SCK, CE, CSN pins, no avail. I've tried exact same configuration with people who say that it's working, no avail. Then I've stumbled upon that Mega ironically can't supply enough current from the 3V3 pin (while Nano perfectly can) and it can't power the NRF24L01+ PA. I've tried drawing 3V from my power supply (my power supply has either 3 or 4.5 volts, I can't risk burning my transceiver with 4.5 volts). It still doesn't work, and it became extremely hot in seconds (the one attached to my nano doesn't heat up at all). I immediately turned it off, thought that I've burned something, swapped with the Nano's transceiver, and it (fortunatelly) works. So there's no problem with the NRF24L01+ PAs. Why would it not work with Mega (I've also tried the lowest power setting too), and why would it get extremely hot when attached to an external power supply? What else can I do?
UPDATE: I've added a 470uF decoupling capacitor to the receiving end (the one attached to Mega), it seems to be worse.
A very interesting observation: If I touch the receiver when it's not working, it starts receiving the signal excellently. If I let it go, signal is lost again.
UPDATE 2: Nevermind the last "when I touch..." update, it appears to be related to wiring (haven't soldered them yet, just using jumper wires)
UPDATE 3: My initial assumption is correct, something happens when I touch the cables. Something more weird is going on. I soldered my module on a prototype board, and my module sometimes works even without CE pin plugged in. When I touch the cable, it transmits, and stops. Here, TX pin lighting up means it's receiving the signal (I'm writing data to serial). It receives the data (and yeah, the correct data) when I touch the CE pin's cable:
How on Earth is this possible? Does the CE pin/cable (and myself) act as an antenna? Makes no sense.
UPDATE 4: If I plug that pin to 5V, the whole receiver starts working absolutely perfectly, with no errors/drops at all. But I can't get it: why? And would it overheat/short something?