Been buying some more modules from ebay! This time it is radio transceivers I want to use for a project.
From left to right:
- Nordic nRF25L01+ module with onboard antenna
- same nRF24 with SMA and external antenna
- nRF24 with a PA and LNA
- TI CC1101 <1GHz transceiver
It started with the small nRF24L01+ module. I got a kit of these with some Digispark Pro boards I ordered. The chip is made by Nordic Semiconductors and on paper has some good features. It is basically designed for short range, low power Internet of Things applications. Almost a simpler version of Bluetooth. There are some features in the hardware that make it ideal for small mesh networks.
The nRF24 operates in the 2.4GHz ISM band. Basically a free for all area which most countries do not require a license to use and it is also where WiFi lives. Data rates are selectable from 250kbps to 2Mbps. SPI interface, simple register set. Basically give it a channel, data rate and a node ID and you’re off.
RF specs are so-so. 0dBm transmit power and -94dB sensitivity at the lowest data rate.
Lots of support on the Arduino, even has its own mesh network library but I’ve not looked too deeply. It looks like it is developing quite nicely.
Downside is those RF specs. WiFi can transmit at 20dBm. 100x the power! And as with all simple RF devices the front end has little filtering or channel selectivity. In my range testing the nRF24 gets utterly mugged by WiFi. Ranges of 20ft line of sight are doable. Go near a WiFi access point and they drop to a few feet.
The extra antenna gives you a bit of a boost, but with all things RF it is a double edged sword as it picks up more of the WiFi signal too!
The board with the PA as the RFaxis RFX2401C combined LNA and PA chip. On paper it adds 5dB to the receive side and allows for output powers of 20dBm on the transmit. I’ve only done a quick test and the results were no better than the non-PA version, but I think I need to adjust some settings first.
The TI CC1101 is a totally different beast. This is TIs low cost, low power RF modem device. It is not as cheap as the nRF24 but it is very different spec wise. The CC1101 lives down below 1GHz, using either the 433MHz European ISM band or the 868/915Mhz US band. Bands are not really software selectable as the hardware matching determines the optimum frequency. The boards I’ve been using are 433MHz.
This band is used by devices such as energy monitors, wireless weather stations and other longer range consumer wireless gadgets.
With a top data rate of 500kbps it won’t keep up with the nRF24. However it has a low end of 1.2kbps and the lower the data rate the longer the range!
Also going in favour of the CC1101 are the RF specs. Maximum output power of 12dBm and a sensitivity of -116dBm at 1.2kbps. Instantly your link budget is 33dB higher than the nRF24 which equates to a huge range increase. The trade off being 1/200th the data rate.
In a quick range test at 4.8kbps I could not get far enough to be out of range. I need to get on my bike and take a ride around the village to see how far it gets.
For my application, a wireless outstation to my current weather station, the CC1101 has more than enough data rate. The distance involved is too much for the nRF24 which is a shame. Basically I’m trying to get certain sensors away from the influence of buildings.
TI make a bigger brother to the CC1101, the CC1125. I’ve used one of these on a work project along with the CC1190 range extender. The CC1125 is about 7dB more sensitive at the same data rate and with the range extender putting the transmit up to 27dBm it goes for miles! Not seen one of them as a module yet. The CC1125 is a bit more expensive!
One thing I do need to do is write my own CC1101 library. Nothing wrong with the ones out there, just rather limited. And I need Arduino Due support.