nRF52840-DK Range Testing With BLE, ZigBee and Thread Protocols at 0, 4 and 8dBm Transmit Power Settings

Range testing of any RF scheme is inherently limited by the RF environment, antenna design, tuning and many other factors. The usefulness of range testing is to provide a basis for comparison while keeping as many variables as possible constant. When applying this information to your own situation, the saying: “your mileage will vary” certainly applies.

This document records range testing on an open range in rural Florida, USA with very little 2.4GHz interference. The distance above ground level for all tests was about 1 meter.

The hardware used for all of the tests was the nRF52840-DK using its built-in PCB monopole antenna. Care was taken not to orient the monopole null towards the other device.

All boards were powered by coin-cell batteries.

 

Test Events

The protocols and power settings tested were as follows:

  • BLE 1Mbps at 0, 4 and 8 dBm transmit power output
  • BLE 2Mbps at 0, 4 and 8 dBm transmit power output
  • BLE 125kbps (long-range) at 8 dBm transmit power output
  • ZigBee at 0, 4 and 8 dBm transmit power output
  • Thread at 0, 4 and 8 dBm transmit power output

 

BLE Tests

BLE tests were performed using two nRF52840-DK’s. One was programmed as a heart rate service Central and the other as a heart rate service Peripheral. The Central was placed statically at 1 meter above ground, clear of any obstacles and the Peripheral was walked away. The Peripheral was switched on periodically to determine at what distance it would form a BLE connection with the Central. This was determined by LED1 on the Peripheral DK lighting solidly. When the Peripheral was turned off, the Central drops the connection in about 3 seconds.

Transmit power settings and PHY modifications were made in main.c of the code of both DK’s.

The original firmware used is found in SDK v15.2 at:

Central:               …\nRF5_SDK_15.2.0_9412b96\examples\ble_central\ble_app_hrs_c

Peripheral:               …\nRF5_SDK_15.2.0_9412b96\examples\ble_peripheral\ble_app_hrs              

ZigBee Tests

ZigBee tests were performed using three nRF52840-DK’s. One was programmed as a ZigBee Coordinator and another as a ZigBee Router (bulb). Both were co-located statically at 1 meter above ground. The third was programmed as a ZigBee End Device (switch) and was walked away. The End Device was switched on periodically to determine at what distance it would form a connection with the Router. This was determined by the ZigBee End Device DK LED4 lighting. Additionally, control of the bulb by the light switch was verified.

Transmit power modifications were made in main.c of the code of all DK’s.

The original firmware used is found in SDK for Thread and ZigBee v2.0.0 at:

Coordinator:

…\nRF5_SDK_for_Thread_and_Zigbee_2.0.0_29775ac\examples\zigbee\light_control\light_coordinator

Router:

…\nRF5_SDK_for_Thread_and_Zigbee_2.0.0_29775ac\examples\zigbee\light_control\light_bulb

End Device:

…\nRF5_SDK_for_Thread_and_Zigbee_2.0.0_29775ac\examples\zigbee\light_control\light_switch

 

Thread Tests
Thread tests were performed using two nRF52840-DK’s. One was programmed as a Thread CoAP Server and was located statically at 1 meter above ground. The other was programmed as a Thread CoAP Client and was walked away. The Client was switched on periodically and control of LED4 on the Server via a button on the Client was tested to determine at what distance a connection was made and control was possible.

Transmit power modifications were made in main.c of the code of all DK’s.

The original firmware used is found in SDK for Thread and ZigBee v2.0.0 at:

CoAP Server:

…\nRF5_SDK_for_Thread_and_Zigbee_2.0.0_29775ac\examples\thread\simple_coap_server

CoAP Client:

…\nRF5_SDK_for_Thread_and_Zigbee_2.0.0_29775ac\examples\thread\simple_coap_client

 

Distance Measurement

Distance between the static board(s) and mobile board was determined with a GPS application on a Samsung S8 phone. The “home” location was reset before each test.

 

Results

Results were as follows:

Protocol / TX power output 0dBm 4dBm 8dBm
BLE @ 1Mbps 248m 276m 345m
BLE @ 2Mbps 238m 273m 333m
BLE @ 125kbps (long-range) N/A N/A 756m
ZigBee 196m 231m 280m
Thread 209m 270m 328m

Distances are in meters.

Summary

It's interesting how little the 2Mbps BLE range is decreased from the 1Mbps BLE range. ZigBee range is less than BLE, while Thread is nearly the same. BLE long-range is clearly a contender for long-range purposes.

Hex files (merged with the SoftDevice when needed) can be found here.

Anonymous