nrf24 range issues
I'm experiencing some range issue between a node and my gateway.
My node is a cheap arduino nano (https://www.aliexpress.com/item/Nano-3-0-Controller-Compatible-for-Arduino-Nano-CH340-USB-Driver-with-Cable-NANO-V3-0/32578440263.html?ws_ab_test=searchweb0_0,searchweb201602_5_10152_10065_10151_5490020_10068_5560011_10305_10304_5550020_10307_10137_10060_10155_10154_10056_10055_10054_5470020_10059_100031_10099_5460020_10338_10103_10102_440_10052_10053_10107_10050_10142_10051_10325_5380020_10326_10084_10083_10080_10082_10081_10177_10110_10111_10112_10113_10114_143_5570011_10312_10313_10184_10314_10078_10079_10073-10110,searchweb201603_2,ppcSwitch_5&btsid=302c5615-85ab-4cf4-93e3-6b65e5b4b6f7&algo_expid=55187255-2532-4bbd-b39b-07830af37330-9&algo_pvid=55187255-2532-4bbd-b39b-07830af37330)
and my gateway is a nodemcu v1.0 esp8266.
On my node I've uploaded a simple sketch that mocks a sensor and send values every 3 seconds.
On the radio side I got two nrf24 with antennas bought here: https://www.amazon.fr/MakerHawk-NRF24L01-antistatique-Compatible-lantenne/product-reviews/B072FKSFM7/ref=dpx_acr_txt?showViewpoints=1
They are plugged on "base modules" that are supposed to provide me a clean 3.3V power supply. (https://www.amazon.fr/gp/product/B0716ZLPZQ/ref=oh_aui_detailpage_o00_s01?ie=UTF8&psc=1)
The base module on the gateway side is plugged to a 9V power supply.
The base module on the node side is plugged to the 5V nano pin. The arduino nano is connected through usb on my computer.
I've tested different settings of MY_RF24_PA_LEVEL
My radios are shielded with foil+aluminium papers
I've checked the output of my base module (= the input of the radio). There is 3.2V between VCC and GND
I only get 20 meters range in direct line of sight. At 10 meters range, if I put an obstacle (my body) between the two antennas the messages are not transmitted.
I've read a lot about issues with radios.
This is why I decided to buy radios with antenna and a base module to put all chances on my side.
Thanks for your help
This post is deleted!
Did you add the capacitors on the radio modules, as close as possible to the vcc/gnd pins ?
Normal radio modules with capacitors give much better range than that, if you have no need for very long range, why bother with antenna modules, adapters etc ?
And I don't know why people still buy known deficient radios modules that they have to "hack" to try to get a decent range (and often it doesn't even work) while you can get good quality ones at very good price, that need no hack and will provide for sure a good range.
Like this one for example:
@LeKrist don't test 'worst-case' signal path by standing in between two radio modules. Your body is 70% water, which forms a perfect block for 2.4GHz signals.
Thanks for your replies.
"Did you add the capacitors on the radio modules, as close as possible to the vcc/gnd pins ?"
I thought my base adapter modules were providing that. Am I wrong?
"if you have no need for very long range, why bother with antenna modules, adapters etc ?"
I need reliable 200 meters with no direct line of sight (but no big obstacles)
"And I don't know why people still buy known deficient radios modules that they have to "hack" to try to get a decent range (and often it doesn't even work) while you can get good quality ones at very good price, that need no hack and will provide for sure a good range."
I think I know why: it is not common and easily accessible knowledge as you seem to believe. I've bought these modules a while ago and now that I've got range issues, I read extensively on different websites and this forum. Some people have done very good and impressive work to detect counterfeit one after you bought them. And even sometimes counterfeit ones have performed better than genuine ones apparently.
Honestly, if the ones you talk about in the link are "for sure a good range" I think the MySensors project must advertise them way more. I spent countless hours trying and reading on range issues. I believe a newcomer to the MySensors project has a good chance to fall in the same trap.
Nobody likes to "have to hack to try to get a decent range (and often it doesn't work)" and people don't like to buy crap either. I am way more short of time than money, particularly when we're talking about a few $.
Ok thanks Yveaux. I've tested the direct line of sight as mentioned in my original post: 20 meters.
I thought my base adapter modules were providing that. Am I wrong?
Yes you are, it's good to provide a stable and strong enough power supply from 5-12V source, but it only has the capacitors necessary for the voltage regulator to be stable.
I agree with you for the rest, I have tested other modules from the same supplier (because I use SMD version), and even the cheaper PA/LNA module with small antenna had completely changed the quality of the radio link in my home.
I put a gateway in one side of my appartment, sensor on the other side, there are 3 concrete walls, 25-30 cm thick (I'm in a high rise building) so the signal has to go around them through the doors and reflect on other walls, and still I don't seem to miss any message.
I have this exact module on the way and if the quality is as good I will suggest a change in the products suggested on MySensors website.
Thanks for the clarification on the capacitors. I'm going to solder a capacitor between VCC and GND on my radios (still keeping the adapter base module) when I get back home and I will report.
Can you provide a link to the ones you're currently using? . I'm super keen to nail this problem down forever and hopefully for everyone. I am very frustrated of stalling in my projects on these stupid radio issues. MySensors is such a great project, it does not deserve this.
About my assumptions that the "base module" had some bypass capacitors, I read it there: http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
If you look for the words "base module" in this page you will find:
"There are also nice low-cost base modules like THIS (RIGHT) that you can plug nRF24L01 modules into. These have a 3.3V regulator built in, AND good power bypass capacitors. You can also find these on Ebay etc. They make it easier to get started and keep operation reliable."
you can also read somewhere else in the page:
"Solution: ADD bypass capacitors across GND and 3.3V ON the radio modules or use the Base Modules shown above. One user said, "Just Solder a 100nF ceramic cap across the gnd and 3.3v pins direct on the nrf24l01+ modules!" Some have used a 1uF to 10uF capacitor."
I now doubt the idea of soldering another capacitor on my radio if the base module already has some. Do you still think it's the way to go @Nca78 ? Be sure I took your answer into account (the capacitors are for stability of the power supply), I just want to double check considering the different opinion on the website mentioned above.
To see if adding a capacitor "on top" of the base module helps, I took my cheapest radio without antenna (https://www.amazon.fr/gp/product/B01BVAAASY/ref=oh_aui_search_detailpage?ie=UTF8&psc=1) and put in on top of the base module. I tested it without capacitor and was getting roughly 5-10 meters range. I soldered a capacitor (4.7 microF) and got 20 meters range. Thus I reached the same range as the antenna version.
So I decided to try soldering a capacitor on my radios with antenna (still sitting on top of my base module). Unfortunately, I get the same range (~= 20 meters).
You can try to solder bigger capacitors and see what's best, so people go as high as 47uF. I usually solder 10uF by default on the non pa/lna modules.
For the module I use it's the one below but I don't advise you to buy it for the following reasons :
- it's not through hole but SMD version, so it's only if you have a PCB for it
- by default, antenna is PCB antenna and the performance is not that great
- changing to external antenna is a real pain, because you have to move a capacitor from one location to another and that capacitor is extremely small. I lost it on my desk and in the end I soldered a 0603 cap of the same capacity that looks like a monster and is way bigger than the pads
@LeKrist it could very well be that the adapter boards are the culprit. They normally use an ams1117-3v3 to generate the 3v3 supply, but I've seen Chinese copies of this chip that could barely generate 100mA.
The best results I always obtain with 2xAA battery powered sensors. You could always give this a try as it is a quick test (assuming you're also using a 3v3 arduino; eg pro mini) and additional capacitors are not required.
Just make sure you start with fresh batteries so the supply will be around 3v and power both the radio and arduino directly from the batteries - no step up/down converter needed.
@Nca78 good idea I will try different capacitors sizes.
@Yveaux thanks for pointing that potential point of failure. I decided to test the max amp at the output of my base modules. I put a couple of LEDS in parallel and a 470ohm resistor in front. With my multimeter I measured max 400mA (after that adding more LEDS was not changing this max amp). I think 400mA is way enough for the radio right?
@Nca78 I would like to make sure I understand the purpose of adding an extra capacitor. Is it to be able to give the needed current when a surge happens? Is it to filter the noise? Both?
@Nca78 I've tried 47uF capacitors and it does not solve the issue (it might be a touch worse)
When you tried with normal module, did you try with only "normal" NRF24 or with 1 normal and 1 amplified module ?
Purpose of capacitor is mainly to filter out noise. Did you solder it directly on the vcc/gnd pins of the radio modules, with leads as short as possible ?
If it's not making a difference or getting worse, reduce the size to get closer to the 4.7uF, and search the culprit somewhere else.
@Nca78 when I tried with the "normal" module, I tested both situations at the other hand (another normal and one with antenna).
I soldered the capacitor directly to the VCC + GND on the radio. But I did not make the leads of the capacitor as short as possible: they're still 2cm long I guess. I'm gonna try with reducing that as much as I can.
Let's assume I've got my capacitors correct to filter the noise. Can I assume that I don't have a problem with my power source as I checked I can deliver 400mA to my radio module? Or should I still try with the batteries as @Yveaux suggested? (I'm asking because it's a bit less convenient to try that for me right now)
I think before cutting the capacitors legs you should try with the AA/AAA batteries.
I've used modules with relatively long capacitor legs and with power source from a battery it didn't create a range problem so either you have a noise problem with your power source, or you have bad modules, or both. Testing with the batteries will give you an answer for the power source.
I'm confused: I thought the potential noise in my power source is not a problem as I have soldered a capacitor to filter that. Why trying the batteries then?
Anyway, I've tried and it does not help
FYI I just read this article https://bigdanzblog.wordpress.com/2015/02/21/the-very-frustrating-nrf24l01/
At one point he mentioned:
"There are multiple resources that document needing the capacitor and a better power supply. You might want to heed them so you don’t get as frustrated as I did.
Even after I made those changes, I was still having issues with packet loss. I decided to power the Nano from the external 5V power supply and it began working much more reliably."
I don't see why that worked: he was already powering the radio with an external 3.3V so the Nano was already not providing power to the radio. Perhaps there was still noise conveyed through the non-power related pins between the nano and the radio?
I'll try that anyway and I will report
So I've tried everything mentioned before (batteries and shortening the capacitors leads to a minimum feasible). Still the same results.
My last chance: I'll buy other modules (the shielded ones) and cross fingers.
I finally ordered 2 of these (https://www.aliexpress.com/item/2PC-Lot-E01-ML01DP5-nRF24L01-PA-LNA-Long-Range-2-4GHz-RF-Wireless-Transceiver-Original/32797433295.html?spm=a2g0s.9042311.0.0.wuTpjZ) . Thanks @Nca78 for recommending them earlier.
I plugged them on my base modules and did my usual test.
The range is now way beyond my needs! I have 100m+ of range (I was too lazy to take the boat to cross the river at the bottom of my property..)
I'm a bit bitter to have wasted so much time but very relieved too. I have the feeling that radio will not be an issue anymore (and so I'll save hours of troubleshooting)
I've got a few conclusions:
_ It's good to ask help: thanks @Nca78 and @Yveaux !
_ As mentioned earlier in the topic with @Yveaux I think the modules recommended on the mysensors websites should be changed to these ones (or at least others that have been tested and work). Yes they are more expensive (3.4€ in my case) but it's still cheap and definitely worth the saved dozens of hours trying to figure out the radio issues. I'm also sure it would help not losing new users that get too frustrated
_ I think the whole set of tips/tricks to improve the range of some modules (solder, capacitors, clean power source, base module...) can be a bit of a trap. I don't deny that it can help marginally or drastically on some modules. But my experience has proven that even with all of these tricks applied it still would not make it with some modules. Even with modules advertised as "long range". As @Nca78 said it in is very first post, if we know that some modules just work "out of the box" we should stop recommending dodgy ones that can sometimes be fixed with tricks or not.
If I have the motivation I may even try to remove the base modules (making sure I still provide 3.3v and not 5v) and will see if they're still needed with my new radio modules.