Which are the *best* NRF24L01+ modules?
-
-
All's well that ends well. :smile:
-
BTW, I just now measured this surface mount module using the uCurrent, and it measures out at
Powered Down (Sleep): 0.7uA
Standyby: 22.7uA
Therefore, I deem it genuine. I got it at ICStation two or three months ago:
http://www.icstation.com/nrf24l01-rfid-wireless-transmission-module-2dbm-p-4620.htmlIt would help a lot if others here, when you measure your module, would post your measurements and where you got it from, and when. That way we can all benefit from the network effect and make better purchases and possibly avoid bad purchases also.
-
Hmm.. no.. but I cannot for my mind recollect where I could have read it. So it might just have been a creation of my (weird) mind. :)
Er, check the second sentence of the first (real) paragraph of the OP of the earlier fake nRF24L01+ thread.. Maybe that's where @hek got that impression.
And now I am the one who doesn't recall exactly where I read that - but it's undoubtedly from one of the sources I linked to in that post, raised as one of the reasons to be concerned about fakes.
-
Those with a low idle/sleep power usage are either Nordic or a quality clone.
Even the blob modules would be workable in non-battery nodes, if they indeed have excellent range and low packet loss.
So I just looked up the Fluke 87V, and the price is a bit high for my budget. So alas, the current state of our fake detection (pun acknowledged) is not a universal solution.
Perhaps a variant with a coulomb counter will arise. Or perhaps using the 200x amplified differential ADC input of the Leonardo or Mega2560 with averaging.
And I think it would be very apropos to distill the knowledge from these many posts into a wiki page. As with many threads here, there's some great info but sometimes it's embedded in hours of reading to find it again.
-
@NeverDie - now that you have the measurement down, how about measuring receive current, and perhaps carrier-only transmit current? Both of those can be steady state.
I'd still like to know how the various models rate in those areas too, while you have the setup handy.
-
@NeverDie - now that you have the measurement down, how about measuring receive current, and perhaps carrier-only transmit current? Both of those can be steady state.
I'd still like to know how the various models rate in those areas too, while you have the setup handy.
-
Register 6 (RF_SETUP) bit 7 (CONT_WAVE) on p 55 of the rev 1 datasheet.
Set it up to transmit constantly (carrier only, no data) and measure the Vcc current usage. (For a short time obviously!) Probably close to the current it would take while sending data.
Likewise, measure current while waiting to receive with no actual data coming in (unless that's what your standby is).
I haven't tried the constant-wave transmit mode, I just remembered that it was mentioned in the datasheet.
-
For the IcStation module I profiled directly above, the receive current (using the microcurrent) measures out at 8.4mA using this sketch to put the module into receive mode:
/* Adapted by NeverDie on 8/11/2015 for uCurrent measurements. * Sketch for measuring receive current. */ /* Copyright (C) 2011 J. Coliz <maniacbug@ymail.com> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. TMRh20 2014 - Updates to the library allow sleeping both in TX and RX modes: TX Mode: The radio can be powered down (.9uA current) and the Arduino slept using the watchdog timer RX Mode: The radio can be left in standby mode (22uA current) and the Arduino slept using an interrupt pin */ /** * Example RF Radio Ping Pair which Sleeps between Sends * * This is an example of how to use the RF24 class to create a battery- * efficient system. It is just like the GettingStarted_CallResponse example, but the * ping node powers down the radio and sleeps the MCU after every * ping/pong cycle, and the receiver sleeps between payloads. * * Write this sketch to two different nodes, * connect the role_pin to ground on one. The ping node sends the current * time to the pong node, which responds by sending the value back. The ping * node can then see how long the whole cycle took. */ #include <SPI.h> #include <avr/sleep.h> #include <avr/power.h> #include "nRF24L01.h" #include "RF24.h" #include "printf.h" // Set up nRF24L01 radio on SPI bus plus pins 7 & 8 RF24 radio(7,8); // sets the role of this unit in hardware. Connect to GND to be the 'pong' receiver // Leave open to be the 'ping' transmitter const int role_pin = 5; const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL }; // Radio pipe addresses for the 2 nodes to communicate. // Role management // Set up role. This sketch uses the same software for all the nodes // in this system. Doing so greatly simplifies testing. The hardware itself specifies // which node it is. // The various roles supported by this sketch typedef enum { role_ping_out = 1, role_pong_back } role_e; // The debug-friendly names of those roles const char* role_friendly_name[] = { "invalid", "Ping out", "Pong back"}; // The role of the current running sketch role_e role; void setup(){ // set up the role pin pinMode(role_pin, INPUT); digitalWrite(role_pin,HIGH); delay(20); // Just to get a solid reading on the role pin // read the address pin, establish our role if ( digitalRead(role_pin) ) role = role_ping_out; else role = role_pong_back; Serial.begin(57600); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } printf_begin(); printf("\n\rRF24/examples/pingpair_sleepy/\n\r"); printf("ROLE: %s\n\r",role_friendly_name[role]); radio.begin(); // Open pipes to other nodes for communication // This simple sketch opens two pipes for these two nodes to communicate // back and forth. // Open 'our' pipe for writing // Open the 'other' pipe for reading, in position #1 (we can have up to 5 pipes open for reading) if ( role == role_ping_out ) { radio.openWritingPipe(pipes[0]); radio.openReadingPipe(1,pipes[1]); } else { radio.openWritingPipe(pipes[1]); radio.openReadingPipe(1,pipes[0]); } // Dump the configuration of the rf unit for debugging radio.printDetails(); } void loop(){ radio.startListening(); }I can't promise to do the other measurements, as I'm facing some deadlines I need to attend to. If anyone else would like to pick up the baton and carry it forward, please feel free.
-
I understand about other deadlines - I appreciate the efforts you have made so far.
Sounds like all that's needed in the final version of your testing is a bent-pin 2x8 connector test shim such as you have described and photographed, and a $400 DVM :-)
-
I understand about other deadlines - I appreciate the efforts you have made so far.
Sounds like all that's needed in the final version of your testing is a bent-pin 2x8 connector test shim such as you have described and photographed, and a $400 DVM :-)
@Zeph said:
Sounds like all that's needed in the final version of your testing is a bent-pin 2x8 connector test shim such as you have described and photographed,
Yes, a 2x4 connector, or I actually used (2) 1x6 female headers (I didn't have 1x4 female headers readily at hand)
and a $400 DVM :-)
I imagine some of the cheaper DVM's would get the job done too. That's another topic entirely though.
I'm not sure where you draw the line on how much testing is enough. I think it probably already is enough. 80/20 rule. :relaxed:
-
Have you decided to toss the blob modules (or put them in the back of the drawers), in favor of genuine Nordic only?
-
Have you decided to toss the blob modules (or put them in the back of the drawers), in favor of genuine Nordic only?
@Zeph said:
Have you decided to toss the blob modules (or put them in the back of the drawers), in favor of genuine Nordic only?
No, at present I still prefer the blob modules. It may yet turn out that there's a better PCB or antenna or something for the genuine chips that will make a huge difference in their effective performance, but so far I'm underwhelmed by the modules with genuine chips. Also, modules with the genuine chips seem to cost around ~$3/each, and so for about only an extra dollar I could have an RFM69HW. Yesterday I ordered a couple Moteino's with the RFM69HW, and so after they arrive I'll see how that goes rather than re-invent the wheel. They were kinda pricey, which is my main reservation about them.
If others are happy with their genuine chip NRF24L01+ modules, then good for them. Unfortunately I can't count myself among them, and so I'm restless to find something and settle on it. My guess is it may be the blob module, or it may be the RFM69.
-
Ah, OK.
I saw the testing as serving two purposes:
- Learning a "power signature" to distinguish variations on the chips
- Finding out how bad (or good) the variants are in regard to power usage
Seems like the first is nailed. The latter has begun to be characterized (thanks to you). The idle and sleep power is substantially greater on the blobs (for example). If the 8.4 ma for Receive is for the blobs, that doesn't sound bad, don't know about transmit.
And if powered by the mains, it doesn't much matter.
-
Ah, OK.
I saw the testing as serving two purposes:
- Learning a "power signature" to distinguish variations on the chips
- Finding out how bad (or good) the variants are in regard to power usage
Seems like the first is nailed. The latter has begun to be characterized (thanks to you). The idle and sleep power is substantially greater on the blobs (for example). If the 8.4 ma for Receive is for the blobs, that doesn't sound bad, don't know about transmit.
And if powered by the mains, it doesn't much matter.
@Zeph said:
....don't know about transmit.
Blob module transmit current was about 20ma, (my interpretation of the oscilliscope pictures I posted). I was surprised that the "listening" current was just 8.4ma, because that's lower than the spec sheet for "receiving" current. I don't know, but perhaps "receiving" consumes more current than just "listening."
On a relative scale compared to the other modules, the blob modules obviously consume more current. However, on an absolute scale, they seem like they may be good enough..
And if powered by the mains, it doesn't much matter.
-
@Zeph Looks as though you could use the LTC2440 to measure the sleep and standby currents and read the results with your arduino: http://dangerousprototypes.com/forum/viewtopic.php?f=2&t=4247#p45583
or maybe use one of these breakout boards to similar effect:
http://www.ebay.com/itm/LTC2400-24bit-analog-to-digital-converter-ADC-module-temp-sensor-SPI-AVR-arduino-/111005456125?pt=LH_DefaultDomain_0&hash=item19d870d6fd -
I'm seeing similar results with my radios. I bought these from aliexpress and then after reading the various threads about fakes and the problems people were having, I bought a bunch of authentic modules from ITEAD just to avoid those headaches. The real modules have much cleaner PCB's and better looking solder joints. The two types seem to be able to talk to each other OK but if set two modules at opposite ends of the house (with 2 exterior walls in between as well), the cheap modules still connect and the genuine ones don't. I'm assuming this is similar to what you're seeing with the real modules having a lower transmit power. I'm now regretting spending the extra money on the genuine modules (if anyone in the CONUS wants some genuine modules, PM me and I'll sell you some at my cost).
-
I'm seeing similar results with my radios. I bought these from aliexpress and then after reading the various threads about fakes and the problems people were having, I bought a bunch of authentic modules from ITEAD just to avoid those headaches. The real modules have much cleaner PCB's and better looking solder joints. The two types seem to be able to talk to each other OK but if set two modules at opposite ends of the house (with 2 exterior walls in between as well), the cheap modules still connect and the genuine ones don't. I'm assuming this is similar to what you're seeing with the real modules having a lower transmit power. I'm now regretting spending the extra money on the genuine modules (if anyone in the CONUS wants some genuine modules, PM me and I'll sell you some at my cost).
Thank you! Finally some confirmation of what I've been saying.
I received some "genuine" modules from AliExpress today: http://www.aliexpress.com/item/Free-shipping-Original-Genuine-NRF24L01-Wireless-Module-2-4G-wireless-communication-module-2-54mm-Interface-2/1781618813.html
Power Down (Sleep): 0.5uA
Standby: 23.5uA
Listening: 8.6ma
The transmit waveform looks exactly the same as the the module from Itead.Therefore, I deem them genuine.
-
I was able to sharpen my o-scope pictures by turning on Hi-Res mode. With this better detail, a lot more is apparently different between the genuine modules and the blob modules.
Here are some transmit shots of the new genuine modules:


and here are some shots of the blob module, also now taken at Hi-Res on the o-scope:



As you can see now that I'm using Hi-Res mode, even the shapes of the waveforms are completely different looking.
Reminder: because I'm now using a 1/2 ohm sense resister, each verticle devision now represents 4ma.
So, eyeballing it, the genuine chips are using about 12ma for their transmit current, whereas the blob module chips are closer to about 18ma.Also, the second peak after the first peak is higher on the genuine chips, whereas it is lower on the blob chips. I don't know what those peaks represent.