Wireless communication is fascinating for me, but since I do not know much about RF electronics, I am stuck with what pre-made modules I can buy. And, of course, one of the most important parameters of a radio module is it’s range. But strangely, this information is very scarce on the internet and I don’t trust the claims made by the manufacturers, so usually I just test the range myself.
About a year ago, I tested the range of the NRF24L01+PA+LNA module, and I must say I was disappointed, as I got only about 480 meters of range in a Line-of-Sight scenario. So I was looking for other modules, which would give me better range, and of course, LoRa caught my attention. As I am currently also working on an ESP32 project for a certain company, I decided to test the “long range” mode of that chip as well. If you just wanna see the results, skip to here.
I know that there are people achieving enormous ranges with either LoRa or ESP32 with various antennas, amplifiers and so on. But I am interested in the range of the unaltered, 4 dollar modules with the “vanilla” omnidirectional antenna. Directional antennas are useless for my intended application and honestly, buying a super expensive omnidirectional antenna kind of defeats the purpose of a cheap 4 dollar module.
The RA-01 module comes in SiP SMD package, which is very nice from PCB design perspective, but not very practical for prototyping purposes. But since PCBs from China are so cheap these days, I decided to make a simple board just for testing purposes instead of trying to wire this to a breadboard. It has a 3V LDO (so you can power it from a Li-Ion battery), STM32F030F4P6 (it costs literally 50 cents, so why the hell use an AVR), the LoRa module itself, some LEDs and a ton of capacitors.
I’ve written a simple library for this module and used the STM32’s build-in CRC module to check the received data. Also I set up the LoRa module for maximum range: frequency 430 MHz, TX power +20 dBm, bandwidth 7.8 kHz and spreading factor 10 (theoretically, you could go up 12, but this just didn’t work for me).
Warning – this test board has an onboard linear regulator with a ton of decoupling capacitors. But when I cranked up the output power to +20 dBm, I started getting a constant restarts after the transmission started. The reason was of course huge current spikes generated by the RA-01 module, which were up to 250 mA higher than the average consumption and because of that, the 3 V rail colapsed. So on the transmitter board, I changed the linear regulator to a brand name MCP1700-3.3 and added a further 100 μF capacitor. This stopped the restarts.
As I mentioned above, this board is for a commercial project I am curently working on. While reading thru Espressif’s documentation, I noticed that they now have an ESP-LR (probably Long Range, or Low Rate?) mode. Supposedly, it severely reduces bandwidth and should provide a range of up to 1000 metres. Now I know in advance that LoRa will be better than this (this also uses just the small PCB antenna on the WROOM32 module!), but I decided to test these modules at the same time, because why not, it will be interesting.
Since some of these terms were slightly confusing for me in the beginning, I decided to explain some of them here:
LoRa is the name of the modulation technology; simply said it’s the way how the chip sends and receives the signals. But it is not fixed to a particular chip or frequency, instead, the LoRa alliance sells the licensing rights to other companies.
SX1278/77 is the name of a chip from Semtech, which supports the above mentioned LoRa technology (and also some different ones, like FSK and OOK). The different versions differ in frequeny ranges they support, so for me the best choice was the ’78, since that supports the 430 MHz ISM band.
RA-01 is the name of a module, made by Ai-Thinker, which contains the SX1278 chip, supporting circuitry (crystal, capacitors) and PCB antenna (in case of RA-01; RA-02 has a connector for external antenna).
ESP-NOW is a proprietary protocol on the 2.4 GHz wavelength. It enables point-to-point communication between ESP32 modules without WiFi. It uses very short packets (instead of the overcomplicated 802.11 packets), so I’d say it is aimed at very low power consumption, since you get very short transmission times (unlike WiFi) and thus you use very little power.
ESP-LR is a protocol mode for ESP32’s WiFi module (according to the documentation, it’s like 802.11N or 802.11B). Since Esspressif is the only one to currently use this, you are still limited to communication between ESP32s, but it should have a range of up to 1000 metres LOS (line of sight) while keeping most WiFi functionality (but at a much reduced data rate).
For the test to be valid, I did it in the exact same location as my previous test of the NRF24 – that is, close to a very small Czech village. Thus there is very little interference and all tests were performed in a direct line of sight. This is, I’d say, an ideal scenario for any radio module.
|Data rate [kbps]||250||250||0.018|
|Current consumption [mA, average/spikes]||22/200||<260||120/250|
|Range achieved [m]||480||400||>2320|
Notes on some of the parameters: Price – this can of course change, but I simply took a few Ebay listings and averaged them. The price is for the module + antenna only. Data rate – nominal data rate from the datasheet, I have not tested that. Range – this is clear line of sight.
The test was rather simple – I left the transmitters on a defined place and started walking away, checking the range every now and then. After only 30 meters, the ESP32 refused to connect if anything blocked the signal, like my body. But when there were no obstacles, it was actually really quick to connect.
After 400 metres, the ESP32 didn’t connect even in clear line of sight. But LoRa connected no matter the orientation or the obstacles. So I just kept walking… until I hit a muddy field after about 1000 metres. I couldn’t continue, but I was amazed by this result.
So I repeated the test the next day – I took the receiver with me on my daily jog routine. I was getting reception the whole time, and at some points there were a couple of hills and a lot of houses between me and the transmitter. Impressive! So again, I’d need to perform another test with even larger distances.
The point of this test was not to get the largest distance, but instead to find out what range can be expected from unmodified, cheap modules from Ebay with the original antennas.
The ESP32 had the shortest range and was very sensitive to any obstacles. But it was still impressive, given the tiny PCB antenna. I imagine even with a small external antenna you could probably double the distance. Also you must consider that for the price you’re not only getting the transceiver, but also a dual core processor etc., so I’d say that the ESP32 is superior to the NRF24 in every way.
LoRa is, not surprisingly, the winner, both in terms of range and reliability (this can be expected, since LoRa uses 430 MHz frequency and generally speaking, the lower the frequency the higher the penetration of obstacles). I’ll need to perform another test to find out when it actually stops receiving. However, the drawback is the very low data rate you’re getting.