- Vcc (1.8-3.6V)
- Gnd
- CE
- CSN
- SCK
- MOSI
- MISO
- IRQ
My initial testing of these modules indicated they did not use Nordic nRF24l01+ chips, or chips that are compatible such as the Beken BK2423 or the SiLabs Si24R1. The most obvious indication that these are not nRF modules iss that the default pipe0 address (register 0A) is 46 20 88 41 70 instead of E7 E7 E7 E7 E7. They also respond to the bank switch command (0x50, 0x53), which is not supported by the Nordic chip. I sent a message to the vendor asking for a data sheet, and while I waited I tried to figure out what chip the modules use.
Besides Beken and SiLabs, Hoperf makes a compatible module called the RFM70. The RFM70 modules have a pinout that starts with Gnd, and they have the same default pipe0 address as the nRF. The only other chip I could find that is similar to the nRF24l01 was the NST LT8900 or LT8901. The datasheets for the NST chips didn't match with the register values from my modules.
Surprisingly, less than 24 hours after messaging the seller, I received an attachment containing a datasheet for the Semitek SE8R01. My initial thought that these would inter-operate with nRF modules simply by changing the pipe0 address was disrupted by the discovery that these modules use a slightly different packet format. Section 7.3 of the datasheet shows a 2-byte guard after the address field, just like bluetooth EDR uses where it switches from GFSK to DPSK.
If these modules use DPSK after the guard byte, then there is no way they will communicate with genuine nRF modules. Another less significant source of incompatibility is that these modules don't have a 250kbps mode; instead it has a 500kbps mode along with the 1 and 2-mbps modes. The 250kbps mode on the nRF24l01+ modules is good for extended range, since it has 9 dBm better sensitivity than 1mbps (-94 vs -85 dBm). The SE8R01 datasheet indicates -86 dBm sensitivity at both 1mbps and 500kbps, so there would seem to be little reason to use the 500kbps mode.
One benefit to these modules is that they have a received power report in register 09, something the nRF modules don't have. Although the datasheet documents the bank switch command, and how the currently active bank is reported in the status register 0E, there is no documentation of the bank 1 registers.
I also tested the modules to see if they will support packet sizes over 32 bytes. The chip seems to accept a payload length of up to 255 bytes, but the read Rx payload command only gives 32 bytes before looping back and repeating the first byte in the payload.
Power
The SE8R01 supports up to 4 dBm of output power, which should allow for better range than the nRF chip which tops out at 0 dBm. To set the output power to 4 dBm, section 6.5 of the datasheet says to set PA_PWR[3:0] in the RF_SETUP register to 1111. Power consumption for the Semitek chip at 0 dBm output power is 18.5mA - much worse than the 11.3mA consumed by the nRF chip at 0 dBm output. The higher power consumption will make it much harder to power these modules with a CR2032 coin cell, since many cheap coin cells start dropping voltage when current output passes 10mA.
Conclusion
At a price of $6 for 10, the SE8R01 modules are 25% cheaper than nRF24l01+ modules selling for $8 for 10. With nothing more than a couple minor tweaks, they can be controlled using existing nRF24l01 code libraries. They do not inter-operate with nRF modules, and consume significantly more power, and likely have no better range than is available using the nRF 250kbps mode. So while the lower price may make them attractive to a volume manufacturer, as a hacker I prefer to stick with the genuine nRF modules.
Do you know if there is a library for the dip variant of these? http://www.aliexpress.com/item/Similar-NRF24L01-2-4G-wireless-module-DIP-Spacing-2-54/32222043951.html?spm=2114.32010308.0.356.lNdQiY Thanks :-)
ReplyDeleteThere's no difference in the code to control the modules - it's the same chip just on different boards.
DeleteAs I said in the post, the registers are almost identical to the nRF24l01, so you only need to modify a couple lines from any nRF library.
Thank you for taking the time to reply and clearing that up :-)
DeleteGood then, I just try to avoid buying a bunch of boards I can't use. I was not sure if the other clones with DIP boards would work similar. I want to avoid pre-soldering 40-60 1.27mm pitch boards for my students.
I want to build a few remote controlled gadgets with students and as they want to take their projects home it needs to be as cheap as possible. I am now considering building some RC vehicles (boats, later simple gliders) and the range of the 33 cent 433MHz boards seems limited (plus they pick up a lot of noise and controlling several vehicles will just make things worse). I also hope the range will be a bit better (yes, water and 2.4GHz do not match well, but it should be enough hopefully).
The clones seem to have taken the upper hand on Aliexpress. but at little over $0.40 they are tempting.
The other option would be to skip the whole DIY transmitter and use bluetooth or the esp8266 wifi module and their phones, amazing how cheap those boards got.
Marcus,
DeleteThe 433Mhz modules can get decent range if you tune the receiver and use a big enough antenna.
http://nerdralph.blogspot.ca/2014/04/tuning-433mhz-ask-modules.html
http://nerdralph.blogspot.ca/2014/07/testing-433mhz-rf-antennas-with-rtl-sdr.html
There's not much you can do to solve the interference problem though. Since the 2.4G modules support 128 channels, they'd be a good choice for an environment with many transceivers.
Ralph,
DeleteThank you for your interesting post.
I have the same device, and of course it doesn't work with my standard RF24 library.
Could you tell me, what change should be applied to make the compatible library (change into RF24.h /cpp?).
Many thanks.
Francis, I do most of my code for the bare AVR (no Arduino bloat/overhead). I modified the mirf library, which you can find here:
Deletehttps://github.com/nerdralph/nerdralph/tree/master/avr/mirf
You'll need to be familiar with makefiles and the unix shell if you want to get it working.
I just tested my new NRF24L01+ (12*19) transceivers with edge-plated connectors - apart from the conflicting pinouts which I have now resolved, the 'new' modules are compatible with the older ones, although the range is somewhat less. I have a write-up about these 'new' NRF boards on the arduino forum -> http://forum.arduino.cc/index.php?topic=313195. Cheers, Bob
ReplyDeleteHeh Ralph. I have bought the exact same module, but i have no luck at receiving a correct packet.
ReplyDeleteThe configuration is : No Auto ACK, No CRC,2Mpbs, Output 0dbm. The SPI interface is working. Packet is marked as transmitted.
The most packages are lost. The packages that arrived contain bit errors.
So i bought new nrf24l01 modules. This modules work like a charm.
Do you have any suggestions? I added a 100nf capacitor..tried another module..it didnt help. Looks like there is no antenna but there is :D
Regards, Andreas
The modules have been sitting in my parts bin for the last few months, as I have been experimenting with my nRF modules to try to get them talking BLE. My only test of the radio was confirming that a packet was received by observing the IRQ line go low on the RX side, so you've actually done more testing of the radio performance than I have.
DeleteI do plan to do some range testing like I did with my nRF modules. If you are seeing lots of errors, they may have poorly tuned AGC. One way of checking would be to cycle through the different transmit power options. I think the AGC can be configured, possibly with one or more of the registers in the 2nd bank. But since the datasheet doesn't document the 2nd bank, it would take some work to figure out.
Many thanks for the quick response. After your reference to the AGC I found immediately an Arduino code example on: http://forum.arduino.cc/index.php?topic=292153.0 (http://forum.arduino.cc/index.php?action=dlattach;topic=292153.0;attach=109537) . Calibration in Bank1 is done here twice at se8r01_calibration() and se8r01_setup().
DeleteI'll test it again soon.
Update: I just translated the calibration arduino code and it works :-)
DeleteHi Ralph, Thank very much for your kind information.
ReplyDeleteI bought this module from Chinese seller, but I didn't know how to use it because there was no datasheet.
Now I got all the information I wanted.
Thanks again.
Bob
Glad it helped. You can also thank Andreas for finding the calibration code.
DeleteRalph, very good article, thank you. Re: "At a price of $6 for 10, the SE8R01 modules are 25% cheaper than nRF24l01+ modules selling for $8 for 10." - you should know those sub $1 nRF24L01 modules are 350nm knock-offs and also have higher power requirement and lower sensitivity.
ReplyDeletehttp://hackaday.com/2015/02/23/nordic-nrf24l01-real-vs-fake/
http://zeptobars.com/en/read/Nordic-NRF24L01P-SI24R1-real-fake-copy
Please notice original Nordic chips sell for $1.50 ~ $2+ @ 10kpcs. There is no way you could buy $1 module with Nordic in it.
https://octopart.com/search?q=nRF24L01
While you might be correct, your premise about pricing is wrong. Talk to any semiconductor sales rep, and they'll tell you the price you see on Digikey or Newark is much higher than you'll pay buying direct. And often the pricing in Asia is lower than North America or Europe.
DeleteYou can pick up 10pcs of Attiny13a for a little over $2 in the Shenzhen electronics market, yet you'll pay over $2000 for a reel of 4000 at DigiKey. And I'd be willing to bet $2000 that the ones sold in SEG are not clones. I'm quite confident nobody has fully cloned any of the AVR MCUs. The closest you'll get are from LGT, but they are only partially compatible.
Thanks for sharing! Made my day easier for sure!
ReplyDelete