Help with nRF24L01 for RC Airplane!

Hi all! For a college project, I'm trying to make an RC transmitter and receiver for a small model airplane. The general set up is:

Transmitter: Two 2 axis joysticks, Arduino Uno and nRF24L01+PA radio module- Arduino powered by laptop or 9V battery, 10m=uF capacitor across Vcc and ground on RF

Receiver: 3 servos, Arduino Metro Mini, and nRF24L01+PA radio module (plus an ESC, motor, propeller and 7.4V lipo battery)- Arduino powered by laptop (7.4v lipo battery once ready for air), 10 uF capacitor across Vcc and ground on RF

I cannot for the life of me get the transmitter and receiver to communicate together. After troubleshooting this for days, I decided to take a step back and just see if I can get communication between the transceivers with a simpler circuit.

For the "simple circuit": On the transmitter side, I tried transmitting potentiometer values for the receiver's servo to change directions. I've tried this in multiple variations with multiple codes. The transmitter part seemed to /maybe/ work, it's transmitting SOMETHING, but I can't get it to communicate with the receiver.

But I'm running out of time to test simpler circuits before my deadline so I'm mostly looking for help with this specific tutorial for the airplane, as it's closest to what I am trying to achieve (thought there's other similar documentation out there):

https://www.rcpano.net/.../simple-and-cheap-radio.../

I'm fairly confident that my schematics match the transmitter and reciever in the link above. I also don't see how the code would have to change for my setup, so I kept as is. I don't see anything wrong and so I'm guessing one of my parts are bad, the tutorial above is inaccurate, there's a power problem, or I'm misunderstanding how to use RF modules. They do something! Just not what they need tFull code and schematic in link above

Any ideas? I've looked at all the documentation I could, including the "simple nRF24L01+ tutorial" and all the others I could find. I'm getting desperate!

If you don't have any good advice for this topic, I would appreciate other similar project ideas with some of the same parts I have that I could feasibly get done in a week...

Thanks! (happy to send screenshots of anything if that helps)

I haven't worked with the nRF24L01 but I recall that it was frustrating when its not working and you don't know if its the code or the receiver or the transmitter etc.

The only help I could give you is to:

  • Check and make sure the power supplies are strong enough to provide the peak current during transmitting.
  • Triple check all wiring.
  • If using a solderless breadboard make sure you have good solid connections.
  • Use the simplest test code you can find. Maybe this might help simple test code

Next time you will arrive at this conclusion waaaay sooner. These are a little tiny nightmare and it is essential that you can get them to function reliably, usually ppl don't write the "hard"parts, so you need a good tutorial - I found these, there are others. I cannot find the Robin2 material, but that has helped everyone.

Also are you sure you have accounted for any variations in your specific part? There are many different boards and configurations and voltages, so just be sure you are dealing with what you have in front of you.

also separate the modules during testing, Imma guess 10 feet would do or someone will correct me, thanks.

Srsly, even with a deadline I would take the time.

a7

Take a look at iforce2d on youtube.....cheapass transmitter....

I have been working with and trying to help people use the rf24 radios for some time. Here is my best advice.

If you read and, closely, follow Robin2's simple rf24 tutorial you should be able to get them working. That tutorial sure helped me. Run the CheckConnection.ino (look in reply #30) to verify the physical wiring between the radio module and its processor (Arduino).

Make sure the rf24 power supply can provide enough current. This is especially true for the high power (external antenna) modules. I use homemade adapters like these. They are powered by 5V and have a 3.3V regulator on the board.

If using the high powered radios make sure to separate them by a few meters. They may not work too close together.

Reset the radios by cycling power to them after uploading new code. I have found that to help. They do not reset with the Arduino.

Switch to 1MB data rate to catch the not so cloned clones.

Start here....work your way through it.

Thanks for the advice! I had seen the Robin2 tutorial but hadn't sat down to really try it. I will do so and go from there. I guess I'm a little confused about how to power these things. Do the two rf24s both need external power supplies? Is Vcc and ground on each of them not connected to Arduino at all, just the digital pins connected to Arduino? And if a 9V or 7.4V is being used for Vin of Arduino, why doesn't this provide enough voltage to then power the rf24?

If I run an external 5V supply or greater to the rf24s, how important is the voltage regulator? Alternatively can I just use the 5V spot on Arduino to power the modules with a voltage regulator?

Thank you again!

The problem is not VOLTAGE it is CURRENT. The Arduino 5V pin provides 5V but not at enough CURRENT to satisfy an RF24. That's why you need a separate power supply. The Arduino GND terminal and the supply -ve must be connected together.

Steve

Yes.

The digital pins and ground from the rf24 connect to the Arduino. The positive and ground from the external power supply connect to the rf24. The ground from the external supply connects to the Arduino ground.

Because the power from the power plug or Vin goes to the onboard 5V regulator and then that 5V goes to a 3.3V on board regulator. The 3.3V regulator may not be able to supply the current required by the rf24 when the rf24 transmits.

Do not supply the rf24 with 5V. 5V will kill a rf24. The 5V goes to a 3.3V regulator then the rf24.

That is what I do. I send the Arduino 5V through a 3.3V regulator connected to the rf24. See the adapter modules linked in reply #5. So each rf24 has its own 3.3V power supply.

That helps, thanks! I tried Robin2's simple 1 way transmission setup and code and didn't get anything. So now I tried checking the connections (Reply #30) and I can see from the serial monitor that the nRF24L01 is not communicating with Arduino (I get a bunch of 0x00 which the comments say means no communication).

I don't have any voltage regulators on hand so this was just tested using the 3.3V on Arduino Uno and the 3 V on Arduino Mini. I'm going to find some regulators and try again but I'm not super optimistic...it is quite possible that I fried one or both of these RFs, I think at least once in my desperate attempts at getting these to work I plugged one or both into Arduino 5V.

Also do the +PA modules (long antenna) require more than 3.3V?

Thank you for all of your help. It's definitely helped with trouble shooting!

Robin2 has also suggested powering with a 2 AA cell battery pack for troubleshooting. The rf24 should run on the 3V from the battery pack and that pack can supply the necessary current.

5V to the rf24 Vcc will kill them.

No, they require the same 3.3V, but more current.

So the transmitter +PA module seems to be communicating with Arduino via the 3.3V on Arduino Uno.

For the receiver (the nRF24L01 WITHOUT PA) connected to Arduino metro mini, I set up a voltage divider and capacitor setup to output 3.3V from an external 5V (I have a 3.3V regulator on the way). It still isn't working. I know it's not the RF module as when I put it in the transmitter circuit, it works. So maybe the voltage divider just isn't stable enough and it will work once I have an actual 3.3V regulator. Other wise, I'm now at a standstill...

You cannot use a voltage divider to reduce voltage for the purpose of supplying regulated power. The output voltage of the divider will change when the current demand changes. And the current probably will not be high enough. It just will not work.

Did you try a 10uF or 100uF cap on the power supply close to the radio module. Solder the cap right on the Vcc and ground terminals of the radio module (observing polarity) and connect to the Arduino 3.3V output.

Good to know. I'll look into that. Yes I've been using 10uF capacitors on each radio module. They're not soldered in, but are connected on the breadboard between 3.3V and ground. I guess I just need to wait until I have 3.3V regulators and go from there, but I'm hoping there aren't any other hidden issues. I think the Arduino Uno 3.3V pin has been enough to power the RF, though I will compare when I have a regulator to use for it. It's the Arduino Metro Mini that I believe is more so the problem, and that's the one I had tried a voltage divider for. It only have 3V and 5V input voltage pins so my guess is I need to convert to 3.3V for it to work properly