SOLVED! nrf24l01 starts receving after few minutes! VIDEO

TruePatrick:
I receive this data, in very short amount of time

Data received

Data received
Data received
Data received
Data received
Data received

If those messages are being received faster than once per second it means the Arduino is not communicating properly with its own nRF24.

With all due respect, but when I want to use UART to check print signals, I use USB only. I connect VCC pin of the module to the 3.3V from arduino. When It fails I try with a 2x alkaline AA cells, +connected to the VCC of the mdoule and - connected to the arduino board.

The transmiter is either connected to the USB or uses 2x 18650 3.7V batteries.

For debugging purposes all these choices are not helpful. Just power the nRF24s with the 2x Alkaline cells and don't try anything else until you have got communication working.

Here's the result from the Connection Test code

I don't see the data rate being reported as changed so that means that the connection test is failing.

I modified this code ....

Don't modify the code until AFTER you have everything working.

...R

Robin2:
If those messages are being received faster than once per second it means the Arduino is not communicating properly with its own nRF24.
Just power the nRF24s with the 2x Alkaline cells and don't try anything else until you have got communication working.

Okay

Robin2:
I don't see the data rate being reported as changed so that means that the connection test is failing.

Can we assume that the NRF module is broken? I don't see any burned connections on the board though. Nrf modules were bought on aliexprees.

Robin2:
Don't modify the code until AFTER you have everything working.

I had to because, the program was in the setup function which is performed only one time, and I don't have time to open serial comunication to take a look at the results. I don't know any other way.

I know it is hard to find a solution. Thank you for commitment. I don't like giving up, but I'm gonna wake up tomorrow and find a proper solution.

I don't necessarily think your nrf modules are broken, unless you've applied higher voltage than you should, or connected them incorrectly. My temperature monitoring system is based on the nano, similar to your arduino, and based on Robins code. I used the smaller nrfs with their own pcb antenna, for three of the slaves but my master and one slave is similar nrf's as yours, with external aerial. I started off by exactly following Robin#s tutorial. The external aerial nrf's, like yours, are quite particular in orientation of the aerials, and do not play well if testing on the same bench, or even in the same room. I found I got better results by modifying a bit of the radio set-up code. Both of the external aerial types are powered via the usb connector, at 5V, the others by three AA cells connected to the nano 5V pins. All the nrf's are powered from the Nano 3.3V pin, with a 10uf ,63V electrolytic close to the nrf units, and even though that is far from best practice, they have worked reliably for the last month or so. getting readings every ten seconds, or there about. Here's a snippet of my radio tx setup, I altered the setretries, which gave better results for me, in my location. As I mentioned b4, it may be best to try it with the cheaper nrf units, easier to get them working on the bench top. But, you really should, start from the beginning again, with getting Robin's exact code working. By 'exact code', I mean cut and paste it. But, it may not be too easy with those particular nrf units.

 Serial.println("SimpleTxAckPayload Starting");

  radio.begin();
  radio.setDataRate( RF24_250KBPS );
  radio.setPALevel(RF24_PA_MAX);
  radio.setChannel(108); // 2.508 Ghz - Above most Wifi Channels
  radio.enableAckPayload();

 // radio.setRetries(3, 5); // delay, count
   radio.setRetries(8, 12); // delay, count
}

TruePatrick:
Can we assume that the NRF module is broken?

The only way to be sure is to try another nRF24 module in its place - it's much less likely that two of them would be broken.

I had to because, the program was in the setup function which is performed only one time, and I don't have time to open serial comunication to take a look at the results. I don't know any other way.

Press the reset button ?

...R

Robin2:
Press the reset button ?

You always find something you don't know, I guess;)

raymw:
But, you really should, start from the beginning again, with getting Robin's exact code working. By 'exact code', I mean cut and paste it. But, it may not be too easy with those particular nrf units.

You're right. I'll check on your code and try to work on it. Thanks!

Today's my birthday and I feel more like it to work on this matter. I have an idea to work on, but I need your help.
I have some leftovers of HT7333 modules, which regulate the voltage from 5V to 3.3V. People use them with NRF modules. Can this one work? Here's the scheme.

I can build this using protoboard and some soldering skills. Surely, I am certified IPC specialist;))

(I think I will go buy some capacitors 10/100uF, because I think mine is broken - I found out about that building simple system with led which should fade but does not, when the main battery is off)

TruePatrick:
but I need your help.
I have some leftovers of HT7333 modules, which regulate the voltage from 5V to 3.3V

If I have read it correctly the datasheet says that their max output current is 150mA. That may be on the low side. I have used LD1117 / LD33 regulators which have a max output of 800mA.

...R

Robin2:
If I have read it correctly the datasheet says that their max output current is 150mA.

Found HT7333 documentation. Max output 250mA.
According to this site,Receive Mode Current(peak): 45mA. Also, I think that the modules will operate at LOW_POWER settings, because I will use this car only at home (At least for now. Max few meters away). Should I give it a try and start soldering?

But anyway, I need to buy new capacitors. May take me few days.

Quick edit. The controler that I've built, using this tutorial uses this HT7333 transistor as power regulator for nrf, so I think the person that designed it was not wrong.

TruePatrick:
Found HT7333 documentation. Max output 250mA.

I must have read the wrong line.

Either way it is certainly worth trying if you already have the devices.

Get the nRF24 working with a pair of AA alkaline cells and then disconnect the battery and try the voltage regulator.

...R

iI you are buying stuff, happy birthday, btw, and if you intend future projects, then get at least a few of the nrf modules with the pcb antenna, and a couple of adapters. e.g. adapters - any like this

and nrfs like this
https://www.amazon.co.uk/s?k=PIXNOR+5pcs+Professional+NRF24L01+2.4GHz+Antenna+Wireless+Transceiver+Module&ref=404_search

(not necessarily from those suppliers) I found that the longer range nrf's with external aerials, as I've said before, do not work well at short range.

The adapters make it much easier/reliable for breadboard experimentation, and can be dispensed with in the final pcb. You can then test out Robin's software without having to be concerned with distance, aerial orientation, voltage regulators, etc.

The smaller nrf units work fine within a few inches of each other, or much more, the other more powerful nrf units do not, in my experience. Then, try it with your more powerful nrf's, see if there is a benefit in your application, etc, etc.

This guy got NRF24 with antennas, and managed to get to communicate them less then meter away:< I see that he's using this adapters that you've mentioned about.
My plan is as follows:
-buy new capacitors: 10/100uF (but what voltage, previously I got 25V, the circuit operates at 6-10V. Does the voltage matter as long as it is above 10V?)
-buy NRF24 short range (without antenna). In case of this one is broken. Can this short range module communicate with long range?
-buy 1 adapter for the receiver. I can not use adapter for the transmiter, because there's no room on the controller to fit it. 2 Capacitor should do a thing.

I guess It should be all right. Will talk to you in 2 days or less. Thank you that you're with me.

TruePatrick:
Can this short range module communicate with long range?

Yes

...R

if you are using the adapters, you won't need the capacitors, but the voltage you quoted should be OK. I hope you don't buy only one of the small nrf24, or one of the adapters. The idea is that you make up a Tx and an Rx unit as specified by Robin, and test out his software. Once you/we are happy that is working, then try the longer range units - they will just plug in, no software changes necessary. Move 'em around a bit, adjust aerial angles, etc. Then, you know you've a working system, and components, Then piece by piece fit/change it to suit your application. It would be nice if you didn't have to dismantle the test set up.

A nice video you linked to, but ignore it for the time being. I'm not sure what he meant by it working, I heard no buzzer. I'm not saying the long range units do not work if close to each other, but not reliably. It depends on many things. The units you will be buying will work at close range, and certainly will be OK in your car if in same room. Once the test is working you can dispense with the adapter, most likely power via the arduino. I explained that in my post #19, above. wrt the way that worked for me, (it also mentioned that the more and less powerful units work together) it was a 'work towards' result, making small changes on the way, and testing each step. (but you can do it better with your 3.3V voltage regs...)

It took me a while. But my days seems brighter as things start to work.

  • I corrected the soldering for the transmitter board
  • I run a scanner code (from the sketch of the nrf24 library), which basically check all the channels(frequencies) if there is a interference with wi-fi etc.
    Here are results: (After a while there were only 0)
RF24/examples/scanner/
STATUS		 = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1	 = 0xe7e7e7e7e7 0xc2c2c2c2c2
RX_ADDR_P2-5	 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR		 = 0xe7e7e7e7e7
RX_PW_P0-6	 = 0x00 0x00 0x00 0x00 0x00 0x00
EN_AA		 = 0x00
EN_RXADDR	 = 0x03
RF_CH		 = 0x4c
RF_SETUP	 = 0x07
CONFIG		 = 0x0e
DYNPD/FEATURE	 = 0x00 0x00
Data Rate	 = 1MBPS
Model		 = nRF24L01+
CRC Length	 = 16 bits
PA Power	 = PA_MAX
000000000000000011111111111111112222222222222222333333333333333344444444444444445555555555555555666666666666666677777777777777
0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcd
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
.
.
.
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

This guy runs the same code at 6:42 minute But I do not understand the results.

Here are the results from the receiver: They are clearly different.
(which has new NRF24 module (short range with adapter)

RF24/examples/scanner/
STATUS		 = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1	 = 0x3130303030 0xc2c2c2c2c2
RX_ADDR_P2-5	 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR		 = 0xe7e7e7e7e7
RX_PW_P0-6	 = 0x20 0x00 0x00 0x00 0x00 0x00
EN_AA		 = 0x00
EN_RXADDR	 = 0x03
RF_CH		 = 0x4c
RF_SETUP	 = 0x03
CONFIG		 = 0x0e
DYNPD/FEATURE	 = 0x00 0x00
Data Rate	 = 1MBPS
Model		 = nRF24L01+
CRC Length	 = 16 bits
PA Power	 = PA_LOW
000000000000000011111111111111112222222222222222333333333333333344444444444444445555555555555555666666666666666677777777777777
0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcd
000001403358161001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000002102035020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000002100016221111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000001021150110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000010000010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000021010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000003010142011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000010010101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000021021020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000163368876b4202100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000016479a76783503301000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000005454797786603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000003253494663503100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000132474a5787608502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000003134237266129511000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000003022693996507600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000005494754473906222000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000003022043672107500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000035634883a8314100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000007063372361102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000032283030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Here comes more replies. I'm gonna run connection test once again and post results.

Connection TEST RESULTS:

Receiver - new NRF (short range) + adapter

CheckConnection Starting

FIRST WITH THE DEFAULT ADDRESSES after power on
  Note that RF24 does NOT reset when Arduino resets - only when power is removed
  If the numbers are mostly 0x00 or 0xff it means that the Arduino is not
     communicating with the nRF24

STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1 = 0x3130303030 0x4141417852
RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR = 0xe7e7e7e7e7
RX_PW_P0-6 = 0x20 0x20 0x00 0x00 0x00 0x00
EN_AA = 0x00
EN_RXADDR = 0x03
RF_CH = 0x4c
RF_SETUP = 0x03
CONFIG = 0x0e
DYNPD/FEATURE = 0x00 0x00
Data Rate = 1MBPS
Model = nRF24L01+
CRC Length = 16 bits
PA Power = PA_LOW


AND NOW WITH ADDRESS AAAxR  0x41 41 41 78 52   ON P1
 and 250KBPS data rate

STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1 = 0x3130303030 0x4141417852
RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR = 0xe7e7e7e7e7
RX_PW_P0-6 = 0x20 0x20 0x00 0x00 0x00 0x00
EN_AA = 0x00
EN_RXADDR = 0x03
RF_CH = 0x4c
RF_SETUP = 0x23
CONFIG = 0x0e
DYNPD/FEATURE = 0x00 0x00
Data Rate = 250KBPS
Model = nRF24L01+
CRC Length = 16 bits
PA Power = PA_LOW

Transmiter - NRF (long range) without adapter

CheckConnection Starting

FIRST WITH THE DEFAULT ADDRESSES after power on
0⸮Note that RF24 does NOT reset when Arduino resets - only when power is removed
08If the numbers are mostly 0x00 or 0xff it means that the Arduino is not
0⸮⸮communicating with the nRF24

STATUS 8= 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1 0= 0xe7e7e7e7e7 0x4141417852
RX_ADDR_P2-5 ⸮O⸮⸮ 0xc4 0xc5 0xc6
TX_ADDR 8= 8xe7e7e7e7e7
RX_PW_P0-6 0= 0x00 8x20 8x000⸮⸮008x00⸮⸮⸮0
EN_AA 8= 0x3f
EN_RXADDR 0= 0x03
RF_CH 8= ⸮⸮c
RF_SETUP 8= ⸮⸮7
CONFIG ⸮O⸮x0e
DYNPD/FEATURE 8= 0x00 8x00
Data Rate 0= 1MBPS
Model 8= nRF24L01+
CRC Length ⸮O⸮⸮⸮⸮⸮5
PA0⸮⸮⸮% = PA_MAX


AND NOW WITH ADDRESS AAAxR ⸮⸮⸮1 41 41 78 52 8\⸮
⸮⸮
0and 250KBPS data rate

STATUS ⸮O⸮x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1 0= 8xe7e7e7e7e7 0x4141417852
RX_ADDR_P2-5 0= 0xc3 ⸮⸮⸮ ⸮⸮⸮ 0xc6
TX_ADDR 8= 0xe7e7e7e7e7
RX_PW_P0-6 ⸮O⸮⸮⸮0 8x20 8x00 8x00 8x00 8x00
EN_AA 8= ⸮⸮f
EN_RXADDR 8= 0x03
RF_CH 8= 0x4c
RF_SETUP 0= 0x27
CONFIG 8= 0x0e
DYNPD/FEATURE 0= 0x00 8x00
Data Rate 0= 250KBPS
Model 8= nRF24L01+
CRC Length ⸮O⸮⸮⸮⸮⸮5
PA0Xower = ⸮P⸮a5

I think, It indicates that there's something wrong with the transmiter. I tried thinking of many ways. Here are my 2 thoughts:

  • There can/can't be a problem with the connection. NRF have 7 connected pins. I used multimeter for each of them to check connections with arduino pro mini module. There were a positive results for every single of them. There were no overlaps in connection, only 1 to 1
  • Problem may lay in terms of the connecting module to the PC
    LOOK UPPER LEFT CORNER
    There are 5 pins to upload the code to the arduino using USBasp programmer. When I normaly, upload the code, I use all 5 pins. When the code includes Serial.print command, I disconnect VCC and GND pin, and switch ON external power supply 8V for the arduino. For that the module gets full 3,3V power and can work "properly", and the arduino can still send signal through UART.

Why are there all the garbage characters in the "long range" connection test? I would not be happy with even one of them.

There are 5 pins to upload the code to the arduino using USBasp programmer. When I normaly, upload the code, I use all 5 pins. When the code includes Serial.print command, I disconnect VCC and GND pin, and switch ON external power supply 8V for the arduino. For that the module gets full 3,3V power and can work "properly", and the arduino can still send signal through UART.

I don't understand that. You are using your equipment regularly but I am not. You will need to provide a lot more detail.

...R

Robin2:
Why are there all the garbage characters in the "long range" connection test? I would not be happy with even one of them.

Exactly, I have no idea why they appear.

Robin2:
I don't understand that. You are using your equipment regularly but I am not. You will need to provide a lot more detail.

Strictly speaking, there's no other way to test If the code is working on the transmiter. NRF module is connected directly to the power supply, not the arduino. Everything seems to be okay with that way.

I'm gonna try once more and then, I'll be replacing NRF module from the transmitter for the new one (short range, but without adapter, because it is impossible to fit one in), It's hard to solder out 8 pins at a time

Did I miss the bit where you installed Robins simple tx/rx software, as was requested earlier?

I have good news. It works, but... in what cost. Here's the story.

On the yesterday's night I wanted to solder out this old NRF module from the transmiter. I completely destroyed 2 pins (copper tracks) on the board, but managed to take it out.
Today I decited to connect another nrf adapter that I bought with wired, directly to the arduino pro mini. It sure looks messy, but I was hoping it would work.
Then I ran simple connection test from the Robin's tutorial and It sure was different then with the old NRF.
After that I ran simple TX RX (from the same tutorial) hoping that this would work. It surely did, I got message that the packets were send. With that I mind I uploaded my code for the transmiter and receiver. I did not work. So I used one line from the Robin's code:

const byte thisSlaveAddress[5] = {'R','x','A','A','A'};

Changed the address of the communication, and It worked as smooth as butter.
here's the
video1.
video2.
I'm not happy with the results, but hey... It's working.
Thanks you guys for helping me.

Good. You've proven that the 'electronical' parts are working, I guess you're not happy with the code/response to commands, whatever.